为什么如果一开始模拟>15RGB灯的颜色是绿色,但是如果模拟时是小于15(小于15灯为橙色),然后调为大于15,灯就不能变为绿色了?
代码:
#include <Servo.h>
Servo myservo; // 定义Servo对象来控制
int pos = 0; // 角度存储变量
#include <LiquidCrystal.h>
//lcd显示屏库
const int RS=13,E=6,DB4=7,DB5=4,DB6=3,DB7=2;
LiquidCrystal lcd(RS,E,DB4,DB5,DB6,DB7);
int TrigPin=A0;
int EcoPin=A1;
float a;//距离传感器
int R = 5;//R红色LED控制引脚连接到Arduino的5脚
int G = 10;//G绿色LED控制引脚连接到Arduino的10脚
int B = 11;//B蓝色LED控制引脚连接到Arduino的11脚
int buzzer=8;//蜂鸣器引脚
void setup()
{
lcd.begin(16,2);//设置lcd要显示的2行16列
lcd.clear();//lcd
pinMode(TrigPin, OUTPUT);
pinMode(EcoPin,INPUT);
Serial.begin(9600);//距离
pinMode(R,OUTPUT);//设置redPin对应的管脚5为输出
pinMode(G,OUTPUT);//设置greenPin,对应的管脚10为输出
pinMode(B,OUTPUT);//设置bluePin对应的管脚11为输出
Serial.begin(9600);
pinMode(buzzer, OUTPUT);//蜂鸣器
Serial.begin(9600);
}
void loop()
{
digitalWrite(TrigPin, LOW);
delayMicroseconds(2);
digitalWrite(TrigPin,HIGH);
delayMicroseconds(10);
digitalWrite(TrigPin, LOW);
a=float(pulseIn(EcoPin,HIGH)*17)/1000+2-0.3;//距离计算公式
delay(200);//速度
Serial.println(a);
lcd.setCursor(0,0);
lcd.print("Distance is");
lcd.setCursor(0,1);
lcd.print(a);//lcd屏显示
/* if(a==1.70){//a==1.70时,开关断开,测距未工作
analogWrite(R,255);
delay(100);
analogWrite(G,0);
delay(100);
analogWrite(B,0);
delay(100);
}*/
if(a>15){//1
analogWrite(R,124);
delay(100);
analogWrite(G,252);
delay(100);
analogWrite(B,0);//绿色
delay(100);
buzzer1();
}
if(a<15){
analogWrite(R,238);
delay(100);
analogWrite(G,154);
delay(100);
analogWrite(B,0);//RGB灯为橙色
delay(100);
myservo.attach(9); // 控制线连接数字9
myservo.write(90); // 舵机角度写入
delay(10000);
myservo.attach(9); // 控制线连接数字9
myservo.write(0); // 舵机角度写入
delay(1000);
}
}
void buzzer1(){//蜂鸣器发出声音
tone(8, 100, 200); //6号引脚发声200毫秒
delay(500);
tone(8, 200, 200);
delay(500);
tone(8, 400, 200);
delay(500);
tone(8, 600, 200);
delay(500);
tone(8, 800, 200);
delay(500);
tone(8, 600, 200);
delay(500);
tone(8, 400, 200);
delay(500);
tone(8, 200, 200);
delay(500);
tone(8, 100, 200);
delay(500);
noTone(8); //停止8号引脚发声
}
void white(){
analogWrite(R,0);
delay(100);
analogWrite(G,0);
delay(100);
analogWrite(B,0);//白色
delay(100);
}