树莓派控制小车(1)

材料:

1、电机驱动模块 L298N 
2、智能小车底座
3、杜邦线若干
4、四节5号电池
5、导线若干
6、树莓派3B+一个。
电路搭建:
1、将电机与L298N OUT1-4相连。
2、将电池盒与L298N 12V和GND相连,注意正负。
3、将L298N 的5V与树莓派的5V引脚相连。
4、选择树莓派为BCM模式,将P05、P06、P13、P19 与 L298N IN1-4相连。

遇到的问题:

1、将L298N 中的供电口理解错误,存在12V、GND和5V,以为只支持12V供电或者5V供电任选其一。
2、只连接12V供电,未连接5V线柱,导致电机功率不足,无法驱动轮子。
3、使用充电宝给L298N 供电,供电不足导致无法驱动。
4、BOARD模式和BCM模式理解问题,导致L298N IN1-4与树莓派连接GPIO口连接错误导致无法驱动。
实例图:
  
代码:
import RPi.GPIO as GPIO
import time
import signal

'''
gpio_init()
forward()
go_back()
right()
left()
gpio_uninit()
'''

INT1 = 5
INT2 = 6
INT3 = 13
INT4 = 19

GPIO.setwarnings(False)

def sig_handler(sig, frame):
    try:
        gpio_uninit()
    except Exception, ex:
        exit(0)

def setup():
    try:
        GPIO.setmode(GPIO.BCM)
        GPIO.setup(INT1, GPIO.OUT)
        GPIO.setup(INT2, GPIO.OUT)
        GPIO.setup(INT3, GPIO.OUT)
        GPIO.setup(INT4, GPIO.OUT)
    except Exception, ex:
        gpio_uninit()
        exit(0)

def forward():
    try:
        GPIO.output(INT1, GPIO.HIGH)
        GPIO.output(INT2, GPIO.LOW)
        GPIO.output(INT3, GPIO.LOW)
        GPIO.output(INT4, GPIO.HIGH)
    except Exception, ex:
        gpio_uninit()
        exit(0)

def go_back():
    try:
        GPIO.output(INT1, GPIO.LOW)
        GPIO.output(INT2, GPIO.HIGH)
        GPIO.output(INT3, GPIO.HIGH)
        GPIO.output(INT4, GPIO.LOW)
    except Exception, ex:
        gpio_uninit()
        exit(0)

def right():
    try:
        GPIO.output(INT1, GPIO.HIGH)
        GPIO.output(INT2, GPIO.LOW)
        GPIO.output(INT3, GPIO.HIGH)
        GPIO.output(INT4, GPIO.LOW)
    except Exception, ex:
        gpio_uninit()
        exit(0)

def left():
    try:
        GPIO.output(INT1, GPIO.LOW)
        GPIO.output(INT2, GPIO.HIGH)
        GPIO.output(INT3, GPIO.LOW)
        GPIO.output(INT4, GPIO.HIGH)
    except Exception, ex:
        gpio_uninit()
        exit(0)

def gpio_init():
    try:
        setup()
        signal.signal(signal.SIGTERM, sig_handler)
        signal.signal(signal.SIGINT, sig_handler)
    except Exception, ex:
        gpio_uninit()
        exit(0)

def gpio_uninit():
    GPIO.cleanup()

if __name__ == '__main__':
    try:
        gpio_init()
        forward()
        go_back()
        right()
        left()
        gpio_uninit()
    except Exception, ex:
        gpio_uninit()

 

转载于:https://www.cnblogs.com/Walther/p/6160222.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值