Difference between revisions of "Blog 10"

From BitWizard WIKI
Jump to: navigation, search
(Push menu)
 
(12 intermediate revisions by the same user not shown)
Line 2: Line 2:
 
== Push menu ==
 
== Push menu ==
  
Hello, this time I am finally going to put together what I wanted.  
+
Hello, In this post I am going to show the push menu I made. In the push menu I have the 6 previous scripts I previous made and putted them together.
I am going to use previous scripts:
+
With every button on the push button one of the scripts can run.
  
1. Temperature  (From [[blog 05]])
+
The list of buttons with which script they run:
2. Time with load averages (From [[blog 04]])
+
*1. Temperature  (From [[blog 05]])
3. CPU + GPU (From [[blog 08]])
+
*2. Time with load averages (From [[blog 04]])
4. Temperature at weather station (From [[blog 09]])  
+
*3. CPU + GPU (From [[blog 08]])
5. Wind a weather station (From [[blog 09]])  
+
*4. Temperature at weather station (From [[blog 09]])  
6. Defining Temperature ( not visible on display! ) (From [[blog 05]])
+
*5. Wind a weather station (From [[blog 09]])  
 
+
*6. Defining Temperature ( Not visible on the display! ) (From [[blog 05]])
And put them all together in a push button menu.  
+
   
So that I can show the information from the script on the display and use the pushbuttons to control it.
+
I still had to modify most of the scripts. I didn't want to change them so I made a copy that I could edit.
 
 
I still had to modify the scripts. But I didn't want to change them so I made a copy from some:
 
 
Example:  
 
Example:  
  cp timer > time_load  
+
  cp timer time_load  
  
