(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 になります。