1

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();

}
4

1 に答える 1