360サーボと超音波センサーを使ってゲートを作りたいので、if elseを使います。超音波条件 >= 10 cm の場合、サーボは 5 秒間右に 1 回回転し、その逆も同様です。しかし、サーボが止まることなく回転し続ける10cm以上の状態になった場合、どうすれば1回転で止まるでしょうか?また、超音波センサーから表示までの距離データが必要です。私はこれの初心者です。助けてくれてとても感謝しています。
これは私のコードです:
#include <Wire.h>
#include <Servo.h> //Servo library
#define echoPin 3 //triger pin, echo pin
#define triggerPin 4
int waktu;
int jarak;
int hasiljarak;
Servo servo;
void setup()
{
Serial.begin(9600);
pinMode(triggerPin, OUTPUT);
pinMode(echoPin, INPUT);
}
void loop()
{
digitalWrite(triggerPin, LOW);
delayMicroseconds(2);
digitalWrite(triggerPin, HIGH);
delayMicroseconds(10);
digitalWrite(triggerPin, LOW);
waktu = pulseIn(echoPin, HIGH);
jarak = waktu * 0.034 / 2;
Serial.print(jarak);
Serial.print(" CM");
delay(100);
servo.attach(9);
if(jarak<=10)
{
servo.write(2000);
delay(5000);
}
else if(jarak>=30)
{
servo.write(1000);
delay(5000);
}
else
{
servo.write(1500);
delay(1000);
}
servo.detach();
}