Micropython-第一辆小车bpicar

BPI-CAR

最近收到了一个小车的开发板,二话不说先驱动起来


硬件

GitHub - yelvlab/BPI-CAR_CAR-FWD: BPI-BIT Car Four Wheel Drive 详细的可以看这个,这个小车的板子还是一个测试中的板子,存在一些小问题,但不妨碍我们把它跑起来。

要驱动小车我们看几个关键的部分就可以了

这里使用pca9685输出 pwm 驱动am1016A来控制电机的起动
而控制电机的正反转就要看am1016a的技术手册的描述。


根据真值表我们就可以轻松的控制电机的转动。

软件部分


"""
The MIT License (MIT)
Copyright © 2019    @Lyubiao
"""

"""
bpi-car
position 
           |-----------------|         ------------------
         | - |     前      | - |       | 左前 |  12 13  |
         | - |             | - |       ------------------
           |                 |         | 右前 |  14 15  |
           |-----------------|         ------------------
           |                 |         | 左后 |   8  9  |
         | - |     后      | - |       ------------------
         | - |             | - |       | 右后 |  10 11  |
           |-----------------|         ------------------
"""

import pca9685
from machine import Pin, I2C

class bpicar(pca9685.PCA9685):
    def __init__(self,i2c, address=0x40):
        pca9685.PCA9685.__init__(self, i2c, address)
        self.freq(1000)

    def forward(self,speed):
        self.duty(14,speed)
        self.duty(15, 0)
        self.duty(13, speed)
        self.duty(12, 0)
        self.duty(10, speed)
        self.duty(11, 0)
        self.duty(9, speed)
        self.duty(8, 0)

    def backward(self,speed):
        self.duty(15, speed)
        self.duty(14, 0)
        self.duty(12, speed)
        self.duty(13, 0)
        self.duty(11, speed)
        self.duty(10, 0)
        self.duty(8, speed)
        self.duty(9, 0)

    def turn_left(self,speed):
        self.duty(14, speed)
        self.duty(15, 0)
        self.duty(12, speed)
        self.duty(13, 0)
        self.duty(10, speed)
        self.duty(11, 0)
        self.duty(8, speed)
        self.duty(9, 0)
    def turn_right(self,speed):

        self.duty(15, speed)
        self.duty(15, 0)
        self.duty(13, speed)
        self.duty(12, 0)
        self.duty(11, speed)
        self.duty(10, 0)
        self.duty(9, speed)
        self.duty(8, 0)
    def stop(self):
        self.duty(15, 0)
        self.duty(14, 0)
        self.duty(13, 0)
        self.duty(12, 0)
        self.duty(11, 0)
        self.duty(10, 0)
        self.duty(9, 0)
        self.duty(8, 0)

i2c = I2C(scl=Pin(22), sda=Pin(21), freq=10000)
car=bpicar(i2c)
import utime
car.forward(4095)
utime.sleep(5)
car.backward(4095)
utime.sleep(5)
car.turn_left(4095)
utime.sleep(5)
car.turn_right(4095)
utime.sleep(5)
car.stop()
utime.sleep(5)

简单的定义了小车的几个操作,前进、后退、左转、右转、停止,我们可以在这个基础上继续完善我们的程序,实现更多小车的骚操作。

1 个赞

:+1:强!!!!!!!!!!!!!

给力,给力:grinning:

呜啊呜啊,代码上传了吗?我可以怎么获得呜啊呜啊

https://github.com/Lyubiao/Micropython-BIT-CAR