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是待测光敏电阻阻值,通过该式可算得阻值并判断周围光的强度。

光敏电阻实物图

在这里插入图片描述

亮度传感器/光敏传感器

在这里插入图片描述
淘宝地址

接线图

在这里插入图片描述

Mind+

在这里插入图片描述

  • 首先analogRead读取5号引脚的值,范围是0-1023
  • 读取到之后通过串口输出参数,0表示第一个参数,并且每500ms输出一次到串口
  • 另外将读取到的的值判断如果大于800则让13号led点亮,否则熄灭
  • 发送串口时AD表示前缀

在这里插入图片描述

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~1023
参照如上公式,如果是光敏电阻的话,光线越暗,阻值越大,所以应该判断ADBuffer>800则led点亮,而且读取到的AD0的数据是0~415
如果是亮度传感器,则光线越暗,阻值越大,但是换算之后读取到值越小,所以应该判断判断ADBuffer<100则led点亮

在这里插入图片描述

  • 2
    点赞
  • 41
    收藏
    觉得还不错? 一键收藏
  • 5
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值