Aeduino关于RGB三色灯控制?-Arduino中文社区 - Powered by Discuz!

Arduino中文社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 624|回复: 0

[未解决] Aeduino关于RGB三色灯控制?

[复制链接]
发表于 2022-1-10 18:01 | 显示全部楼层 |阅读模式
如果一开始模拟>15RGB灯的颜色是绿色,但是如果模拟时是小于15(小于15灯为橙色),然后调为大于15,灯就不能变为绿色了?
电路图:
代码:
  1. #include <Servo.h>
  2. Servo myservo;  // 定义Servo对象来控制
  3. int pos = 0;    // 角度存储变量

  4. #include <LiquidCrystal.h>
  5. //lcd显示屏库
  6. const int RS=13,E=6,DB4=7,DB5=4,DB6=3,DB7=2;
  7. LiquidCrystal lcd(RS,E,DB4,DB5,DB6,DB7);

  8. int TrigPin=A0;
  9. int EcoPin=A1;
  10. float a;//距离传感器

  11. int R = 5;//R红色LED控制引脚连接到Arduino的5脚
  12. int G = 10;//G绿色LED控制引脚连接到Arduino的10脚
  13. int B = 11;//B蓝色LED控制引脚连接到Arduino的11脚

  14. int buzzer=8;//蜂鸣器引脚

  15. int kaiguan=12;//开关引脚12
  16. int val;//定义变量val

  17. void setup()
  18. {
  19.   lcd.begin(16,2);//设置lcd要显示的2行16列
  20.   lcd.clear();//lcd
  21.   pinMode(TrigPin, OUTPUT);
  22.   pinMode(EcoPin,INPUT);
  23.   Serial.begin(9600);//距离
  24.   
  25.   pinMode(R,OUTPUT);//设置redPin对应的管脚5为输出
  26.   pinMode(G,OUTPUT);//设置greenPin,对应的管脚10为输出
  27.   pinMode(B,OUTPUT);//设置bluePin对应的管脚11为输出
  28.   Serial.begin(9600);
  29.   
  30.   pinMode(buzzer, OUTPUT);//蜂鸣器
  31.   Serial.begin(9600);
  32.   
  33.   pinMode(kaiguan,INPUT);//定开关接口为输出接口
  34. }

  35. void loop()
  36. {
  37.   
  38.   val=digitalRead(kaiguan);//左为关(HIGH),右为开(LOW)
  39.   if(val==HIGH){//a==1.70时,开关断开,测距未工作
  40.   analogWrite(R,255);
  41.   delay(100);
  42.   analogWrite(G,0);
  43.   delay(100);  
  44.   analogWrite(B,0);
  45.   delay(100);  
  46.   }

  47.   if(val==LOW){
  48.   digitalWrite(TrigPin, LOW);
  49.   delayMicroseconds(2);
  50.   digitalWrite(TrigPin,HIGH);
  51.   delayMicroseconds(10);
  52.   digitalWrite(TrigPin, LOW);
  53.   a=float(pulseIn(EcoPin,HIGH)*17)/1000+2-0.3;//距离计算公式
  54.   delay(200);//速度
  55.   Serial.println(a);
  56.   lcd.setCursor(0,0);
  57.   lcd.print("Distance is");
  58.   lcd.setCursor(0,1);
  59.   lcd.print(a);//lcd屏显示
  60.     if(a>15){
  61.   analogWrite(R,124);
  62.   delay(100);  
  63.   analogWrite(G,252);
  64.   delay(100);  
  65.   analogWrite(B,0);//绿色
  66.   delay(100);  
  67.   buzzer1();
  68.     }else{
  69.       xiaoyu15();
  70.     }
  71.   }
  72. }

  73. void buzzer1(){//蜂鸣器发出声音
  74.   tone(8, 100, 200);  //6号引脚发声200毫秒
  75.   delay(500);
  76.   tone(8, 200, 200);
  77.   delay(500);
  78.   tone(8, 400, 200);
  79.   delay(500);
  80.   tone(8, 600, 200);
  81.   delay(500);
  82.   tone(8, 800, 200);
  83.   delay(500);
  84.   tone(8, 600, 200);
  85.   delay(500);
  86.   tone(8, 400, 200);
  87.   delay(500);
  88.   tone(8, 200, 200);
  89.   delay(500);
  90.   tone(8, 100, 200);
  91.   delay(500);
  92.   noTone(8); //停止8号引脚发声
  93. }


  94. void xiaoyu15(){//小于15
  95. analogWrite(R,238);
  96.   delay(100);  
  97.   analogWrite(G,154);
  98.   delay(100);  
  99.   analogWrite(B,0);//RGB灯为橙色
  100.   delay(100);
  101.   myservo.attach(9);  // 控制线连接数字9
  102.   myservo.write(90);              // 舵机角度写入
  103.   delay(1000);
  104.   myservo.attach(9);  // 控制线连接数字9
  105.   myservo.write(0);              // 舵机角度写入
  106.   delay(1000);
  107. }
复制代码


4.png
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|Archiver|手机版|Arduino中文社区

GMT+8, 2024-11-28 17:52 , Processed in 0.075463 second(s), 19 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表