Python を使用してキーボードで車を制御し、Python を使用して Raspberry Pi GPIO 経由で車を制御します (Raspberry Pi カー、Raspberry Pi+Python+LN298 コントロール カー)

(Raspberry Pi カー、Raspberry Pi+Python+LN298 コントロールカー)

1. リアルタイムのキーボードのキー位置を取得する Python コード

2. Raspberry PiにはGPIO制御モーターが付属しています

これで完了です。書くのは簡単ではありませんが、成功したらフォローまたはいいねをお願いします。ありがとう~~


1. リアルタイムのキーボードのキー位置を取得する Python コード

最初に呼び出す必要があるいくつかのライブラリ ----tty、sys、select、termios

py ファイル内のキーの位置を取得する関数を定義します。

#可以自己先试试这个代码,可以直接获取到key值
import tty,sys,select,termios

def getKey(settings):
    tty.setraw(sys.stdin.fileno())
    rlist = select.select([sys.stdin],[],[],0.1)
    
    if rlist:
        key = sys.stdin.read(1)
    else:
        key = ""
    
    termios.tcsetattr(sys.stdin,termios.TCSADRAIN,settings)
    return key

2. Raspberry PiにはGPIO制御モーターが付属しています

次に、Raspberry Pi に付属の RPi.GPIO ライブラリを使用して、ピンを介して信号を直接出力します。

ここでは、高電圧と低電圧のみを与えて 2 つのモーターの動作を制御する最も簡単な方法を直接定義します。PWM速度調整は使用されません

# -*- coding: utf-8 -*-                 #通过声明可以在程序中书写中文
import RPi.GPIO as GPIO                 #引入RPi.GPIO库函数命名为GPIO
import tty,sys,select,termios

def getKey(settings):
    tty.setraw(sys.stdin.fileno())
    rlist = select.select([sys.stdin],[],[],0.1)
    
    if rlist:
        key = sys.stdin.read(1)
    else:
        key = ""
    
    termios.tcsetattr(sys.stdin,termios.TCSADRAIN,settings)
    return key

# BOARD编号方式,基于插座引脚编号
GPIO.setmode(GPIO.BOARD)                #将GPIO编程方式设置为BOARD模式

#接口定义,注意对照树莓派的引脚图
INT1 = 11                              
INT2 = 12
INT3 = 13                              
INT4 = 15

#输出模式
GPIO.setup(INT1,GPIO.OUT)
GPIO.setup(INT2,GPIO.OUT)
GPIO.setup(INT3,GPIO.OUT)
GPIO.setup(INT4,GPIO.OUT)


#前进
def Forward():
    GPIO.output(INT1,GPIO.HIGH)
    GPIO.output(INT2,GPIO.LOW)
    GPIO.output(INT3,GPIO.HIGH)
    GPIO.output(INT4,GPIO.LOW)
#后退
def Back():
    GPIO.output(INT1,GPIO.LOW)
    GPIO.output(INT2,GPIO.HIGH)
    GPIO.output(INT3,GPIO.LOW)
    GPIO.output(INT4,GPIO.HIGH)
#右转
def Right():
    GPIO.output(INT1,GPIO.HIGH)
    GPIO.output(INT2,GPIO.LOW)
    GPIO.output(INT3,GPIO.LOW)
    GPIO.output(INT4,GPIO.LOW)
#左转    
def Left():
    GPIO.output(INT1,GPIO.LOW)
    GPIO.output(INT2,GPIO.LOW)
    GPIO.output(INT3,GPIO.HIGH)
    GPIO.output(INT4,GPIO.LOW)
#停止    
def Stop():
    GPIO.output(INT1,GPIO.LOW)
    GPIO.output(INT2,GPIO.LOW)
    GPIO.output(INT3,GPIO.LOW)
    GPIO.output(INT4,GPIO.LOW)

while(1):
    setting = termios.tcgetattr(sys.stdin)
    InPut = getKey(setting)
    if InPut == "w":
        Forward()
    elif InPut == "s":
        Stop()
    elif InPut == "x":
        Back()
    elif InPut == "a":
        Left()
    elif InPut == "d":
        Right()
    else:
        print("Input Error,Please give a true index!!")
        break

Raspberry Pi のピン図は次のとおりです。

注:ここにピンを挿入するときは、GPIO の数ではなく、灰色のデジタル ポートを確認する必要があります。たとえば、コードでポート 11 と 12 が定義されている場合、図内の対応するピンは GPIO17 と GPIO18 になります。


これで完了です。書くのは簡単ではありませんが、成功したらフォローまたはいいねをお願いします。ありがとう~~


おすすめ

転載: blog.csdn.net/Callme_TeacherPi/article/details/124228502