簡單利用pygame實現無線鍵盤控制樹梅派小車

簡單利用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()      #更新數據

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章