Menu
CoddyTech

照度计

本课属于 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,这样光线变暗时,灯条也能缩短。

challenge icon

挑战

中等

光线模块的 AO 接在 A0 上,光条的 LED 分别接在引脚 10、11 和 12 上:

  • int lightPercent():光线昏暗时为 0,光线明亮时为 100
  • void 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
}
quiz icon自我测试

这节课包含一个小测验。开始学习即可作答,并记录你的进度。

输入中的所有课

自己练习: Arduino 在线编辑器