Arduino同时运行2个命令

Arduino同时运行2个命令

问题描述:

我已经连接3个设备到我的Aruino Uno:伺服电机,LED和一个距离传感器。现在,当距离10厘米或更小时,我的指示灯熄灭。当距离大于10cm时,我的指示灯正在工作,这很好。但是现在,当我添加伺服电机时,我需要等待环路完成后,我的距离传感器才能将信号发送给我的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; 
} 
+1

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

+0

尽管更简单的解决方案是将LED检查移到for循环中。 – m0skit0

+0

无法获得伺服的当前位置? – McNets

这是一个常见问题。 Here是一个伟大答案我在Adafruit教程部分找到。

链接中解释的解决方案简而言之,向您展示了如何使用millis()函数,而不是delay(),以及为什么这对多任务更好。

+0

感谢您的信息 – olalalaa1599