Difference between revisions of "Blog 10"

From BitWizard WIKI
Jump to: navigation, search
(Push menu)
(Push menu)
Line 29: Line 29:
  
 
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 pushmenu isn't made to also remove the second line. It only cleans first row 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 41: Line 41:
 
         $DISPL -t $load
 
         $DISPL -t $load
  
Now the final script itself:
+
Now the script itself:
  
 
  #!/bin/bash  
 
  #!/bin/bash  
Line 90: Line 90:
 
  done
 
  done
  
All the 6 buttons reference to 6 scripts:   
+
All the 6 buttons reference to the 6 scripts:   
 
*1. Temperature
 
*1. Temperature
 
*2. Time  
 
*2. Time  
Line 101: Line 101:
 
  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 list with #'s can be deleted, but I made it so that I can change it to my preferences.
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 113: Line 112:
 
   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 last one.  
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  = "20" ]; then  
Line 120: Line 121:
 
   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 -> 20.
 +
Then it says Print=Showtemp2.
 +
 
  
After that I made 6 if statements to check of that button is pressed.
 
 
( to detect which button gives which number:  
 
( 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
Line 134: Line 136:
  
 
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.)  
 
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 finally prints every second the information from the button pressed that was last pressed.  
+
With ./$print he then finally prints every second the information from the button pressed that was last pressed. So it would then print out the information from showtemp2.  
  
 
  sleep 1
 
  sleep 1

Revision as of 17:08, 24 September 2015

Push menu

Hello, this time I am finally going to put together what I wanted. I am going to use previous scripts:

  • 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 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 the scripts. But I didn't want to change them so I made a copy from some: Example:

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 ) 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 pushmenu isn't made to also remove the second line. It only cleans first row 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

Now the script itself:

#!/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

All the 6 buttons reference to the 6 scripts:

  • 1. Temperature
  • 2. Time
  • 3. CPU + GPU
  • 4. Temperature at weather station
  • 5. Wind at weather station
  • 6. ui
Print=ui
bw_tool -I -D /dev/i2c-1 -a 94 -w 10:00 

The first list with #'s can be deleted, but I made it so that I can change it to my preferences. 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 last one. 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 
    Print=showtemp2
  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 -> 20. Then it says Print=Showtemp2.


( to detect which button gives which number:

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 finally prints every second the information from the button pressed that was last pressed. So it would then print out the information from showtemp2.

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!