Я создал программу, которая предназначена для поворота серводвигателя на 180 градусов, а затем назад, если объект находится в пределах 20 см от ультразвукового датчика c. Это работает нормально, за исключением случаев, когда условие if не выполняется. В этом случае двигатель не двигается вообще, а расстояние вводится в последовательный монитор. Иногда это работает нормально, но в большинстве случаев последовательный монитор просто печатает 0 несколько раз, и мне нужно перезапустить программу, чтобы он снова заработал. Даже когда я помещаю объект в пределах 20 см от сенсора, он все равно печатает 0. Я довольно новичок в Arduino, так что это просто ошарашило меня, ха-ха. Любые советы или помощь будет принята с благодарностью.
#include <Servo.h>
Servo servo1; // create servo object to control a servo
#define trigPin 13
#define echoPin 12
void setup()
{
Serial.begin(9600);
servo1.attach(9); // attaches the servo on pin 9 to the servo object
pinMode(trigPin, OUTPUT);
pinMode(echoPin, INPUT);
}
void loop()
{
long duration = 0, distance = 0;
digitalWrite(trigPin, LOW);
delayMicroseconds(2);
digitalWrite(trigPin, HIGH);
delayMicroseconds(10);
digitalWrite(trigPin, LOW);
delayMicroseconds(2);
duration = pulseIn(echoPin, HIGH);
distance = (duration / 2) / 29.1;
if(distance > 2 && distance < 20){
servo1.write(180);
Serial.println(distance);
delay(1000);
servo1.write(-180);
}
else{
servo1.write(0);
Serial.println(distance);
}
delay(2000);
}