第一次的设计之树莓派小车
用到了树莓派的gpio库,pygame 非常的简单方便
– coding: utf-8 –
w i
#a s d j k l
#低速 高速度
import RPi.GPIO as GPIO
import time
import pygame
pygame.init()
screen = pygame.display.set_mode((196, 60))
pygame.display.set_caption(“pygame.key”)
str=pygame.key.name(pygame.K_a)
GPIO.setwarnings(False)
GPIO.setmode(GPIO.BCM)
GPIO.setup(4,GPIO.OUT)#in1
GPIO.setup(17,GPIO.OUT)#in2
GPIO.setup(5,GPIO.OUT)#in3
GPIO.setup(22,GPIO.OUT)#in4
GPIO.setup(18,GPIO.OUT)#pwm1
GPIO.setup(12,GPIO.OUT)#pwm2
p=GPIO.PWM(18,25000)
wp=GPIO.PWM(12,25000)
while True:
event = pygame.event.wait()
keys = pygame.key.get_pressed()
if (keys[pygame.K_UP]):
if (keys[pygame.K_UP]) and keys[pygame.K_LEFT]:
print(“前进左转”)
p.start(85)
wp.start(100)
GPIO.output(17,GPIO.HIGH)
GPIO.output(4,GPIO.LOW)
GPIO.output(22,GPIO.HIGH)
GPIO.output(5,GPIO.LOW)
time.sleep(0.1)
wp.stop()
p.stop()
if (keys[pygame.K_UP]) and keys[pygame.K_RIGHT]:
print(“前进右转”)
p.start(100)
wp.start(85)
GPIO.output(17,GPIO.HIGH)
GPIO.output(4,GPIO.LOW)
GPIO.output(22,GPIO.HIGH)
GPIO.output(5,GPIO.LOW)
time.sleep(0.1)
wp.stop()
p.stop()
if (keys[pygame.K_DOWN]):
if (keys[pygame.K_DOWN]) and keys[pygame.K_LEFT]:
print(“后退左转”)
p.start(85)
wp.start(100)
GPIO.output(4,GPIO.HIGH)
GPIO.output(17,GPIO.LOW)
GPIO.output(5,GPIO.HIGH)
GPIO.output(22,GPIO.LOW)
time.sleep(0.1)
wp.stop()
p.stop()
if (keys[pygame.K_DOWN]) and keys[pygame.K_RIGHT]:
print(“后退右转”)
p.start(100)
wp.start(85)
GPIO.output(4,GPIO.HIGH)
GPIO.output(17,GPIO.LOW)
GPIO.output(5,GPIO.HIGH)
GPIO.output(22,GPIO.LOW)
time.sleep(0.1)
wp.stop()
p.stop()
if (keys[pygame.K_RIGHT]):
p.start(100)
wp.start(100)
GPIO.output(17,GPIO.HIGH)
GPIO.output(4,GPIO.LOW)
GPIO.output(5,GPIO.HIGH)
GPIO.output(22,GPIO.LOW)
time.sleep(0.04)
wp.stop()
p.stop()
print(“右转”)
if (keys[pygame.K_LEFT]):
p.start(100)
wp.start(100)
GPIO.output(4,GPIO.HIGH)
GPIO.output(17,GPIO.LOW)
GPIO.output(22,GPIO.HIGH)
GPIO.output(5,GPIO.LOW)
time.sleep(0.04)
wp.stop()
p.stop()
print(“左转”)
if (keys[pygame.K_DOWN]):
p.start(100)
wp.start(100)
GPIO.output(4,GPIO.HIGH)
GPIO.output(17,GPIO.LOW)
GPIO.output(5,GPIO.HIGH)
GPIO.output(22,GPIO.LOW)
print("后退")
time.sleep(0.1)
wp.stop()
p.stop()
if (keys[pygame.K_UP]):
p.start(100)
wp.start(100)
GPIO.output(17,GPIO.HIGH)
GPIO.output(4,GPIO.LOW)
GPIO.output(22,GPIO.HIGH)
GPIO.output(5,GPIO.LOW)
print("前进")
time.sleep(0.1)
wp.stop()
p.stop()
if event.type == pygame.KEYDOWN:
x=pygame.key.name(event.key) #获取按键标识符对应的名字
if(x=="s"):
p.start(100)
wp.start(100)
GPIO.output(4,GPIO.HIGH)
GPIO.output(17,GPIO.LOW)
GPIO.output(5,GPIO.HIGH)
GPIO.output(22,GPIO.LOW)
print("后退")
time.sleep(0.1)
wp.stop()
p.stop()
if(x=="w"):
p.start(100)
wp.start(100)
GPIO.output(17,GPIO.HIGH)
GPIO.output(4,GPIO.LOW)
GPIO.output(22,GPIO.HIGH)
GPIO.output(5,GPIO.LOW)
print("前进")
time.sleep(0.1)
wp.stop()
p.stop()
if(x=="d"):
p.start(100)
wp.start(100)
GPIO.output(17,GPIO.HIGH)
GPIO.output(4,GPIO.LOW)
GPIO.output(5,GPIO.HIGH)
GPIO.output(22,GPIO.LOW)
time.sleep(0.04)
wp.stop()
p.stop()
print("右转")
if(x=="a"):
p.start(100)
wp.start(100)
GPIO.output(4,GPIO.HIGH)
GPIO.output(17,GPIO.LOW)
GPIO.output(22,GPIO.HIGH)
GPIO.output(5,GPIO.LOW)
time.sleep(0.04)
wp.stop()
p.stop()
print("左转")
if(x=="i"):
p.start(100)
wp.start(100)
GPIO.output(17,GPIO.HIGH)
GPIO.output(4,GPIO.LOW)
GPIO.output(22,GPIO.HIGH)
GPIO.output(5,GPIO.LOW)
print("加速前进")
time.sleep(0.2)
wp.stop()
p.stop()
if(x=="k"):
p.start(100)
wp.start(100)
GPIO.output(4,GPIO.HIGH)
GPIO.output(17,GPIO.LOW)
GPIO.output(5,GPIO.HIGH)
GPIO.output(22,GPIO.LOW)
print("加速后退")
time.sleep(0.2)
wp.stop()
p.stop()