Menu
CoddyTech

光照强度条

本课属于 Coddy Arduino 学习旅程的“显示器与传感器”单元。第 22 课,共 24 课。

圆环可以用条形显示一个数字:数字越大,点亮的像素越多。这里的数字表示光照强度。

和夜灯那课一样,光线变强时,A0 上的光线传感器读数会降低。先反转读数,这样数字越大就表示光线越强:

int light = 1023 - analogRead(A0);
int count = map(light, 0, 1023, 0, 16);

然后清空圆环,再点亮从像素 0 到 count 减 1 的像素:

ring.clear();
for (int i = 0; i < count; i++) {
  ring.setPixelColor(i, yellow);
}
ring.show();

clear() 可以让亮条缩短:如果不先清空,光线变暗时,之前光线较强时点亮的像素仍会保持点亮。

challenge icon

挑战

中等

光线传感器连接在 A0,灯环连接在引脚 6。制作一个光条:

  • 反转读数,让光线越强,数值越大
  • 将数值映射到 0 到 16 个像素
  • 清除灯环,点亮从像素 0 开始的相应数量的像素,然后显示出来

按“运行”,改变电路板上的光线,然后按“检查”。

亲手试试

#include <Adafruit_NeoPixel.h>

// 16 个像素灯,数据引脚为 6
Adafruit_NeoPixel ring(16, 6, NEO_GRB + NEO_KHZ800);

uint32_t yellow = ring.Color(255, 160, 0);

void setup() {
  ring.begin();
}

void loop() {
  int reading = analogRead(A0);  // 光线越亮,读数越低
  // 光线越亮,点亮的像素灯越多
  delay(50);
}
quiz icon自我测试

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

显示器与传感器中的所有课

自己练习: Arduino 在线编辑器