Menu
CoddyTech

彩虹环

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

为彩虹选择红色、绿色和蓝色很难。色相更简单:用一个数字沿着色环依次经过红色、黄色、绿色、青色、蓝色和品红色,最后回到红色。

ring.ColorHSV(hue)会将色相转换成颜色。色相的范围是 0 到 65535:0 是红色,约 21845 是绿色,约 43690 是蓝色,而 65536 则会再次变成红色。

要让一道彩虹覆盖 16 个像素,每个像素的色相都比前一个增加 65536 / 16 = 4096。像素 15 需要 61440,超出了 int 的存储范围,所以要将色相存储在 long 中,并将数字写成 4096L;L 也会让乘法使用 long:

for (int i = 0; i < 16; i++) {
  long hue = i * 4096L;
  ring.setPixelColor(i, ring.ColorHSV(hue));
}
ring.show();
challenge icon

挑战

中等

为灯环画上一道彩虹:

  • 像素 0 为红色(色调 0)
  • 每个后续像素沿色轮再前进 4096,使用 ring.ColorHSV()
  • 这样 16 个像素就正好绕一圈

按下运行,然后按下检查。

亲手试试

#include <Adafruit_NeoPixel.h>

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

void setup() {
  ring.begin();

  // 让每个像素都有自己的色相,像素 0 为红色

  ring.show();
}

void loop() {
}
quiz icon自我测试

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

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

自己练习: Arduino 在线编辑器