Arduino同时运行2个命令

时间:2016-11-22 18:28:36

标签: loops arduino iot

我已将3台设备连接到我的Aruino Uno:伺服电机,LED和距离传感器。现在当距离为10厘米或更小时,我的领导即将开始。当距离大于10厘米时,我的指示正在进行,这是正常的。但是现在当我添加我的伺服电机时,我需要等待我的循环完成之后我的距离传感器将信号发送到我的LED。我该如何解决这个问题?

  #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 个答案:

答案 0 :(得分:0)

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

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