我们都知道人是通过耳朵、眼睛、鼻子、皮肤等器官上的细胞来获取外界的温度、湿度、光强度等信息。那么单片机又是通过什么来获取外界信息的呢?
我们先来看下效果:我们可以看到随着模拟光线强度的变化,LED灯也跟随着一起变亮变暗。
我们来介绍单片机获取外界信息众多传感器中的一种:光敏电阻
单片机获取光线强度原理:光敏电阻主要是将光线的强度转化成变化的电阻;然后通过一个匹配的分压电阻来将变化的电阻转化成变化的电压,单片机通过模数转化模块(A/D)来读取模拟电压从而获取到光线的强度。
我们同样可以通过ThinkerCAD来做这个实验
代码:
int LED_PIN = 11;
int LIGHT_PIN = A0;
int low = 520; // 这里的low和high数值可以根据实际读取到的最大最小数据进行设置
int high = 1000;
void setup() {
Serial.begin(9600); // 打开串口,波特率9600
}
void loop() {
int guangmin=analogRead(LIGHT_PIN); //读入光敏电阻产生的模拟信号(范围:0~1023)
Serial.print("value= ");
Serial.print(guangmin);
guangmin=map(guangmin,low,high,0,255); //map函数 将0~1023范围映射到255~0
//这里反着写255,0;因为想实现随着光强增加LED变亮
Serial.print("->");
Serial.println(guangmin);
analogWrite(LED_PIN,guangmin); //让6号引脚发出PWM波
delay(100); //延时100ms
}
不同的光敏电阻有有不同的阻值,这里可以通过修改下面两个值来匹配实际的光敏电阻传感器
int low = 520; // 这里的low和high数值可以根据实际读取到的最大最小数据进行设置
int high = 1000;
比如我这里的值是从530左右到950左右,那么我们小的往下再取小一点520,大的再取大一点到1000,主要是为了防止临界状态不清晰效果不佳。