Skip to content

Instantly share code, notes, and snippets.

@Hermann-SW
Created August 18, 2021 20:47
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save Hermann-SW/1c3c08ac78b1cdd668adcf4cd92dcd02 to your computer and use it in GitHub Desktop.
Save Hermann-SW/1c3c08ac78b1cdd668adcf4cd92dcd02 to your computer and use it in GitHub Desktop.
Runs on mecanum wheel robot Pi0W, processes gamepad commands received over netcat
#!/bin/bash
if [ ! -f /var/run/pigpio.pid ]; then sudo pigpiod -s 1; sleep 0.5; fi
S=160
D=1
PWMAR=9
AIN1R=10
AIN2R=22
BIN1R=27
BIN2R=17
PWMBR=4
PWMAL=14
AIN1L=15
AIN2L=18
BIN1L=23
BIN2L=24
PWMBL=25
pigs m $PWMAR w m $AIN2R w m $AIN1R w m $BIN1R w m $BIN2R w m $PWMBR w
pigs m $PWMAL w m $AIN2L w m $AIN1L w m $BIN1L w m $BIN2L w m $PWMBL w
pigs p $PWMAR 0 w $AIN2R 0 w $AIN1R 0 w $BIN1R 0 w $BIN2R 0 w $PWMBR 0
pigs p $PWMAL 0 w $AIN2L 0 w $AIN1L 0 w $BIN1L 0 w $BIN2L 0 w $PWMBL 0
spd() {
if [ "$1" != "" ]; then
pigs p $PWMAR $S p $PWMBR $S p $PWMAL $S p $PWMBL $S
pigs p $PWMAR $1 p $PWMBR $1 p $PWMAL $1 p $PWMBL $1
fi
}
stp() {
pigs w $AIN1R 1 w $AIN2R 1 w $BIN2R 1 w $BIN1R 1
pigs w $AIN1L 1 w $AIN2L 1 w $BIN2L 1 w $BIN1L 1
spd 0
}
fwd() {
pigs w $AIN1R 0 w $AIN2R $D w $BIN2R 0 w $BIN1R 1
pigs w $AIN1L $D w $AIN2L 0 w $BIN2L 1 w $BIN1L 0
spd $1
}
bck() {
pigs w $AIN1R $D w $AIN2R 0 w $BIN2R 1 w $BIN1R 0
pigs w $AIN1L 0 w $AIN2L $D w $BIN2L 0 w $BIN1L 1
spd $1
}
rgt() {
pigs w $AIN1R 1 w $AIN2R 0 w $BIN2R 0 w $BIN1R $D
pigs w $AIN1L 0 w $AIN2L 1 w $BIN2L $D w $BIN1L 0
spd $1
}
lft() {
pigs w $AIN1R 0 w $AIN2R 1 w $BIN2R $D w $BIN1R 0
pigs w $AIN1L 1 w $AIN2L 0 w $BIN2L 0 w $BIN1L $D
spd $1
}
ctr() {
pigs w $AIN1R 1 w $AIN2R 0 w $BIN2R 1 w $BIN1R 0
pigs w $AIN1L 1 w $AIN2L 0 w $BIN2L 1 w $BIN1L 0
spd $1
}
ctl() {
pigs w $AIN1R 0 w $AIN2R 1 w $BIN2R 0 w $BIN1R 1
pigs w $AIN1L 0 w $AIN2L 1 w $BIN2L 0 w $BIN1L 1
spd $1
}
# remote joystick handling
#
SP=80
echo SP=$SP
nc -l 1234 | while IFS= read -r line; do
case $line in
"U")
fwd $SP
;;
"D")
bck $SP
;;
"L")
lft $SP
;;
"R")
rgt $SP
;;
"8")
ctl $SP
;;
"9")
ctr $SP
;;
"1")
stp
;;
"0")
let D=1-D
echo D=$D
;;
"4")
if [[ $SP -gt 15 ]]; then let SP=SP-16; fi
echo SP=$SP
spd $SP
;;
"5")
if [[ $SP -lt 240 ]]; then let SP=SP+16; fi
echo SP=$SP
spd $SP
;;
esac
done
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment