const int pingPin = 8;
void setup() {
Serial.begin(9600);
}
void loop()
{
long duration, inches, cm;
pinMode(11, OUTPUT); //紅燈
pinMode(12, OUTPUT); //黃燈
pinMode(13, OUTPUT); //綠燈
pinMode(pingPin, OUTPUT);
digitalWrite(pingPin, LOW);
delayMicroseconds(5);
digitalWrite(pingPin, HIGH);
delayMicroseconds(10);
digitalWrite(pingPin, LOW);
pinMode(7, INPUT);
duration = pulseIn(7, HIGH);
inches = microsecondsToInches(duration);
cm = microsecondsToCentimeters(duration);
Serial.print(inches);
Serial.print("in, ");
Serial.print(cm);
Serial.print("cm");
Serial.println();
if (cm <= 10) //當距離不小於10也不大於10的時候,紅燈和黃燈都不會亮,因此加上一個等號彌補這個缺失
{
digitalWrite(11, HIGH);
}
else
{
digitalWrite(11, LOW);
}
if (cm > 10 && cm < 20)
{
digitalWrite(12, HIGH);
}
else
{
digitalWrite(12, LOW);
}
if (cm >= 20) //當距離不小於20也不大於20的時候,黃燈和綠燈都不會亮,因此加上一個等號彌補這個缺失
{
digitalWrite(13, HIGH);
}
else
{
digitalWrite(13, LOW);
}
delay(500);
}
long microsecondsToInches(long microseconds)
{
return microseconds / 74 / 2;
}
long microsecondsToCentimeters(long microseconds)
{
return microseconds / 29 / 2;
}