我想停止一个不断转动的伺服电机,直到超声波传感器检测到障碍物为止。例如,我希望当障碍物距离超声波传感器不到5厘米时,伺服电机停止。在无障碍物的情况下,伺服电机应不停转。
然而,障碍被移除后,我的伺服马达开始从不同的角度旋转,而不是在它停止的地方。我添加了Arduino代码的伺服电机旋转部分。
void loop() {
for (int i=0; i<=180; i++) {
distance = calculateDistance();
if (distance <= 10){
moveStop();
} else {
moveForward();
myServo.write(i);
delay(5);
}
}
for (int i=180; i>0; i--) {
distance = calculateDistance();
if (distance <= 10) {
moveStop();
} else {
moveForward();
myServo.write(i);
delay(5);
}发布于 2020-11-21 22:20:02
问题是,即使物体挡住了我的路,我也会不断地被计数。我不能准确地重建你的设置,但我希望这能帮到你
int y = 0
void loop() {
for(int i=0;i<=180;i++){
distance = calculateDistance();
if (distance <= 10){
moveStop();
y++; //"counts the time" the servo is blocked by object
}
else{
moveForward();
myServo.write(i-y); //and subtracts that time from i
delay(5);
}
}
for(int i=180;i>0;i--){
distance = calculateDistance();
if (distance <= 10){
moveStop();
y++;
}
else{
moveForward();
myServo.write(i+y); //same but in reverse
delay(5);
}https://stackoverflow.com/questions/64935125
复制相似问题