NeoPixel 亮度
本课属于 Coddy Arduino 学习旅程的“显示器与传感器”单元。第 16 课,共 24 课。
NeoPixels 很亮。ring.setBrightness(level) 会一次性调暗所有灯:0 表示关闭,255 表示最亮。
它通过缩放存储在板载内存中的颜色来实现。在亮度为 64 时,大约是四分之一亮度,红色值 255 会以 64 存储。问题在于,缩放会丢失细节。把亮度调到 0 后,所有存储的颜色都会变成 0,所以再把亮度调高时,已经没有颜色可供缩放,灯环会一直熄灭。
因此,每次亮度发生变化后,都要重新设置颜色:
ring.setBrightness(level);
ring.fill(white); // 按新的亮度存储
ring.show();在调用 setBrightness() 后设置的颜色,会在存储时进行缩放。
挑战
中等A0 上的旋钮可以调节灯环的亮度:
- 用
map()将读数转换为 0 到 255 之间的亮度值 - 用
ring.setBrightness()设置亮度 - 然后在每次执行
loop()时,将灯环填充为白色并显示
按下运行并转动旋钮,然后按检查。
亲手试试
#include <Adafruit_NeoPixel.h>
// 16 个像素,数据引脚为 6
Adafruit_NeoPixel ring(16, 6, NEO_GRB + NEO_KHZ800);
uint32_t white = ring.Color(255, 255, 255);
void setup() {
ring.begin();
}
void loop() {
int reading = analogRead(A0);
// 根据旋钮设置亮度,然后让整个灯环亮起白光
delay(50);
}
这节课包含一个小测验。开始学习即可作答,并记录你的进度。
显示器与传感器中的所有课
自己练习: Arduino 在线编辑器