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);
  }
}

何をしているのか分かりますか?永遠にループしています。

だから...あなたの変数inchesは一度値を取得し、それから永遠に(またはプラグを抜くまで)その値は同じままです..

を取り除くと、while()ある程度の応答性が見られるはずです (他のすべてが正しく接続されていると仮定します)。

于 2012-07-31T05:12:25.473 に答える