私は3つのデバイスを私のAruino Unoに接続しました:サーボモータ、LEDと距離センサー。距離が10cm以下になると、私のLEDが消えます。距離が10cmより大きい場合、私のLEDが点灯しています。これはうまく動作しています。しかし、今私は私のサーボモータを追加したとき私は距離センサーが私のLEDに信号を送信する前に私のループが完了するのを待つ必要があります。どうすればこの問題を解決できますか?Arduinoは同時に2つのコマンドを実行します
#include <Servo.h>
int servoPin = 9;
const int trigPin = 7;
const int echoPin = 8;
int led = 13;
long duration, cm;
Servo servo;
int angle = 0;
void setup() {
// initialize serial communication:
Serial.begin(9600);
pinMode(led,OUTPUT);
pinMode(echoPin, INPUT);
servo.attach(servoPin);
}
void loop()
{
if(afstandTotmuur() >= 10)
{
digitalWrite(led,HIGH);
}
else
{
digitalWrite(led,LOW);
}
for(angle = 0; angle < 180; angle++)
{
servo.write(angle);
delay(15);
}
}
long afstandTotmuur()
{
pinMode(trigPin, OUTPUT);
// digitalWrite(trigPin, LOW);
// delayMicroseconds(2);
digitalWrite(trigPin, HIGH);
delayMicroseconds(10);
digitalWrite(trigPin, LOW);
duration = pulseIn(echoPin, HIGH);
// convert the time into a distance
cm = microsecondsToCentimeters(duration);
return cm;
}
long microsecondsToCentimeters(long microseconds)
{
return microseconds/29/2;
}
http://arduino.stackexchange.com/questions/286/how-can-i-create-multiple-running-threads – m0skit0
もっと簡単な解決策は、forループ内のLEDチェックを移動することです。 – m0skit0
はサーボの現在位置を取得できませんか? – McNets