查看: 403|回复: 2

PIR和光线控制的小夜灯

[复制链接]
  • TA的每日心情
    开心
    2020-10-18 00:06
  • 签到天数: 324 天

    [LV.8]以坛为家I

    发表于 2020-9-22 23:12 | 显示全部楼层 |阅读模式
    本帖最后由 topdog 于 2020-9-24 00:47 编辑

    解答网友PIR和光线控制的小夜灯的提问,
    rgb_pir_1.JPG

    1:光线暗和人走近RGB灯亮,或的逻辑关系。Sensor-PIR红外热释电运动传感器能检测运动的人或动物身上发出的红外线,输出开关信号,可以应用于各种需要检测运动人体的场合。详细资料见美科科技WIKI
    Sensor-Light-A1是光敏亮度检测传感器模块。光传感器是利用光敏电阻将光信号转换为电信号的传感器,它的敏感波长在可见光波长附近,包括红外线波长和紫外线波长。详细资料见美科科技WIKI
    光线暗   ||   人走近       逻辑结果
    1           ||        1           ——>1
    1           ||        0           ——>1
    0           ||        1           ——>1
    0           ||        0           ——>0

    2:通过if…else语句,用户可以让Arduino判断某一个条件是否达到,并且根据这一判断结果执行相应的程序。

    3:四脚共阳极RGB,一般是接高电平,这里介绍一个小技巧,把共阳极作为一个总开关,控制此管脚高电平使能,开灯关灯就非常方便,共阴极则相反。

    程序如下:
    const int PIR_PIN = 2;
    const int CONTRONL_PIN = 12;
    const int RED_PIN = 11;
    const int BLUE_PIN = 10;
    const int GREEN_PIN = 9;
    const int LINGHT_PIN = A0;
    
    void setup()
    {
      Serial.begin(115200);
      pinMode(PIR_PIN, INPUT);    //PIR传感器接口
      pinMode(LINGHT_PIN, INPUT); //光线感应
      pinMode(RED_PIN, OUTPUT);   //红接口
      pinMode(BLUE_PIN, OUTPUT);  //蓝接口
      pinMode(GREEN_PIN, OUTPUT); //绿接口
      pinMode(CONTRONL_PIN, OUTPUT);
    }
    
    void loop()
    {
    
      bool PIR_State = digitalRead(PIR_PIN);
    
      /* Serial.println(PIR_State);
      delay(100);
      Serial.println(analogRead(Light_pin));
      delay(100);
      */
    
      if (analogRead(LINGHT_PIN) < 500 || PIR_State) //环境光线过低或者测到有人亮彩灯
      {
        colorRGB(random(0, 255), random(0, 255), random(0, 255));
      }
      else
      {
        TurnOff();
      }
      delay(1000);
    }
    
    void colorRGB(int red, int green, int blue)
    { //循环彩色灯
      digitalWrite(CONTRONL_PIN, HIGH);
      analogWrite(RED_PIN, 255 - red);
      analogWrite(BLUE_PIN, 255 - blue);
      analogWrite(GREEN_PIN, 255 - green);
    }
    
    void TurnOff()
    {
      digitalWrite(CONTRONL_PIN, LOW);
    }

  • TA的每日心情
    开心
    2019-7-17 13:13
  • 签到天数: 264 天

    [LV.8]以坛为家I

    发表于 2020-9-29 21:10 | 显示全部楼层
    向topdog老师学习
  • TA的每日心情
    开心
    2020-10-18 00:06
  • 签到天数: 324 天

    [LV.8]以坛为家I

     楼主| 发表于 2020-10-1 22:39 | 显示全部楼层

    向沧海笑1122老师学习。
    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    热门推荐

    关于使用DHT11库编译错误的补救资源
    关于使用DHT11库编译错误
    有些小伙伴使用从ArduinoIDE的库管理下载的DHT11库的时候可能会遇到编译错误的问题,
    我的ESP8266继电器也不工作
    我的ESP8266继电器也不工
    代码是下的某音上的爆改车间主任控制灯泡的那一集 #define BLINKER_WIFI #define BLIN
    各位大佬还请帮忙一看
    各位大佬还请帮忙一看
    最近在用Arduino读取一个惯导传感器数据,已经通过USB—TTL在电脑端验证过传感器是可
    arduinoUNO 用两个PIN控制一个spi设备(RFID)
    arduinoUNO 用两个PIN控制
    我已经测试,MRFC522的chipSelectPin 是正常的。当pin为低电平时可以正enable并都读写
    Arduino物联网开发实例教程
    Arduino物联网开发实例教
    [md] **blinker用户交流群 301438087 (仅限github已Star的用户加群)** ## bli
    Copyright   ©2015-2016  Arduino中文社区  Powered by©Discuz!   
    快速回复 返回顶部 返回列表