彩虹环
本课属于 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();挑战
中等为灯环画上一道彩虹:
- 像素 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() {
}
这节课包含一个小测验。开始学习即可作答,并记录你的进度。
显示器与传感器中的所有课
自己练习: Arduino 在线编辑器