(15)趣味单片机新玩法-单片机的“感知器官”(光敏电阻)

我们都知道人是通过耳朵、眼睛、鼻子、皮肤等器官上的细胞来获取外界的温度、湿度、光强度等信息。那么单片机又是通过什么来获取外界信息的呢?

我们先来看下效果:我们可以看到随着模拟光线强度的变化,LED灯也跟随着一起变亮变暗。

实物效果

我们来介绍单片机获取外界信息众多传感器中的一种:光敏电阻

光敏电阻

单片机获取光线强度原理:光敏电阻主要是将光线的强度转化成变化的电阻;然后通过一个匹配的分压电阻来将变化的电阻转化成变化的电压,单片机通过模数转化模块(A/D)来读取模拟电压从而获取到光线的强度。

我们同样可以通过ThinkerCAD来做这个实验

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,主要是为了防止临界状态不清晰效果不佳。


获取的A/D值变化

你可能感兴趣的:((15)趣味单片机新玩法-单片机的“感知器官”(光敏电阻))