|
如果一开始模拟>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;//蜂鸣器引脚
- int kaiguan=12;//开关引脚12
- int val;//定义变量val
- 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);
-
- pinMode(kaiguan,INPUT);//定开关接口为输出接口
- }
- void loop()
- {
-
- val=digitalRead(kaiguan);//左为关(HIGH),右为开(LOW)
- if(val==HIGH){//a==1.70时,开关断开,测距未工作
- analogWrite(R,255);
- delay(100);
- analogWrite(G,0);
- delay(100);
- analogWrite(B,0);
- delay(100);
- }
-
- if(val==LOW){
- 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>15){
- analogWrite(R,124);
- delay(100);
- analogWrite(G,252);
- delay(100);
- analogWrite(B,0);//绿色
- delay(100);
- buzzer1();
- }else{
- xiaoyu15();
- }
- }
- }
- 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 xiaoyu15(){//小于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(1000);
- myservo.attach(9); // 控制线连接数字9
- myservo.write(0); // 舵机角度写入
- delay(1000);
- }
复制代码
|
-
|