Я подключил 3 устройства к своему Aruino Uno: серводвигателю, светодиоду и датчику расстояния. Теперь, когда расстояние составляет 10 см или меньше, мой светодиод уходит. Мой светодиод продолжается, когда расстояние больше, чем 10 см, это работает нормально. Но теперь, когда я добавил свой сервомотор, мне нужно подождать, когда мой цикл будет выполнен, прежде чем мой датчик расстояния пошлет сигнал на мой светодиод. Как я могу это исправить ?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. – m0skit0
не может получить текущее положение сервопривода? – McNets