本篇文章给大家分享的是有关树莓派小车如何实现前进和后退,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。
买了一个树莓派小车的配件,当然,有二次开发板板,不过原理相同。 买的板子是创乐博的智能小车套件。 以下代码来自其指导文件,但是文件都是英文,没有代码讲解,导致很难看得懂。本人重新写了,并给出自己的理解,代码也是略有不同,但是从零写起,可以让自己真正明白原理。
import RPi.GPIO as GPIO import time #绑定对应的引脚,来自于图纸 PWMA=18 AIN1 = 22 AIN2 = 27 PWMB=23 BIN1= 25 BIN2 = 24
18引脚控制的是左侧两个电机 23引脚控制的右侧两个电机 AIN1、AIN2、BIN1、BIN2控制的是左右两侧电机的正转和翻转 ##2、设置引脚模式和输入输出
GPIO.setmode(GPIO.BCM) GPIO.setwarnings(False) # 设置引脚为输出 GPIO.setup(PWMA, GPIO.OUT) GPIO.setup(AIN1, GPIO.OUT) GPIO.setup(AIN2, GPIO.OUT) GPIO.setup(PWMB, GPIO.OUT) GPIO.setup(BIN1, GPIO.OUT) GPIO.setup(BIN2, GPIO.OUT) #电机 leftMotor = GPIO.PWM(PWMA, 100) rightMotor = GPIO.PWM(PWMB, 100) leftMotor.start(0) rightMotor.start(0)
这样,设置基本完成,电机就处于待命状态了。
要使得小车前进,我们需要让四个电机转动起来,既然是前进,当然是电机正转
def forward(speed,runtime): leftMotor.ChangeDutyCycle(speed) GPIO.output(AIN1, True)#AIN1高电平则正转 GPIO.output(AIN2, False)#如果为True则翻转 rightMotor.ChangeDutyCycle(speed) GPIO.output(BIN1, True) GPIO.output(BIN2, False) time.sleep(runtime)#维持状态的时间,如果不给命令执行其他,将会继续执行
当四轮正转的时候,实现了基本的前进功能。 后退当然也是同理,只需要反向设置就好了。
def backword(speed, backtime): leftMotor.ChangeDutyCycle(speed) GPIO.output(AIN2, True) # AIN2 GPIO.output(AIN1, False) # AIN1 rightMotor.ChangeDutyCycle(speed) GPIO.output(BIN2, True) # BIN2 GPIO.output(BIN1, False) # BIN1 time.sleep(backtime)
至此,前进和后退的功能就实现了。 最后通过调用函数,来实现小车运行。
if \_\_name\_\_ == '\_\_main\_\_': try: while True: forward(50,3) except KeyboardInterrupt: GPIO.cleanup()
一定要调用 GPIO.cleanup()函数来清空引脚上的相关设置,否则引脚将被占用,对程序的下次运行可能会有影响。
电机连接在电路板上,ChangeDutyCycle可以让我们来设置速度,通过改变占空比来实现。 速度设定好了,设定其正转或者翻转,则是通过连接的AIN1和AIN2接口来实现。(这里是电路模块的名字,实际操作中也可以起不同的名字,或者接入不同的接口)
以上就是树莓派小车如何实现前进和后退,小编相信有部分知识点可能是我们日常工作会见到或用到的。希望你能通过这篇文章学到更多知识。更多详情敬请关注亿速云行业资讯频道。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。