《Microduino实战》——3.7 光敏电阻

3.7 光敏电阻

前面的实践都是在对数字I/O的操作以及PWM输出,本节会通过一个光敏电阻的练习来学习模拟输入。
我们所使用的微控制器是数字芯片,其数字I/O口只能有两种状态:高电平或低电平,出现中间状态芯片是不识别或无法输出的。其中PWM输出,尽管在程序中用analogWrite()这样的函数,但实际上也还是一种数字的输出。
这里要使用的I/O模拟输入功能,其实是通过ADC的电路,将环境中获取的模拟量(连续值),通常是电压值转化成一个数字量,该数值与电压值成正比例关系。

  1. 基本原理
    光敏电阻是一种将光信号转换成电信号的半导体元器件,如图3-29所示。在没有光线的情况下,电阻值很高,而当受到光照时,电阻值会下降。光照愈强,阻值愈低。光敏电阻跟普通电阻一样,没有极性,交流或直流都能使用。

在晚上没有光线时,光敏电阻的阻值在几兆欧左右,而在白天强光照射的情况下,其电阻值下降至几百欧到几千欧。如图3-30所示,光线越强,光敏电阻和固定电阻总的电阻越小,电流增大,使得定值电阻两端电压增大,而光敏电阻两端电压减小。可见光敏电阻两端的电压可以直接反映光线强度,即两端电压越高,光线越弱。所以我们可以认为,如果测到的电压高于某个值,就说明天黑了;而低于某个值,说明天亮了。通过这样的方式来模拟一个自动的路灯。

  1. 具体步骤
    硬件清单

硬 件 名 称 数  量 功  能
Microduino-Core 1 核心控制板
Microduino-USBTTL 1 下载程序,串口通信
USB数据线 1 连接计算机和USB串口设备
光敏电阻 1 感应光的强度
220Ω的电阻 2 限流,保护LED
LED 1 发光二极管
面包板 1 万能连接板
导线 若干 连接电子元器件

根据上面提供的硬件清单准备好多种元器件,然后根据连接示意图搭建电路,如
图3-31所示。

程序清单

/* 功能描述:
 * 用光敏电阻感应周围环境光的强度,根据检测到的数值与参考值作比较,判断是白天
 * 还是黑夜
 *
 * 引脚映射:
 *  D13 --> LED
 *  A0 --> 光敏电阻
 */
int ledPin = 13;
int rPin = A0;
int ref =600;  //光线强度参考值,此处数值要略大于所测得的数据但小于灯光下的数据

void setup ()
{
    Serial.begin(115200);        //初始化串口通信,设置115?200波特率
    pinMode(ledPin,OUTPUT);    //将D13引脚设置为输出
}
void loop()
{
    int n = analogRead(rPin);    //读取光敏电阻的电压,读到的数值为0~1023
    Serial.println(n);
    if (n>= ref )            //对光线强度进行判断,如果高于参考值,则点亮LED,否则关闭
        digitalWrite(ledPin,HIGH);
    else
        digitalWrite(ledPin,LOW);
    delay(1000);
}

程序中用于判断的参考值是一个经验值,可以根据实际情况在程序中修改该参考值。当然,另一种可选的方案是,将外部的固定电阻换成一个100KΩ的可调电阻,同样可以用来调节开关灯的阈值。
将程序清单中的源代码输入Arduino IDE中,并编译下载到控制板芯片中。

  1. 观察现象
    当用灯照着光敏电阻时,即模拟白天时,LED是熄灭的;而当用遮盖物罩住光敏电阻时,即模拟晚上,LED是点亮的。
时间: 2024-09-10 22:03:36

《Microduino实战》——3.7 光敏电阻的相关文章

《Microduino实战》——导读

前 言 自2005年Arduino横空出世以来,开源硬件就像Linux一样,很快风靡全球.Arduino最初只是为学生设计的一款既便宜又易用的微控制器板,但如今在"创客运动"的大背景下取得了巨大的成功. Arduino使用的是Atmel VAR 8位微控制器,是一个软硬件开源的平台.不仅开放软件的源代码,而且硬件电路设计图同样可以从网络上下载.任何用户都可以利用这些开放的资源,再根据自己的需要进行修改和定制,发布适合自己的软件工具和硬件设计.此外,它不像传统的微控制器程序,只有有一定电

《Microduino实战》——1.4 开源硬件

