如视频无法正常播放,可点击这里前往B站观看
本课示例代码:(无法复制本站示例程序代码?请点击这里获得解决方法。)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 |
/* * TC-Light-Simple-OnOff * 太极创客-环保小夜灯-示例程序-1 * by 太极创客 (2017-11-21) * www.taichi-maker.com * * 此示例程序为配合太极创客制作的 * 零基础入门学用ARDUINO教程-智能应用篇使用 * * 基本功能介绍: * 用户可通过传感器控制RGB-LED点亮和关闭 * 用户可以通过变量 ledR、ledG、ledB 自定义RGB-LED颜色 * 小夜灯配备人体红外感应传感器以及光敏电阻实现照明自动化 * * 基本电路连接说明: * 共阴极RGB-LED引脚R 连接 Arduino控制器引脚6 * 共阴极RGB-LED引脚G 连接 Arduino控制器引脚5 * 共阴极RGB-LED引脚B 连接 Arduino控制器引脚3 * 红外人体感应模块信号输出引脚 连接 Arduino控制器引脚8 * 光敏电阻分压电路信号输出引脚 连接 Arduino控制器引脚A0 * * 如需获取太极创客-环保小夜灯的具体电路连接 * 请参见太极创客网站: www.taichi-maker.com * */ #define rLedPin 6 //RGB-LED引脚R #define gLedPin 5 //RGB-LED引脚G #define bLedPin 3 //RGB-LED引脚B #define irSensorPin 8 //红外人体感应模块信号输出 #define lightSensorPin A0 //光敏电阻分压电路信号输出 // 用户可以通过变量 ledR、ledG、ledB 自定义RGB-LED颜色 int ledR = 99; //R Led 亮度 int ledG = 185; //G Led 亮度 int ledB = 33; //B Led 亮度 bool irReading; //存储红外人体感应模块输出 int lightReading; //存储光敏电阻分压电路信号输出 void setup() { //设置引脚为相应工作模式 pinMode(rLedPin, OUTPUT); pinMode(gLedPin, OUTPUT); pinMode(bLedPin, OUTPUT); pinMode(irSensorPin, INPUT); Serial.begin(9600); Serial.println("Welcome to Taichi-Maker RGB Led Night-Light."); } void loop() { irReading = digitalRead(irSensorPin); //读取红外人体感应模块 lightReading = analogRead(lightSensorPin); //读取光敏电阻分压电路信号输出 if(irReading == HIGH && lightReading >= 500){ //如感应到人且亮度达到需照明程度 lightOn(1); //点亮小夜灯照明 } else { //如未感应到人且亮度未达到需照明程度 lightOn(0); //保持小夜灯熄灭 } //通过串口监视器实时输出各个传感器检测的数据结果 //可用于调试小夜灯工作参数使用 Serial.println(""); Serial.println("==========================="); Serial.print("irReading = "); Serial.println(irReading); Serial.print("lightReading = "); Serial.println(lightReading); Serial.println("==========================="); delay(50); } //以下lightOn函数通过参数on的数值 //来控制小夜灯RGB-LED是否点亮 void lightOn(bool on){ if (on == 1) { //如参数on的数值为1则点亮小夜灯 analogWrite(rLedPin, ledR); delay(10); analogWrite(gLedPin, ledG); delay(10); analogWrite(bLedPin, ledB); delay(10); } else { //否则保持小夜灯熄灭 analogWrite(rLedPin, 0); delay(10); analogWrite(gLedPin, 0); delay(10); analogWrite(bLedPin, 0); delay(10); } } |