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);
}
向topdog老师学习 沧海笑1122 发表于 2020-9-29 21:10
向topdog老师学习
向沧海笑1122老师学习。
页:
[1]