零成本学arduino教程——光敏电阻传感器
光敏传感器
光阻器是一个模拟传感器,作用类似于可变电阻器。当传感器暴露在光线下时,传感器的电阻降低。我们可以使用模拟输入引脚读取光电阻器上的电压,这与光阻器的电阻直接相关。
引脚名称
名字 | 描述 |
---|---|
VCC | 正电源 |
GND | 地 |
DO | 数字输出 |
AO | 模拟输出 |
操作
光阻传感器模块包括一个LDR(光依赖电阻器)系列与10K电阻器。AO 销连接 LDR 和 10K 电阻器。
AO 端上的电压取决于照明 - 即落在传感器上的光量。您可以通过将光驱光传感器的 AO 端连接到模拟输入引脚,然后使用该功能来读取此电压。analogRead()
条件 | 光照强度 | LDR 阻值 | 电压 | analogRead(value) |
---|---|---|---|---|
满月 | 0.1 | 1.25MΩ | 4.96 | 1016 |
深暮 | 1 | 250kΩ | 4.81 | 985 |
黄昏 | 10 | 50kΩ | 4.17 | 853 |
计算机监视器 | 50 | 16.2kΩ | 3.09 | 633 |
楼梯照明 | 100 | 9.98kΩ | 2.50 | 511 |
办公室照明 | 400 | 3.78kΩ | 1.37 | 281 |
阴天 | 1,000 | 1.99kΩ | 0.83 | 170 |
全日光 | 10,000 | 397Ω | 0.19 | 39 |
直射 | 100,000 | 79Ω | 0.04 | 8 |
代码解析:
- 换算函数
analogRead()
// 根据表格选择正确的GAMMA和RL10
const float GAMMA = 0.7;
const float RL10 = 50; //光照强度为10,相当于表格黄昏的电阻50K欧// Convert the analog value into lux value:
int analogValue = analogRead(A0);
float voltage = analogValue / 1024. * 5;
float resistance = 2000 * voltage / (1 - voltage / 5);
float lux = pow(RL10 * 1e3 * pow(10, GAMMA) / resistance, (1 / GAMMA));
将返回值转换为照明值的以下代码(在 lux 中):analogRead()
①RL10
:光敏电阻在10lux照明水平下的电阻,查表可得:光照强度为10,相当于表格黄昏的电阻50K欧。
②GAMMA
:log(电阻值®) / log(光照强度(lux))图的斜率
- LCD位置设置函数
lcd.setCursor(2, 0)
参数
2
:开头跳过两格
0
:第一行
模拟器示例
1.数字仿真
点击此处Photoresistor Digital Example开始仿真
2.模拟仿真
点击此处Photoresistor Analog Example开始仿真
源代码
1.数字仿真代码
#include <LiquidCrystal_I2C.h>#define LDR_PIN 2LiquidCrystal_I2C lcd(0x27, 20, 4);void setup() {pinMode(LDR_PIN, INPUT);lcd.init();lcd.backlight();
}void loop() {lcd.setCursor(2, 0);lcd.print("Room: ");if (digitalRead(LDR_PIN) == LOW) {lcd.print("Light!");} else {lcd.print("Dark ");}delay(100);
}
2.模拟仿真代码
/*Photoresistor (LDR) Analog DemoCopyright (C) 2021 Uri Shaked.https://wokwi.com/arduino/projects/305193627138654786
*/#include <LiquidCrystal_I2C.h>#define LDR_PIN 2// LDR Characteristics
const float GAMMA = 0.7;
const float RL10 = 50;LiquidCrystal_I2C lcd(0x27, 20, 4);void setup() {pinMode(LDR_PIN, INPUT);lcd.init();lcd.backlight();
}void loop() {int analogValue = analogRead(A0);float voltage = analogValue / 1024. * 5;float resistance = 2000 * voltage / (1 - voltage / 5);float lux = pow(RL10 * 1e3 * pow(10, GAMMA) / resistance, (1 / GAMMA));lcd.setCursor(2, 0);lcd.print("Room: ");if (lux > 50) {lcd.print("Light!");} else {lcd.print("Dark ");}lcd.setCursor(0, 1);lcd.print("Lux: ");lcd.print(lux);lcd.print(" ");delay(100);
}
结束
不是每个人都能功成名就,我们中有些人注定要在日常生活的点滴中寻找生命的意义。 – 《生活大爆炸》
零成本学arduino教程——光敏电阻传感器相关推荐
- 零成本学arduino教程——热敏电阻传感器
模拟温度传感器:NTC(负温度系数)热度. 你可以想到一个热敏电阻非常类似于光敏电阻,但决定热敏电阻温度有多种因数.温度变化也改变,阻力也改变. 引脚名称 名字 描述 VCC 正电源 OUT 输出信号 ...
- 零成本学arduino教程——74hc165扩展寄存器教程
原理图 引脚名称 针 描述 D0-D7型 并行输入 PL 并联负载(低电平有效) CP 串行时钟 CE 时钟使能(低电平有效) Q7 串行输出 Q7_N 反相串行输出(通常不使用) DS 串行输入* ...
- 零成本学arduino教程—— joystick操纵杆
joystick操纵杆 带两个轴(水平/垂直)和一个集成按钮的模拟操纵杆. 引脚名称 名字 描述 VCC 正电源 VERT 垂直轴输出(模拟) HORZ 水平轴输出(模拟) SEL 按钮 GND 地 ...
- 零成本学arduino——74hc595寄存器教程
本文介绍如何用arduino控制74hc595 1.知识预览 对74hc595寄存器进行介绍 shiftOut()函数介绍 对控制程序进行介绍 2.仿真预览 点击74hc595开始仿真 3.74hc5 ...
- 零成本学Arduino单片机之入门
图1 Arduino单片机的Proteus仿真 我的Arduino博客:http://www.eefocus.com/zhang700309/blog/ 一.前言 Arduino是由Mass ...
- 视频教程- 办公三部曲—零基础学WORD教程-Office/WPS
办公三部曲-零基础学WORD教程 微博认证教育博主,office及设计专业培训讲师.百度.新浪.搜狐.网易等自媒体签约作者 Bob ¥59.00 立即订阅 扫码下载「CSDN程序员学院APP」,100 ...
- GitHub热榜,零基础学C++教程
点击上方"小白学视觉",选择加"星标"或"置顶" 重磅干货,第一时间送达 贾浩楠 发自 凹非寺 量子位 报道 | 公众号 QbitAI 零基 ...
- 百度贴吧自动发帖_引流网赚之百度贴吧引流窍门:实操引流教程百度贴吧零成本自动顶帖+10分钟学会豆瓣顶帖引流...
引流网赚之百度贴吧窍门:实操引流教程<百度贴吧零成本自动顶帖>+<10分钟学会豆瓣顶帖引流> 关于百度贴吧的引流方式有很多,像常见的关键词排名引流,比如,百度贴吧引流效果好不好 ...
- python入门到精通需要学多久-廖雪峰python教程要学多久-零基础学Python需要多久...
零基础学python大约需要多久 看不同的人,不同的学习能和基础. 像我通java,vc ,javascript,groovy,vb,c 接触过c#,delphi,asp,E语言, 用过dreamwa ...
- python零基础入门教程学习要多久-廖雪峰python教程要学多久-零基础学Python需要多久...
零基础学python大约需要多久 看不同的人,不同的学习能和基础. 像我通java,vc ,javascript,groovy,vb,c 接触过c#,delphi,asp,E语言, 用过dreamwa ...
最新文章
- java引用类型使用场景_下面有关java的引用类型,说法正确的有?
- 2021算法竞赛入门班第九节课【线段树】练习题
- java前沿技术_Java语言就业前景如何?这4个就业方向都很吃香
- md0 mysql_mysql 数据合并
- SAP CRM product customizing下载的第四个队列
- 最新!MongoDB 重磅发布 MongoDB 5.0 和无服务器 Atlas
- 计算机科学创新大赛,计信学院举办第六届科技创新小发明大赛
- Java| 编译和反编译
- 关于近期卡巴斯基6.0授权文件被封的解决方案
- matlab语法——subplot函数
- swiper、vue-awsome-swiper插件使用
- 微生物组-扩增子16S分析和可视化(2022.7本周开课)
- c语言输出矩形及对角线,[新]C语言期末复习,经典练习题+知识点总结+模拟考题 三位一体,完胜c语言!!!!考期必备神器...
- JPK Data Processing AFM数据处理
- 算法——机器学习——无监督学习—— K均值(K-means)图解动画
- 晶圆代工由一家独大,到三足鼎立,再到群雄涿鹿,到底经历了什么?
- 光伏产业红与黑 需求寒冬背后暗藏分布式春天
- 分账系统价格表的构成你了解吗?
- 创建虚拟环境时ImportError:No Module named zipp
- python批量删除微信好友_我用Python找出了删除我微信的所有人并将他们自动化删除了...