这样的程序一旦定义舵机,舵机就会直接到一端的极点不动了,为啥
-
from pyb import Pin
import time
import car
from pyb import Servo
s3 = Servo(3) # P8
p_in1 = Pin('P4', Pin.IN, Pin.PULL_UP)#设置p_in为输入引脚,并开启上拉电阻
p_in2 = Pin('P5', Pin.IN, Pin.PULL_UP)#设置p_in为输入引脚,并开启上拉电阻while(True):
value1 = p_in1.value() # get value, 0 or 1#读入p_in引脚的值
value2 = p_in2.value() # get value, 0 or 1#读入p_in引脚的值if value2==0:
car.run(10,10)
time.sleep(100)
else:
car.run(10,0)
看一下有什么问题吗?
-
因为你没有让它动啊。
用s3.angle()控制
-
s3 = Servo(3) # P8
只要有这条语句,舵机直接转到90+度,然后再加入其他控制舵机程序就没用了
-
你单独写一个程序,只控制s3舵机,看效果
-
单独写没问题,只要和另一个程序结合就不能用
-
什么代码可以,什么代码不可以。
请贴出具体的代码,与报错提示。
代码一定要让别人可以运行的文本,不要贴图片
-
两个程序分别独立运行都是没问题的,但是一旦结合,就没法定义舵机,一遇到s3 = Servo(3) # P8 这条语句,舵机就进入死区无法控制了
-
请贴出具体的代码。
-
from pyb import Pin
import time
import car
from pyb import Servo
s3 = Servo(3) # P8
p_in1 = Pin('P4', Pin.IN, Pin.PULL_UP)#设置p_in为输入引脚,并开启上拉电阻
p_in2 = Pin('P5', Pin.IN, Pin.PULL_UP)#设置p_in为输入引脚,并开启上拉电阻while(True):
value1 = p_in1.value() # get value, 0 or 1#读入p_in引脚的值
value2 = p_in2.value() # get value, 0 or 1#读入p_in引脚的值if value2==0:
car.run(10,10)
time.sleep(100)
else:
s3.angle(80)
time.sleep(10)
-
什么意思?
这个代码的目的是什么?效果是什么?
-
如果pin2是低电平,就轮转动,高电平就舵机转到80度
-
问题在哪?你想让我看什么?
-
但是这样的程序一旦运行,碰到s3 = Servo(3)这条语句,舵机就会直接转进死区,没法控制
-
你不要加引脚电平判断,只控制舵机。
如果你怀疑s3.angle(80)这一句有问题,那就写一个只有控制舵机的代码。
-
正常不是应该遇到s3 = Servo(3)这条语句,舵机没反应吗?但是这个程序中会让舵机直接转到最右端,然后后面控制舵机转动的程序就没用了
-
from pyb import Servo import time s3 = Servo(3) # P8 while True: s3.angle(-90) time.sleep(1000) s3.angle(90) time.sleep(1000)
你只运行这个代码,有没有问题?
-
没问题,一结合就完了
-
你代码缩进有问题,改了再说。
-
缩进应该没问题,这个是复制的问题
-
缩进有问题
改了再说。