本节书摘来自华章出版社《microduino实战》一 书中的第3章,第3.7节,作者:姚琪 杨立斌,更多章节内容可以访问云栖社区“华章计算机”公众号查看。
前面的实践都是在对数字i/o的操作以及pwm输出,本节会通过一个光敏电阻的练习来学习模拟输入。
我们所使用的微控制器是数字芯片,其数字i/o口只能有两种状态:高电平或低电平,出现中间状态芯片是不识别或无法输出的。其中pwm输出,尽管在程序中用analogwrite()这样的函数,但实际上也还是一种数字的输出。
这里要使用的i/o模拟输入功能,其实是通过adc的电路,将环境中获取的模拟量(连续值),通常是电压值转化成一个数字量,该数值与电压值成正比例关系。
基本原理
光敏电阻是一种将光信号转换成电信号的半导体元器件,如图3-29所示。在没有光线的情况下,电阻值很高,而当受到光照时,电阻值会下降。光照愈强,阻值愈低。光敏电阻跟普通电阻一样,没有极性,交流或直流都能使用。
在晚上没有光线时,光敏电阻的阻值在几兆欧左右,而在白天强光照射的情况下,其电阻值下降至几百欧到几千欧。如图3-30所示,光线越强,光敏电阻和固定电阻总的电阻越小,电流增大,使得定值电阻两端电压增大,而光敏电阻两端电压减小。可见光敏电阻两端的电压可以直接反映光线强度,即两端电压越高,光线越弱。所以我们可以认为,如果测到的电压高于某个值,就说明天黑了;而低于某个值,说明天亮了。通过这样的方式来模拟一个自动的路灯。
具体步骤
硬件清单
硬 件 名 称 数 量 功 能
microduino-core 1 核心控制板
microduino-usbttl 1 下载程序,串口通信
usb数据线 1 连接计算机和usb串口设备
光敏电阻 1 感应光的强度
220Ω的电阻 2 限流,保护led
led 1 发光二极管
面包板 1 万能连接板
导线 若干 连接电子元器件
根据上面提供的硬件清单准备好多种元器件,然后根据连接示意图搭建电路,如
图3-31所示。

程序清单
程序中用于判断的参考值是一个经验值,可以根据实际情况在程序中修改该参考值。当然,另一种可选的方案是,将外部的固定电阻换成一个100kΩ的可调电阻,同样可以用来调节开关灯的阈值。
将程序清单中的源代码输入arduino ide中,并编译下载到控制板芯片中。
观察现象
当用灯照着光敏电阻时,即模拟白天时,led是熄灭的;而当用遮盖物罩住光敏电阻时,即模拟晚上,led是点亮的。