900字范文,内容丰富有趣,生活中的好帮手!
900字范文 > 利用Python实现键盘操控小车 通过树莓派GPIO使用python操控小车(树莓派小车 树莓派+

利用Python实现键盘操控小车 通过树莓派GPIO使用python操控小车(树莓派小车 树莓派+

时间:2020-07-23 10:46:26

相关推荐

利用Python实现键盘操控小车 通过树莓派GPIO使用python操控小车(树莓派小车 树莓派+

(树莓派小车、树莓派+Python+LN298操控小车)

一、Python代码获取键盘实时键位

二、树莓派自带GPIO控制电机

大功告成!编写不易,大家成功后点个关注or赞谢谢~~

一、Python代码获取键盘实时键位

首先需要调用的几个库----tty,sys,select,termios

在py文件中定义一个获取键位的函数:

#可以自己先试试这个代码,可以直接获取到key值import tty,sys,select,termiosdef 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

二、树莓派自带GPIO控制电机

接下来利用树莓派自带的 RPi.GPIO库来直接通过引脚输出信号

此处我是直接定义的最简单的操控两个电机运行,只给高低电压。没有使用PWM调速

# -*- coding: utf-8 -*- #通过声明可以在程序中书写中文import RPi.GPIO as GPIO #引入RPi.GPIO库函数命名为GPIOimport tty,sys,select,termiosdef 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 = 11INT2 = 12INT3 = 13INT4 = 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

树莓派引脚图如下:

注意:这个地方插引脚的时候要看灰色的数字口,不是看GPIO多少.比如代码中定义的11,12端口,那么对应图中的引脚的话就是GPIO17和GPIO18.

大功告成!编写不易,大家成功后点个关注or赞谢谢~~

利用Python实现键盘操控小车 通过树莓派GPIO使用python操控小车(树莓派小车 树莓派+Python+LN298操控小车)

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。