Blog 13
Scroll Menu
In this blogpost I am making a Scroll Menu, what is a menu where I make a choose from a list of my previous and future menus. This is pretty handy so that I don't have to type in a command line to go to an other menu. Everything can just be controlled with the buttons on the Rp_ui_board.
The mission is to make it possible that the menu goes up and down and that I than get select between the 2 options displayed on the first and second line of the Rp_ui_board. What every button does:
- 1. Select option 1
- 2. Select option 2
- 3. Go to the begin of the menu
- 4. Go to the End of the menu
- 5. Scroll down in the menu
- 6. Scroll up in the menu
For this script I used some techniques from the previous script blog 12(AlarmMenu). The 2 scripts I previous made are also included as option 1blog 10 and 2blog 12 in the Script Menu. Don't forget to make an exit function in every script you make that you want to put in the array of menus!
array=( pushmenu2 AlarmMenu Jaap Tim Martin Koos Willem Bas Luuk Richard Nick Alex) # Element 0 1 2 3 4 5 6 7 8 9 10 11
An array is a list names that are put together and you can find with typing it's number. The number counting begins with 0 and ends until you stopped giving names. For this I used 2 names of previous scripts and 10 other random names. ( I don't have 10 other menu scripts, so I only made it to show how it looks like )
Narray=( "Temp Menu" "Alarm Menu" Settings "Board menu" "Fries Menu" "Banana Menu" "vega burger" "wc menu" Bananaphone "2001:ABC" "ghost server" "My name is...") # Element 0 1 2 3 4 5 6 7 8 9 10 11
This is the second script and I called it Narray. (Names Array. You can of course call it what ever you want ) This array I made to print this text out. As you can see some of them don't use quotation marks. I only did that to say that you only really need to put them if you want to print a text with a space in it. And also here I gave the other 10 random names.
if [ $BDetect = "20" ]; then ./${array[$Number]} fi
if [ $BDetect = "10" ]; then ./${array[$Numb2]} fi
This parts check if the button is pressed. If the button is pressed it will
if [ $BDetect = "02" ]; then Number=$(((Number + 10) % 12 )) # can be changed to 11 if you want it to get 1 down fi if [ $BDetect = "01" ]; then Number=$(((Number + 2) % 12 )) #can be changed to 1 if you want to get it up by 1 / I did 2 because I think that is more functional. fi
In this part it counts up or down with which the button is pressed. With button 2 is counts down an with button 1 it counts up. It counts down and up with 2. So that every time 2 new options gets showed on the display. Because in the array there are 12 menus, I used %12 that when counting up or down it will continue at the top or the beginning. ( so that you not have to go all back for option 1-2 when you are at option 11-12. ) I also explained this in blog 12: With % it shares the number before it with the number after it and will give as result the number that couldn't get shared trough it. So simple examples:
12%5 (12:5)=2 | 2 times 5 | 2*5=10 | 12-10 = 2 14%12 (14:12)=1 | 1 time 12 | 1*12=12 | 14-12 = 2
The numbers that are given as result for pressing the button, will than be send to the last part of the script.
Numb2=$((Number + 1)) Numb3=$((Numb2 + 1))
Will read the numbers that should later be displayed on the display. The given numbers will get a +1, because otherwise the menu will start with 0 instead of 1. This is of course the same with the second line. That also has to be 1 more.
The given numbers will be printed at the beginning with "$Numb2"at the first row and "$Numb2" at the second row. After that it will print the names on the name Array. ( Narray ) with after that the number and the second number ( Numb2 ) which says which names of the array should be displayed.
bw_tool -I -D /dev/i2c-1 -a 94 -W 11:00 bw_tool -I -D /dev/i2c-1 -a 94 -t "$Numb2""."${Narray[$Number]} bw_tool -I -D /dev/i2c-1 -a 94 -W 11:20 bw_tool -I -D /dev/i2c-1 -a 94 -t "$Numb3""."${Narray[$Numb2]}
The final script all together:
#!/bin/bash bw_tool -I -D /dev/i2c-1 -a 94 -W 10:00 while true; do BDetect=`bw_tool -I -D /dev/i2c-1 -a 94 -R 30:b` array=( pushmenu2 AlarmMenu Jaap Tim Martin Koos Willem Bas Luuk Richard Nick Alex) # Element 0 1 2 3 4 5 6 7 8 9 10 11 Narray=( "Temp Menu" "Alarm Menu" Settings "Board menu" "Fries Menu" "Banana Menu" "vega burger" "wc menu" Bananaphone "2001:ABC" "ghost server" "My name is...") # Element 0 1 2 3 4 5 6 7 8 9 10 11 if [ $BDetect != "00" ]; then bw_tool -I -D /dev/i2c-1 -a 94 -W 10:00 fi if [ $BDetect = "20" ]; then ./${array[$Number]} fi if [ $BDetect = "10" ]; then ./${array[$Numb2]} fi if [ $BDetect = "08" ]; then Number=0 fi if [ $BDetect = "04" ]; then Number=10 fi if [ $BDetect = "02" ]; then Number=$(((Number + 10) % 12 )) # can be changed to 11 if you want it to get 1 down fi if [ $BDetect = "01" ]; then Number=$(((Number + 2) % 12 )) #can be changed to 1 if you want to get it up by 1 / I did 2 because I think that is more functional. fi Numb2=$((Number + 1)) Numb3=$((Numb2 + 1)) bw_tool -I -D /dev/i2c-1 -a 94 -W 11:00 bw_tool -I -D /dev/i2c-1 -a 94 -t "$Numb2""."${Narray[$Number]} bw_tool -I -D /dev/i2c-1 -a 94 -W 11:20 bw_tool -I -D /dev/i2c-1 -a 94 -t "$Numb3""."${Narray[$Numb2]} sleep 1 done