Blog 13
Scroll Menu
Scroll Menu with multiple functions, where with every functions you can set up certain things. Example: Changing Alarm Time Changing volume
The reason I made this, is because I don't want to use the raspberry pi only for just 1 thing. I want to use it for multiple script and don't want to use a command section to get the other script to work. Here I can also put all my future projects in.
First mission is to make it possible that it goes up and down in the menu and than choose a certain function.
- 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. Going down in the menu
- 6. Going up in the menu
For this script I used some techniques from previous scripts. That you can see in blog 10(PushMenu) and blog 12(AlarmMenu).
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.
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 menu's, 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