【STM32智能车】运行状态
智能车不应该只能前进后退吧,本篇来做其他的小车运行状态。
想想,一辆车有那些状态呢?前进,后退,左转,右转,停止。之前定义了直行。
def go(speed): #直行状态
ch1.pulse_width_percent(speed)
ch2.pulse_width_percent(speed)
A0(1)
A1(0) #此状态测试A电机正转
B0(0)
B1(1) #此状态B电机正转
def back(speed): #倒车
ch1.pulse_width_percent(speed)
ch2.pulse_width_percent(speed)
A0(0)
A1(1)
B0(1)
B1(0)
可以看到直行和倒退其实就是将电机信号互换
电机状态表。
备注:电机上有一个“+“号,红线在“+”号上。如果加号上是黑线则把我写的状态翻转一下。
这回我们可以试试定义小车的其他状态,左转,右转
def right(speed): #右转
ch1.pulse_width_percent(0) #A电机不动
ch2.pulse_width_percent(speed)
B0(0)
B1(1)
def left(speed): #左转
ch1.pulse_width_percent(speed)
ch2.pulse_width_percent(0) #B电机不动
A0(1)
A1(0)
一张图就能解释,不多说了。
小车状态完整代码
包含,前后,左右,停止。
#main.py -- put your code here!
from pyb import Pin, Timer,delay
from time import sleep_us,ticks_us,sleep
cs = Pin('C8',Pin.OUT_PP) #C8设置为输出引脚输出高电平
cs(1)
ch1 =None
ch2 =None #初始化
A0= Pin('B12',Pin.OUT_PP) #右侧马达
A1 = Pin('B13',Pin.OUT_PP)
B0 = Pin('B14',Pin.OUT_PP) #左侧马达
B1 = Pin('B15',Pin.OUT_PP)
#A电机(右)
p1 = Pin('B8')
tim1 = Timer(10, freq=120)
ch1 = tim1.channel(1, Timer.PWM, pin=p1)
#B电机(左)
p2 = Pin('B9')
tim2 = Timer(4, freq=120)
ch2 = tim2.channel(4, Timer.PWM, pin=p2)
#小车状态
#小车右侧电机接到A处,且电机红线在A0;
#小车左侧电机接到B处,且电机红线在B1
def go(speed): #直行状态
ch1.pulse_width_percent(speed)
ch2.pulse_width_percent(speed)
A0(1)
A1(0) #此状态测试A电机正转
B0(0)
B1(1) #此状态B电机正转
def back(speed): #倒车
ch1.pulse_width_percent(speed)
ch2.pulse_width_percent(speed)
A0(0)
A1(1)
B0(1)
B1(0)
def ztstop(): #停止
ch1.pulse_width_percent(0)
ch2.pulse_width_percent(0)
def right(speed): #右转
ch1.pulse_width_percent(0) #A电机不动
ch2.pulse_width_percent(speed)
B0(0)
B1(1)
def left(speed): #左转
ch1.pulse_width_percent(speed)
ch2.pulse_width_percent(0) #B电机不动
A0(1)
A1(0)
while True: #调用
go(50) #括号里参数为数字0~100 PWM占空比