mirror of
https://github.com/node-red/node-red-nodes.git
synced 2023-10-10 13:36:58 +02:00
75 lines
1.8 KiB
Plaintext
75 lines
1.8 KiB
Plaintext
|
#!/bin/bash
|
||
|
|
||
|
# There is NO error checking in this program - you can mess up pins big time if you want.
|
||
|
|
||
|
# gpio mode pin inputtype
|
||
|
# gpio read pin
|
||
|
# gpio write pin level
|
||
|
# gpio pwm pin level
|
||
|
# gpio close pin
|
||
|
|
||
|
declare -A pins
|
||
|
# Map the GPIO names to actual underlying IO numbers
|
||
|
pins=(["0"]="73" ["1"]="72" ["2"]="71" ["3"]="70" ["4"]="194" ["5"]="195" ["6"]="67" ["7"]="1")
|
||
|
|
||
|
usage() {
|
||
|
echo ""
|
||
|
echo " gpiohb mode {pin} {in|out}"
|
||
|
echo " gpiohb read {pin}"
|
||
|
echo " gpiohb write {pin} {0|1}"
|
||
|
echo " gpiohb wfi {pin} {rising|falling|both|none}"
|
||
|
#echo " gpiohb pwm {pin} {0-1023}"
|
||
|
echo " gpiohb close {pin}"
|
||
|
echo ""
|
||
|
}
|
||
|
|
||
|
while [ "$1" != "" ]; do
|
||
|
case $1 in
|
||
|
-h | --help | -?)
|
||
|
usage
|
||
|
exit
|
||
|
;;
|
||
|
mode)
|
||
|
echo $1 $2 $3
|
||
|
if [ "$3" != "out" ] ; then
|
||
|
$3="in"
|
||
|
fi
|
||
|
pin=${pins[$2]}
|
||
|
echo $pin > /sys/class/gpio/export
|
||
|
echo $3 > /sys/class/gpio/gpio$pin/direction
|
||
|
exit
|
||
|
;;
|
||
|
read)
|
||
|
pin=${pins[$2]}
|
||
|
cat /sys/class/gpio/gpio$pin/value
|
||
|
exit
|
||
|
;;
|
||
|
write)
|
||
|
pin=${pins[$2]}
|
||
|
echo $3 > /sys/class/gpio/gpio$pin/value
|
||
|
exit
|
||
|
;;
|
||
|
wfi)
|
||
|
pin=${pins[$2]}
|
||
|
echo $3 > /sys/class/gpio/gpio$pin/edge
|
||
|
exit
|
||
|
;;
|
||
|
pwm)
|
||
|
# Not implemented yet....
|
||
|
pin=${pins[$2]}
|
||
|
exit
|
||
|
;;
|
||
|
close)
|
||
|
pin=${pins[$2]}
|
||
|
echo $pin > /sys/class/gpio/unexport
|
||
|
exit
|
||
|
;;
|
||
|
*)
|
||
|
echo "ERROR: unknown parameter \"$PARAM\""
|
||
|
usage
|
||
|
exit 1
|
||
|
;;
|
||
|
esac
|
||
|
shift
|
||
|
done
|