我正在制作一个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以正确的距离打开和关闭?
答案 0 :(得分:1)
仔细查看代码的最后一位:
while (true) {
if (inches <= 5) {
digitalWrite(ledPin, HIGH);
} else {
digitalWrite(ledPin, LOW);
}
}
你看到它在做什么?它永远是循环的。
所以......你的var inches
获得一次值,然后是永恒(或直到你拔掉),这个值将保持不变..
摆脱while()
,您应该看到一些响应(假设其他所有内容都正确连接)。