import RPi.GPIO as GPIO
#human-computer-interaction
import curses
import time
from curses import wrapper
GPIO.setmode(GPIO.BCM)
#left_moto_go
GPIO.setup(27, GPIO.OUT) #IN1
GPIO.setup(18, GPIO.OUT) #IN3
#left_moto_back
GPIO.setup(12,GPIO.OUT)#IN2
GPIO.setup(25,GPIO.OUT)#IN4
#right_moto_go
GPIO.setup(22, GPIO.OUT) #IN5
GPIO.setup(23, GPIO.OUT) #IN7
#right_moto_back
GPIO.setup(17,GPIO.OUT)#IN6
GPIO.setup(8,GPIO.OUT)#IN8
stdscr = curses.initscr()
stdscr.clear()
while True:
ch = stdscr.getkey()
#EXIT
if ch == ‘e‘:
curses.endwin()
break
# Forward
if ch == ‘w‘:
GPIO.output(27,GPIO.HIGH)
GPIO.output(18,GPIO.HIGH)
GPIO.output(12,GPIO.LOW)
GPIO.output(25,GPIO.LOW)
GPIO.output(22,GPIO.HIGH)
GPIO.output(23,GPIO.HIGH)
GPIO.output(17,GPIO.LOW)
GPIO.output(8,GPIO.LOW)
time.sleep(0.3)
GPIO.output(27,GPIO.LOW)
GPIO.output(18,GPIO.LOW)
GPIO.output(22,GPIO.LOW)
GPIO.output(23,GPIO.LOW)
GPIO.output(12,GPIO.LOW)
GPIO.output(25,GPIO.LOW)
GPIO.output(17,GPIO.LOW)
GPIO.output(8,GPIO.LOW)
# Backward
if ch == ‘s‘:
GPIO.output(27,GPIO.LOW)
GPIO.output(18,GPIO.LOW)
GPIO.output(12,GPIO.HIGH)
GPIO.output(25,GPIO.HIGH)
GPIO.output(17,GPIO.HIGH)
GPIO.output(8,GPIO.HIGH)
GPIO.output(22,GPIO.LOW)
GPIO.output(23,GPIO.LOW)
time.sleep(0.3)
GPIO.output(27,GPIO.LOW)
GPIO.output(18,GPIO.LOW)
GPIO.output(22,GPIO.LOW)
GPIO.output(23,GPIO.LOW)
GPIO.output(12,GPIO.LOW)
GPIO.output(25,GPIO.LOW)
GPIO.output(17,GPIO.LOW)
GPIO.output(8,GPIO.LOW)
# Turn Right
if ch == ‘d‘:
GPIO.output(27,GPIO.HIGH)
GPIO.output(18,GPIO.HIGH)
GPIO.output(12,GPIO.LOW)
GPIO.output(25,GPIO.LOW)
GPIO.output(17,GPIO.HIGH)
GPIO.output(8,GPIO.HIGH)
GPIO.output(22,GPIO.LOW)
GPIO.output(23,GPIO.LOW)
time.sleep(0.3)
GPIO.output(27,GPIO.LOW)
GPIO.output(18,GPIO.LOW)
GPIO.output(22,GPIO.LOW)
GPIO.output(23,GPIO.LOW)
GPIO.output(12,GPIO.LOW)
GPIO.output(25,GPIO.LOW)
GPIO.output(17,GPIO.LOW)
GPIO.output(8,GPIO.LOW)
# Turn Left
if ch == ‘a‘:
GPIO.output(22,GPIO.HIGH)
GPIO.output(23,GPIO.HIGH)
GPIO.output(17,GPIO.LOW)
GPIO.output(8,GPIO.LOW)
GPIO.output(12,GPIO.HIGH)
GPIO.output(25,GPIO.HIGH)
GPIO.output(27,GPIO.LOW)
GPIO.output(18,GPIO.LOW)
time.sleep(0.3)
GPIO.output(27,GPIO.LOW)
GPIO.output(18,GPIO.LOW)
GPIO.output(22,GPIO.LOW)
GPIO.output(23,GPIO.LOW)
GPIO.output(12,GPIO.LOW)
GPIO.output(25,GPIO.LOW)
GPIO.output(17,GPIO.LOW)
GPIO.output(8,GPIO.LOW)