ArduinoUNO实战-第九章-光敏电阻或亮度传感器

目录
目标
天黑请开灯,当室内光线充足时候LED关闭,当室内光线变暗时候点亮LED
理论学习
- 光敏电阻的特性是光敏电阻的阻值随着光照强度的变大而减小。换句话说,光线约亮电阻越小,光线越暗电阻越大。
- 本实验选用1K电阻和光敏电阻串联,根据电阻分压原理,光线越暗,光敏电阻两段的电压越大
- 本实验通过A5引脚检测光敏电阻两段的电压值来检测光强。
注:A0口是10位模数转换接口,AD转换后的满值为1023,而一般情况下Catduino主板设定的参考电压为VCC(这里是5V),5V即是1023,由于光敏电阻和10K欧电阻串联接到5V和GND之间,根据电阻分压原理,(1023-AD0)/AD0=R/10K。其中AD0即从A0口上读到的AD转换后的数值,R是待测光敏电阻阻值,通过该式可算得阻值并判断周围光的强度。
光敏电阻实物图
IDE
/*
测试光敏电阻,亮度传感器
*/
// 板载led 13
#define LED 13
// 定义光敏电阻读取
#define ADPin A5 // 定义接受光敏电阻的值
int ADBuffer = 0;
// the setup function runs once when you press reset or power the board
void setup() {
// 打开串口
Serial.begin(9600);
// LED设置为输出
pinMode(LED, OUTPUT);
}
// the loop function runs over and over again forever
void loop() {
// 光敏电阻测试
ADLed();
}
void ADLed()
{
// 读取电位器的值
ADBuffer = analogRead(ADPin);
Serial.print("AD= ");
Serial.println(ADBuffer);
if (ADBuffer < 100) 注意此处100
{
digitalWrite(LED, HIGH);
}
else
{
digitalWrite(LED, LOW);
}
delay(500);
}
根据电阻分压原理,(1023-AD0)/AD0=R/10K。其中AD0即从A0口上读到的AD转换后的数值,R是待测光敏电阻阻值,所以光照越强,R越小,AD0读取到的值越大,AD0读取到的数据是0
1023415
参照如上公式,如果是光敏电阻的话,光线越暗,阻值越大,所以应该判断ADBuffer > 800则led点亮,而且读取到的AD0的数据是0
如果是亮度传感器,则光线越暗,阻值越大,但是换算之后读取到值越小,所以应该判断判断ADBuffer < 100则led点亮