Advertisement
vimja

potentiometer LED driver

Nov 15th, 2014
238
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Bash 1.20 KB | None | 0 0
  1. #!/bin/bash
  2. ADC_PATH=/sys/bus/platform/devices/TI-am335x-adc/iio:device0/
  3.  
  4. LEDS[0]="61"
  5. LEDS[1]="44"
  6. LEDS[2]="68"
  7. LEDS[3]="67"
  8.  
  9. # not exactly accurate for better results
  10. MAX_VALUE=4000
  11.  
  12. prepare_led()
  13. {
  14.   echo "${1}" > "/sys/class/gpio/export";
  15.   echo "out" > "/sys/class/gpio/gpio${1}/direction";
  16.   echo "1" > "/sys/class/gpio/gpio${1}/value";
  17. }
  18.  
  19. teardown()
  20. {
  21.   echo "${1}" > "/sys/class/gpio/unexport";
  22. }
  23.  
  24. #Run if ctrl+c is pressed
  25. control_c()
  26. {
  27.   for LED in "${LEDS[@]}" ; do
  28.     teardown ${LED}
  29.   done
  30.   echo -en "leaving";
  31.   exit $?;
  32. }
  33.  
  34. trap control_c SIGINT
  35.  
  36. for LED in  ${LEDS[@]} ; do
  37.   prepare_led ${LED}
  38. done
  39.  
  40. step=$(((2**${#LEDS[@]})-1))
  41. dividor=$((MAX_VALUE/step))
  42. echo $step
  43.  
  44. echo "reading"
  45. while true; do
  46.   value=$(cat ${ADC_PATH}/in_voltage4_raw)
  47.   #echo $value
  48.   v=$((value/dividor))
  49.   echo v = $v
  50.   for (( i=$((${#LEDS[@]}-1)); i>=0; i-- )) do
  51.     #echo i = $i
  52.     #echo $((2**i))
  53.     if [ $v -ge $((2**i)) ]
  54.     then
  55.       echo "0" > "/sys/class/gpio/gpio${LEDS[${i}]}/value";
  56.       v=$((v-$((2**i))))
  57.       #echo changed v to $v
  58.     else
  59.       echo "1" > "/sys/class/gpio/gpio${LEDS[${i}]}/value";
  60.     fi  
  61.   done
  62.   sleep 0.1
  63. done
  64.  
  65. control_c
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement