0

我正在制作一个 Arduino 程序,但我无法让它工作。

该程序所做的只是在有人距离传感器 5 英寸时打开LED 。问题是每当我启动程序时,LED 无论如何都会保持关闭状态。这是我的程序

const int pingPin =7 ;
const int ledPin = 13;

void setup() {
    Serial.begin(9600);
    pinMode(ledPin, OUTPUT);
}

void loop() {
    long duration, inches, cm;

    pinMode(pingPin,OUTPUT);
    digitalWrite(pingPin,LOW);
    delayMicroseconds(2);
    digitalWrite(pingPin,HIGH);
    delayMicroseconds(5);
    digitalWrite(pingPin,LOW);

    pinMode(pingPin,INPUT);
    duration =pulseIn(pingPin,HIGH);

    inches = microsecondsToInches(duration);
    cm = microsecondsToCentimeters(duration);

    Serial.print(inches);
    Serial.print("in, ");
    Serial.print(cm);
    Serial.print("cm");
    Serial.println();
    delay(100);

    while (true) {
        if (inches <= 5) {
            digitalWrite(ledPin, HIGH);
        }
        else {
            digitalWrite(ledPin, LOW);
        }
    }
}

long microsecondsToInches(long microseconds)
{
    return microseconds /74/2;
}

long microsecondsToCentimeters(long microseconds)
{
    return microseconds /29/2;
}

我该如何解决这个问题,以便 LED 在正确的距离处打开和关闭?

4

1 回答 1

1

仔细看看你的代码的最后一点:

while (true) {
  if (inches <= 5) {
    digitalWrite(ledPin, HIGH);
  } else {
    digitalWrite(ledPin, LOW);
  }
}

你看它在做什么?它永远循环。

所以......你的 varinches得到一个值,然后永远(或直到你拔掉)这个值将保持不变..

摆脱 ,while()您应该会看到一些响应(假设其他所有内容都正确连接)。

于 2012-07-31T05:12:25.473 回答