树莓派控制小车(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()

 

posted @ 2016-12-11 19:04  Henrry-Ren  阅读(1477)  评论(0编辑  收藏  举报