簡單利用pygame實現無線鍵盤控制樹梅派小車
搭了個兩輪差速小車,採用樹梅派3b+Arduino的組合,兩者間串口通信。
畫了塊板子方便理線
便學着寫了段小車控制腳本,對pygame的按鍵事件進行讀取,判斷後向Arduino下發指令。寫得比較簡陋,多按鍵判斷也是很笨的方法。
import pygame
from pygame.locals import *
from sys import exit
'''串口連接Arduino'''
import serial
serial = serial.Serial('COM3',9600)
print(serial.readline())
'''pygame初始化'''
pygame.init() #初始化
screen = pygame.display.set_mode((100, 100), 0, 32) #建立窗口
pygame.display.set_caption("shit?") #窗口名
'''更新Arduino數據'''
up,down,left,right=0,0,0,0 #按鍵標誌(用於多鍵判斷)
def data_Reflash():
if up==1: #若前進按下
if left==1:
serial.write('q'.encode("utf-8")) #左前
elif right==1:
serial.write('e'.encode("utf-8")) #右前
elif down==0:
serial.write('w'.encode("utf-8")) #前進
elif down==1:
if left==1:
serial.write('z'.encode("utf-8")) #左後
elif right==1:
serial.write('c'.encode("utf-8")) #右後
elif up==0:
serial.write('x'.encode("utf-8")) #後退
elif left==1 and right==0:
serial.write('a'.encode("utf-8")) #左轉
elif right==1 and left==0:
serial.write('d'.encode("utf-8")) #右轉
else:
serial.write('s'.encode("utf-8")) #停止
'''主循環'''
while True:
for event in pygame.event.get(): #遍歷事件
if event.type == QUIT: #退出
exit()
if event.type == KEYDOWN: #按鍵按下
if event.key == K_UP:
up=1
elif event.key == K_DOWN:
down=1
elif event.key == K_LEFT:
left=1
elif event.key == K_RIGHT:
right=1
if event.type == KEYUP: #按鍵鬆開
if event.key == K_UP:
up=0
elif event.key == K_DOWN:
down=0
elif event.key == K_LEFT:
left=0
elif event.key == K_RIGHT:
right=0
data_Reflash() #更新數據