光照强度条
本课属于 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() 可以让亮条缩短:如果不先清空,光线变暗时,之前光线较强时点亮的像素仍会保持点亮。
挑战
中等光线传感器连接在 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);
}
这节课包含一个小测验。开始学习即可作答,并记录你的进度。
显示器与传感器中的所有课
自己练习: Arduino 在线编辑器