Difference between revisions of "Blog 21"

From BitWizard WIKI
Jump to: navigation, search
(DIO Analog meter - Clock)
(DIO Analog meter - Clock)
Line 70: Line 70:
 
== DIO Analog meter - Clock ==
 
== DIO Analog meter - Clock ==
  
#!/bin/bash
+
#!/bin/bash
 
+
DIO="bw_tool -I -D /dev/i2c-1 -a 84"
+
DIO="bw_tool -I -D /dev/i2c-1 -a 84"
UI="bw_tool -I -D /dev/i2c-1 -a 94"
+
UI="bw_tool -I -D /dev/i2c-1 -a 94"
Twelve="12"
+
Twelve="12"
 
+
trap onexit 1 2 3 15 ERR
+
trap onexit 1 2 3 15 ERR
 
+
  function onexit() {
+
  function onexit() {
    $DIO -W 50:00 #Turns PWM back to zero
+
    $DIO -W 50:00 #Turns PWM back to zero
    $UI -W 10:00  #Clears screen
+
    $UI -W 10:00  #Clears screen
  exit
+
    exit
  }
+
  }
 
+
while true; do
+
while true; do
  Hour=`date +%H`
+
  Hour=`date +%H`
  #  Hour=$((Hour + 6)) #I made this at 12:00, so I added 6 so I can see if the meter works
+
  #  Hour=$((Hour + 6)) #I made this at 12:00, so I added 6 so I can see if the meter works
 
+
  $UI -W 10:00
+
  $UI -W 10:00
  $UI -t "Clock=" $Hour
+
  $UI -t "Clock=" $Hour
 
+
  if [ "$Hour" -gt "$Twelve" ]; then
+
  if [ "$Hour" -gt "$Twelve" ]; then
  Hour=$(( $Hour - $Twelve ))
+
  Hour=$(( $Hour - $Twelve ))
  fi
+
  fi
 
+
  array=(  00 17 2E 45 5C 73 8A A1 B8 CF E6 FD )
+
  array=(  00 17 2E 45 5C 73 8A A1 B8 CF E6 FD )
  # Element 0  1  2  3  4  5  6  7  8  9  10 11
+
  # Element 0  1  2  3  4  5  6  7  8  9  10 11
 
+
  $UI -W 11:20
+
  $UI -W 11:20
  $UI -t "Hour=$Hour Array="${array[$Hour]}
+
  $UI -t "Hour=$Hour Array="${array[$Hour]}
 
+
  $DIO -W 50:${array[$Hour]}
+
  $DIO -W 50:${array[$Hour]}
 
+
  sleep 5
+
  sleep 5
done
+
done
  
 
== DIO Analog meter - Timer ==
 
== DIO Analog meter - Timer ==

Revision as of 13:53, 15 December 2015

!BETA!

This is used for The project:

Hardware used on Raspberry Pi:

Programmed with:

Connecting the analog meters

While making the analog meter clock, I encountered the problem. That I had one Alternating current voltage. For this I had to

// blabla checked it out by putting the power resource after the diode.

To check the analog meter I connected it with a power resource to find out if at which voltage it went to it's maximum. Fast I found out that It went to it's maximum. To change that it went so fast to it's maximum I added two resistors. And removed the connection with the normal resistor. // blabla

To check if the meter you have work on the DIO. Put the minus part of your meter on the GND(Pin 1), and the positive side on the VCC(Pin 2). The pointer will directly go to it's to the right. ( If he doesn't you have to remove some resistors )

To connect the meters on the DIO: I did my positive cable on IO0, what is pin 3. ( The other cable has to go to GND Pin 1 ) On the wiki page of DIO you can see, which pin is what.


Change analog meter value through the command line

Recommended to use the DIO protocol.

I have in my example the analog meter connected with pin 3(IO0).

Pin 3 is IO0, so it will get the first value and that is one.

To set pin 3 as output:

bw_tool -I -D /dev/i2c-1 -a 84 -W 30:01

To enable the PWM:

bw_tool -I -D /dev/i2c-1 -a 84 -W 5f:01

To let the pointer go to 50% of the analog meter:

bw_tool -I -D /dev/i2c-1 -a 84 -W 50:80

The value is in hexadecimals so that is why 80 is 50%.

If you are going to use a pin like pin 10(IO6). With the value 40 for register 30 and 5f. The reason it is 40 is, because the bits are in hexadecimals. So, 64 decimal bits gets calculated to 40 hexadecimals.

The reason why this is getting used, is because it is bit masked. With that you can add multiple pins in the command. So, if you you want pin 4(IO1) and pin 6(IO3) on:

IO1 + IO3 -> 02 + 08 = 0A

For the full Bit Mask list of values you have to go to the DIO protocol

Making the sticker

DIO Analog meter - Clock

#!/bin/bash

DIO="bw_tool -I -D /dev/i2c-1 -a 84"
UI="bw_tool -I -D /dev/i2c-1 -a 94"
Twelve="12"

trap onexit 1 2 3 15 ERR

  function onexit() {
    $DIO -W 50:00 #Turns PWM back to zero
    $UI -W 10:00  #Clears screen
   exit
  }

while true; do
  Hour=`date +%H`
  #  Hour=$((Hour + 6)) #I made this at 12:00, so I added 6 so I can see if the meter works

  $UI -W 10:00
  $UI -t "Clock=" $Hour

  if [ "$Hour" -gt "$Twelve" ]; then
  Hour=$(( $Hour - $Twelve ))
  fi

  array=(   00 17 2E 45 5C 73 8A A1 B8 CF E6 FD )
  # Element 0  1  2  3  4  5  6  7  8  9  10 11

  $UI -W 11:20
  $UI -t "Hour=$Hour Array="${array[$Hour]}

  $DIO -W 50:${array[$Hour]}

  sleep 5
done

DIO Analog meter - Timer

#!/bin/bash 

DIO="bw_tool -I -D /dev/i2c-1 -a 84"
UI="bw_tool -I -D /dev/i2c-1 -a 94"
Length="FF"
Value="11"
Zero="0"

trap onexit 1 2 3 15 ERR

function onexit() {
  $DIO -W 50:00 #Turns PWM back to zero
  $UI -W 10:00  #Clears screen
  #mplayer Song.mp3   
 exit
} 

while true; do
$DIO -W 50:$Length

if [ "$Length" = "$Zero" ]; then
  onexit 
fi

Length=`(echo obase=16; echo ibase=16; echo $Length - $Value) | bc`
echo "$Length"

$UI -W 11:00
$UI -t "Seconds: " $Length 

sleep 4
done
onexit

Useful links