arduino我想要实现:距离小于20cm时,红灯亮,其他灯灭;距离在20到50cm之间时,黄灯亮,其他灯灭;距离大于50cm时,绿灯亮,其他灯灭。但是下载后只有黄灯亮,哪里有问题啊?
//3 黄20-50(警告) 4绿 >50 5 红 <20cm(危险)
//定义超声波传感器和LED的引脚编号
const int TRIG_PIN = 6;
const int ECHO_PIN = 7;
const int LED_PIN3 = 3;
const int LED_PIN4 = 4;
const int LED_PIN5 = 5;
const int DISTANCE_THRESHOLD_WARN = 50; //cm
const int DISTANCE_THRESHOLD_DANGER = 20;
float duration_us, distance_cm;
void setup() {
Serial.begin (9600);
pinMode(TRIG_PIN, OUTPUT); //设置TRIG_PIN引脚为输出模式
pinMode(ECHO_PIN, INPUT);
pinMode(LED_PIN3, OUTPUT);
pinMode(LED_PIN4, OUTPUT);
pinMode(LED_PIN5, OUTPUT);
}
void loop() {
//控制超声波传感器的触发引脚RIG_PIN发出一个10微秒的高电平脉冲然后将其拉低
digitalWrite(TRIG_PIN, HIGH); //将TRIG_PIN设置为高电平
delayMicroseconds(10);
digitalWrite(TRIG_PIN, LOW); //将TRIG_PIN恢复为低电平
duration_us = pulseIn(ECHO_PIN, HIGH); //读取指定引脚(ECHO_PIN)上高电平脉冲的持续时间
distance_cm = 0.017 * duration_us; //计算距离
if(distance_cm < DISTANCE_THRESHOLD_WARN || distance_cm>DISTANCE_THRESHOLD_DANGER)
{
digitalWrite(LED_PIN3, HIGH);
digitalWrite(LED_PIN4, LOW);
digitalWrite(LED_PIN5, LOW);
Serial.print(" Warn ");
}
else if(distance_cm < DISTANCE_THRESHOLD_DANGER)
{
digitalWrite(LED_PIN5, HIGH);
digitalWrite(LED_PIN3, LOW);
digitalWrite(LED_PIN4, LOW);
Serial.print("Danger!!!!! ");
}
else
{
digitalWrite(LED_PIN4, HIGH);
digitalWrite(LED_PIN3, LOW);
digitalWrite(LED_PIN5, LOW);
Serial.print("Safe ");
}
//通过串口打印距离信息
Serial.print("distance: ");
Serial.print(distance_cm);
Serial.println(" cm");
//在下一次测量前等待500毫秒
delay(500);
}