树莓派控制小车(1)
材料:
1、电机驱动模块 L298N2、智能小车底座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()
用技术改变世界!