I made the scripts more basics, so that they only print the information on screen. ( If I wouldn't do this it will make the screen refresh too much or ignore me pushing the button )
+
With modifying the scripts I made them more basic, so that they only print their information on the display. ( If I wouldn't do this it will make the screen refresh too much or ignore me pushing the button )
 
So the things I had to remove from the scripts were:
 
So the things I had to remove from the scripts were:
while true; do
+
*while true; do
done
+
*done
echo  
+
*echo  
10:00/11:00
+
*10:00
sleep
+
*11:00
 +
*sleep
  
 
Note!
 
Note!
You shouldn't delete 11:20, because the script from pushmenu isn't made to to also remove the second line. It only cleans first row with 11:00.  
+
You shouldn't delete 11:20, because the script from the push menu isn't made to also remove the second line. It only cleans first line with 11:00.  
  
Example from the 'Time with load averages'(./time_load) has to look like after removing everything that is not needed:
+
Example from how the 'Time with load averages'(./time_load) has to look like after removing everything that is not needed:
 
  #!/bin/bash
 
  #!/bin/bash
 
   
 
   
Line 40: Line 39:
 
         $DISPL -t $load
 
         $DISPL -t $load
  
Now the final script itself:
+
This is than the script of the push menu:
  
 
  #!/bin/bash  
 
  #!/bin/bash  
Line 88: Line 87:
 
   sleep 1
 
   sleep 1
 
  done
 
  done
 
All the 6 buttons reference to 6 scripts: 
 
1. Temperature
 
2. Time
 
3. CPU + GPU
 
4. Temperature at weather station
 
5. Wind at weather station
 
6. ui
 
  
 
  Print=ui
 
  Print=ui
 
  bw_tool -I -D /dev/i2c-1 -a 94 -w 10:00  
 
  bw_tool -I -D /dev/i2c-1 -a 94 -w 10:00  
  
The first list can delete the and only turn on 1 of them.
+
The first row with #'s for them can be deleted. I made it so that I can choose which script the push menu has to start with.
If you remove it, it wouldn't be a problem on the display but a error.  
+
If you remove Print=ui, the display will start with an empty screen. (What isn't a problem, but you will get error messages on the terminal.)
I found out this later, but left the others there because I thought maybe some people would like to start with an other one.
+
The 10:00 will at the start-up it remove everything from display.
It directly removes everything from display. (10:00)
 
  
 
  while true; do
 
  while true; do
Line 112: Line 102:
 
   fi
 
   fi
  
First it will look if there is a button pressed. If there is no button pressed it will be 00 and then it will be just refresh the last one.  
+
First it will look if there is a button pressed. If there is no button pressed it will be 00, and then it will be just refresh the previous chosen script.  
When pressed it will directly remove the previous text. Because at the beginning it wil if not 00 is pressed with !=. So, it will directly remove the previous text when pressed.
+
When a button is pressed 10 will directly remove the previous text. Because at the beginning of the code it will check:
 +
If 30:b doesn't check a number that isn't(with !=) 00 it will refresh the display.
 +
So everything will be removed when the button is pressed.
  
   if [ $Button  = "20" ]; then  
+
   if [ $Button  = "08" ]; then  
     Print=showtemp2
+
     Print=cgpu2
 
   fi   
 
   fi   
  
Then it will start the while loop. ( while true; do)
+
Then it checks with 6 times if there is a button pressed with the number given in the if statements.  
When started it will first look if it detects which button is pressed.  
+
When then for example someone presses button 1 -> 08.
 +
Then it is going to run the script: cgpu2.
  
After that I made 6 if statements to check of that button is pressed.
+
( To detect which button gives which number. You have to copy paste this line and press the button you want to know:  
( to detect which button gives which number:  
 
 
  bw_tool -I -D /dev/i2c-1 -a 94 -R 30:b
 
  bw_tool -I -D /dev/i2c-1 -a 94 -R 30:b
 
  01
 
  01
 
)   
 
)   
Press the number you want to know and press the button.
 
  
 
  bw_tool -I -D /dev/i2c-1 -a 94 -w 11:00
 
  bw_tool -I -D /dev/i2c-1 -a 94 -w 11:00
 +
./$Print
  
At the end it says it has to place on the line 11:00 ( If you remove that part, it paste the text without the previous one, while refreshing.)  
+
It says it has to place on the line 11:00. ( If you remove that part, it paste the text with the previous one, while refreshing.)  
and with ./$print he that finally print the every second the one information from the button pressed.  
+
With ./$print he then prints the information from the button that was last pressed. (So it would then print out the information from cgpu2 in our example. )
  
 
  sleep 1
 
  sleep 1
  
Thanks to the sleep you now have to wait a second to recognize the different button you pressed. Because it has to go trough that list again in that 1 sec.
+
Thanks to the sleep you now have to wait a second for the refresh of the screen but also for the code to scan which button has been pressed.
 +
 
 +
I hope this can also be useful for your own use!
  
I hope this can also be useful for your own use.
+
[[File:CPU&GPU.jpg|400px|thumb|none|]]

Latest revision as of 11:47, 26 October 2015

Push menu

Hello, In this post I am going to show the push menu I made. In the push menu I have the 6 previous scripts I previous made and putted them together. With every button on the push button one of the scripts can run.

The list of buttons with which script they run:

  • 1. Temperature (From blog 05)
  • 2. Time with load averages (From blog 04)
  • 3. CPU + GPU (From blog 08)
  • 4. Temperature at weather station (From blog 09)
  • 5. Wind a weather station (From blog 09)
  • 6. Defining Temperature ( Not visible on the display! ) (From blog 05)

I still had to modify most of the scripts. I didn't want to change them so I made a copy that I could edit. Example:

cp timer time_load 

With modifying the scripts I made them more basic, so that they only print their information on the display. ( If I wouldn't do this it will make the screen refresh too much or ignore me pushing the button ) So the things I had to remove from the scripts were:

  • while true; do
  • done
  • echo
  • 10:00
  • 11:00
  • sleep

Note! You shouldn't delete 11:20, because the script from the push menu isn't made to also remove the second line. It only cleans first line with 11:00.

Example from how the 'Time with load averages'(./time_load) has to look like after removing everything that is not needed:

#!/bin/bash

DISPL="bw_tool -I -D /dev/i2c-1 -a 94"

       load=`cut -d' ' -f-3 /proc/loadavg`
       $DISPL -t `date +%H:%M:%S`
       $DISPL -W 11:20:b
       $DISPL -t $load

This is than the script of the push menu:

#!/bin/bash 

#Print=showtemp2
#Print=time_load
#Print=DIAMoscow2
#Print=cgpu2
#Print=DIAMWind
Print=ui
bw_tool -I -D /dev/i2c-1 -a 94 -w 10:00 

while true; do
  Button=`bw_tool -I -D /dev/i2c-1 -a 94 -R 30:b`
  
  if [ $Button  != "00" ]; then 
    bw_tool -I -D /dev/i2c-1 -a 94 -w 10:00
  fi

  if [ $Button  = "20" ]; then 
    Print=showtemp2
  fi  

  if [ $Button  = "10" ]; then 
    Print=time_load
  fi 

  if [ $Button  = "08" ]; then 
    Print=cgpu2
  fi

  if [ $Button  = "04" ]; then 
    Print=DIAMoscow
  fi

  if [ $Button  = "02" ]; then 
    Print=DIAMWind
  fi

  if [ $Button  = "01" ]; then 
    Print=ui
  fi

  bw_tool -I -D /dev/i2c-1 -a 94 -w 11:00
  ./$Print

  sleep 1
done
Print=ui
bw_tool -I -D /dev/i2c-1 -a 94 -w 10:00 

The first row with #'s for them can be deleted. I made it so that I can choose which script the push menu has to start with. If you remove Print=ui, the display will start with an empty screen. (What isn't a problem, but you will get error messages on the terminal.) The 10:00 will at the start-up it remove everything from display.

while true; do
  Button=`bw_tool -I -D /dev/i2c-1 -a 94 -R 30:b`
  
  if [ $Button  != "00" ]; then 
    bw_tool -I -D /dev/i2c-1 -a 94 -w 10:00
  fi

First it will look if there is a button pressed. If there is no button pressed it will be 00, and then it will be just refresh the previous chosen script. When a button is pressed 10 will directly remove the previous text. Because at the beginning of the code it will check: If 30:b doesn't check a number that isn't(with !=) 00 it will refresh the display. So everything will be removed when the button is pressed.

  if [ $Button  = "08" ]; then 
    Print=cgpu2
  fi  

Then it checks with 6 times if there is a button pressed with the number given in the if statements. When then for example someone presses button 1 -> 08. Then it is going to run the script: cgpu2.

( To detect which button gives which number. You have to copy paste this line and press the button you want to know:

bw_tool -I -D /dev/i2c-1 -a 94 -R 30:b
01

)

bw_tool -I -D /dev/i2c-1 -a 94 -w 11:00
./$Print 

It says it has to place on the line 11:00. ( If you remove that part, it paste the text with the previous one, while refreshing.) With ./$print he then prints the information from the button that was last pressed. (So it would then print out the information from cgpu2 in our example. )

sleep 1

Thanks to the sleep you now have to wait a second for the refresh of the screen but also for the code to scan which button has been pressed.

I hope this can also be useful for your own use!

CPU&GPU.jpg