【雕爷学编程】Arduino动手做(02)---光敏电阻模块3
37款传感器与执行器的提法,在网络上广泛流传,其实Arduino能够兼容的传感器模块肯定是不止这37种的。鉴于本人手头积累了一些传感器和执行器模块,依照实践出真知(一定要动手做)的理念,以学习和交流为目的,这里准备逐一动手尝试系列实验,不管成功(程序走通)与否,都会记录下来—小小的进步或是搞不掂的问题,希望能够抛砖引玉。
【Arduino】168种传感器模块系列实验(资料代码+仿真编程+图形编程)
实验二:光敏电阻传感器模块
程序九:随着光照强度变小,LED越亮,且自动设置最大值与最小值
实验参考开源代码(Arduino):
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 | /* 【Arduino】168种传感器模块系列实验(资料代码+仿真编程+图形编程) 程序九:随着光照强度变小,LED越亮,且自动设置最大值与最小值 实验接线: LED灯接D3(PWM脚) 光敏电阻模块 Uno + Vcc G GND A0 A0 */ const int ldrPin = A0; //光敏电阻连接引脚A0 const int ledPin = 3; //LED模拟(PWM)输出引脚3 int minVal = 1023; //设定当前环境光的最小值 int maxVal = 0; //设定当前环境光的最大值 void setup() { pinMode(ldrPin, INPUT); pinMode(ledPin, OUTPUT); Serial.begin(9600); analogWrite(ledPin, 255); //点亮LED,标示检测开始 for ( int i = 0; i < 1000 ; i++) { //循环1000次检测当前的最小值和最大值 int val = analogRead(ldrPin); //获取光敏电阻的返回值 if (val > maxVal) { //若val大于maxVal maxVal = val; //将maxVal的值更改为val的值 } if (val < minVal) { //若val小于minVal minVal = val; //将minVal的值更改为val的值 } delay(5); } analogWrite(ledPin, 0); //LED熄灭,检测结束 Serial.print( "max =" ); Serial.println(maxVal); //输出最大值 Serial.print( "min =" ); Serial.println(minVal); //输出最小值 } void loop() { // put your main code here, to run repeatedly: int val = analogRead(ldrPin); //获取光敏电阻的返回值 val = constrain(val, minVal, maxVal); val = map(val, minVal, maxVal, 0, 255); analogWrite(ledPin, val); //模拟输出,LED亮度发生变化 Serial.print( "Value : " ); Serial.println(val); //将映射后的值输出到串口监视器中 } |
测试实验场景图
程序十:无光时输出1,有光时输出0(需调整触发阕值)
实验参考开源代码(Arduino):
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 | /* 【Arduino】168种传感器模块系列实验(资料代码+仿真编程+图形编程) 程序十:无光时输出1,有光时输出0(需调整触发阕值) 实验接线: 光敏电阻模块 Uno + Vcc G GND D0 D2 */ void setup(){ pinMode(2, INPUT); //设置D2口为输入 Serial.begin(9600); } void loop(){ int temp = digitalRead(2); //赋值数字变量 Serial.println(temp);将变量输出到串口 delay(200); } |
实验串口输出截图
实验说明——模块的D0口接入arduino Pin2上,实验串口只输出1和0两个数字,默认为输出1,高电平,有光的时候输出低电平 0V(数值0),无光的时候输出高电平 5V(数值1)。这里的有光指的是通过模块上电位器调节的一个阈值(临界值),在室内正常光下调灭模块上的开关指示灯,外加光线时指示灯能亮为准。
程序十一:简易智能光控开关,白天灯灭晚上灯亮
实验参考开源代码(Arduino):
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 | /* 【Arduino】168种传感器模块系列实验(资料代码+仿真编程+图形编程) 程序十一:简易智能光控开关,白天灯灭晚上灯亮 LED(接入板载灯D13脚) 实验接线: 光敏电阻模块 Uno + Vcc G GND D0 D2 */ void setup() { pinMode(2, INPUT); //将2号数字口设置为输入状态,13号数字口设置为输出状态 pinMode(13, OUTPUT); } void loop() { if (digitalRead(2)) { //如果有光(白天) digitalWrite(13, HIGH); //则灯熄灭 } else { digitalWrite(13, LOW); //否则灯亮(夜晚) delay(1000); } } |
Arduino实验场景图
开源仿真编程(Linkboy V4.2)
开源图形编程(Mind+、编玩边学)
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· .NET10 - 预览版1新功能体验(一)