1.4 开源硬件 开源硬件是对开源软件领域的一种扩展,指的是通过与自由及开放源代码软件相同的方式设计的计算机和电子硬件.与开源软件不同的是,开源硬件最终会涉及物理实体的生产与制造,所以是自由的,但并不免费.这里的自由是指发布硬件设计的详细信息,如电路图.材料列表和电路板布局数据,而且通常会使用开源软件来驱动硬件. 开源的IP核是一种类型的开源硬件.IP核是指在数字电路领域中描述硬件设计功能的可重用模块.比如,OpenSPARC是SUN公司一款开源的处理器设计,使用者可以用来在FPGA等可编程芯片

《Microduino实战》——2.4 Microduino WRT系列

2.4 Microduino WRT系列 MicroWRT核心 MicroWRT[3]是Makermodule为OpenWRT设计的一款全新开发板.其核心芯片采用联发科的MT7620A SoC芯片,内嵌的是MIPS24KEc处理器,支持DDR2内存,配备64/128M Flash,支持SD.PCI-E.I2S,能够实现NAS.网络摄像头.机器人.OpenCV. MicroWRT是专门为OpenWRT设计的.OpenWRT是一个高度模块化.自动化的嵌入式Linux系统,拥有强大的网络组建和扩展性,

《Microduino实战》——2.1 Microduino系列产品

2.1 Microduino系列产品 Microduino 是尺寸最小的开源电子积木,采用了Microduino独有的 U 型 27 Pin 接口规范(Upin-27),长25.4mm,宽27.94mm,如一枚1元硬币的大小.多个Microduino模块通过Upin-27堆叠在一起,可搭建一个无线物联网的小系统,如 图2-1所示.整个硬件体积很小,非常容易安装,而且不需要使用额外跳线,使得电路搭建过程很方便,不会因连线错误而出现短路的现象. 图2-1 无线物联网模块 目前,Microduino推

《Microduino实战》——2.3 Microduino STM32核心系列

2.3 Microduino STM32核心系列 除了兼容Arduino的核心模块,Microduino也提供了Microduino-CoreSTM32核心模块,采用 STM32F103CBT6芯片,是72MHz 32位的ARM微控制器,具和128KB Flash和20KB SRAM,如图2-7所示.该核心模块采用Upin-27规范标准,其中22个引脚可用作数字I/O,8个可用作模拟I/O,1路串口,13路PWM输出,而且每个I/O都具有中断功能.更多资料见参考[2].![screenshot]

《Microduino实战》——2.5 Microduino传感器系列

2.5 Microduino传感器系列 Microduino也开发了传感器系列模块,需要用Microduino-Sensorhub才能与Microduino-Core/Core+连接.下面简单地描述一下现有的传感器及其功能.扩展模块名称 功能描述扩展模块名称 功能描述Microduino-Lantern Microduino-Lantern是单总线控制的彩色LED灯,采用WS2811协议,内置IC控制芯片 Microduino-Bright LED Microduino-Bright LED是贴

《Microduino实战》——1.5 如何选择开源硬件

1.5 如何选择开源硬件 开源硬件中有很多选择的.在选择时,可以通过以下的考虑点进行综合评估,选择适合自己的一款开源硬件,这也可以说是开始某项工程必须要完成的工作. 易学性Arduino和Microduino不需要太多的硬件知识和编程的专业知识就能够轻松上手,不会有太多的困难.而树莓派.pcDuino都需要安装操作系统,如果没有一定Linux等嵌入式基础知识的话,开发起来会有很多困难. 功能.性能.尺寸的要求Arduino和Microduino有良好的接口扩展性,如果要接入外围的控制器.传感器,

《Microduino实战》——2.2 兼容Arduino系列产品

2.2 兼容Arduino系列产品 兼容Arduino的系列产品可以分为Microduino AVR核心系列模块.扩展模块以及扩展板,其接口标准都采用Upin-27规范标准,如图2-2所示.扩展模块包括以太网接口.USB接口的有线通信模块,支持RF.蓝牙.NFC.Zigbee.WiFi和GPRS/GSM无线通信模块,支持三轴陀螺仪.加速度传感器.GPS的传感器模块,支持OLED.TFT的显示模块,以及电机驱动模块等. 2.2.1 Microduino AVR核心系列模块 Microduino A

《Microduino实战》——2.7 总结

2.7 总结 本章首先介绍了Microduino的系列产品,重点围绕着兼容Arduino的核心模块以及对应的扩展模块介绍,最后列出了几个开源项目,让读者从整体上了解Microduino的系列产品以及适用的范围.