Menu
CoddyTech

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() 后设置的颜色,会在存储时进行缩放。

challenge icon

挑战

中等

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);
}
quiz icon自我测试

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

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

自己练习: Arduino 在线编辑器