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

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

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

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

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


一、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

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

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

此处我是直接定义的最简单的操控两个电机运行,只给高低电压。没有使用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

树莓派引脚图如下:

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


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


  • 12
    点赞
  • 81
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论
树莓派小车Python代码可以使用引用\[1\]和引用\[2\]中的代码片段来实现。首先,你需要定义一个获取键位的函数,可以使用引用\[1\]中的代码。然后,你需要使用GPIO库来控制树莓派GPIO引脚,可以使用引用\[2\]中的代码来初始化GPIO引脚和定义前进、后退、左转和右转的函数。最后,你可以根据需要调用这些函数来控制树莓派小车的运动。 请注意,使用树莓派控制电机需要连接正确的GPIO引脚,并根据实际情况进行相应的设置和调整。另外,为了避免电机损坏,请确保你的电机和电源符合树莓派的电压和电流要求。 希望这些信息对你有帮助!如果你还有其他问题,请随时提问。 #### 引用[.reference_title] - *1* [利用Python实现键盘操控小车、通过树莓派GPIO使用python操控小车(树莓派小车树莓派+Python+LN298操控小车...](https://blog.csdn.net/Callme_TeacherPi/article/details/124228502)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* *3* [(贫民窟系列)Raspberry 树莓派+L298N+Python控制小车](https://blog.csdn.net/weixin_41195886/article/details/128408743)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Callme_TeacherPi℡

谢谢老板!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值