PIR和光线控制的小夜灯-Arduino中文社区 - Powered by Discuz! Archiver

topdog 发表于 2020-9-22 23:12

PIR和光线控制的小夜灯

本帖最后由 topdog 于 2020-9-24 00:47 编辑

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


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);
}

沧海笑1122 发表于 2020-9-29 21:10

向topdog老师学习

topdog 发表于 2020-10-1 22:39

沧海笑1122 发表于 2020-9-29 21:10
向topdog老师学习

向沧海笑1122老师学习。
页: [1]
查看完整版本: PIR和光线控制的小夜灯