照度计
本课属于 Coddy Arduino 学习旅程的“输入”单元。第 22 课,共 22 课。
这节课会把本单元的内容整合起来:制作一个光线计,按百分比打印光照强度,并用 3 个 LED 组成的灯条显示,类似手机上的信号格。
把任务拆分成多个函数,每个函数只负责一项任务,这样 loop() 看起来就像一段说明:
void loop() {
int percent = lightPercent();
showLevel(percent);
// 输出百分比
}lightPercent() 会读取光线模块的 AO 并返回 0(暗)到 100(亮)之间的值。光线增强时,AO 的值会降低,所以要反向映射:map(reading, 0, 1023, 100, 0) 会把 1023 转换为 0,把 0 转换为 100。
showLevel(int percent) 会为灯条中的每个 LED 设置各自的阈值:第一个在超过 25 时亮起,第二个在超过 50 时亮起,第三个在超过 75 时亮起。每个 LED 都需要对应的 else,这样光线变暗时,灯条也能缩短。
挑战
中等光线模块的 AO 接在 A0 上,光条的 LED 分别接在引脚 10、11 和 12 上:
int lightPercent():光线昏暗时为 0,光线明亮时为 100void showLevel(int percent):数值高于 25 时引脚 10 亮起,高于 50 时引脚 11 亮起,高于 75 时引脚 12 亮起- 在
loop()中调用这两个函数,输出百分比并等待 200 ms
按“运行”,移动光线滑块,然后按“检查”。
亲手试试
const int lowPin = 10;
const int midPin = 11;
const int highPin = 12;
// 在这里编写 int lightPercent()
// 在这里编写 void showLevel(int percent)
void setup() {
pinMode(lowPin, OUTPUT);
pinMode(midPin, OUTPUT);
pinMode(highPin, OUTPUT);
Serial.begin(9600);
}
void loop() {
// 读取光照百分比,在指示条上显示并打印出来,然后等待 200 ms
}
这节课包含一个小测验。开始学习即可作答,并记录你的进度。
输入中的所有课
自己练习: Arduino 在线编辑器