2016-11-22 2 views
0

Я подключил 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; 
} 
+1

http://arduino.stackexchange.com/questions/286/how-can-i-create-multiple-running-threads – m0skit0

+0

Хотя более простым решением было бы переместить светодиодные проверки внутри цикла for. – m0skit0

+0

не может получить текущее положение сервопривода? – McNets

ответ

0

Это распространенная проблема. Here is отлично ответ Я нашел в разделе урока Adafruit.

Решение, поясненное в ссылке, одним словом, показывает вам, как использовать функцию millis(), а не delay() и почему это намного лучше для многозадачности.

+0

благодарит за информацию – olalalaa1599

 Смежные вопросы

  • Нет связанных вопросов^_^