“彩灯的多种玩法”的版本间的差异
1196357542(讨论 | 贡献) (创建页面,内容为“{| style="width: 800px;" |- | <br> <big>此示例给出了控制彩灯的几种显示效果。</big> <br> <br> <p style="color: #E87E05;font-size:135%">硬件清单<...”) |
1196357542(讨论 | 贡献) |
||
| (未显示2个用户的4个中间版本) | |||
| 第3行: | 第3行: | ||
| | | | ||
<br> | <br> | ||
| − | <big>此示例给出了控制彩灯的几种显示效果。</big> | + | <big>此示例给出了控制彩灯的几种显示效果。 |
| + | |||
| + | '''呼吸、流水、闪烁、彩虹、炫彩'''</big> | ||
<br> | <br> | ||
<br> | <br> | ||
| 第22行: | 第24行: | ||
<br> | <br> | ||
<p style="color: #E87E05;font-size:135%">代码</p> | <p style="color: #E87E05;font-size:135%">代码</p> | ||
| + | *<big>'''呼吸灯'''</big> | ||
| + | <source lang="cpp"> | ||
| + | #include <Microduino_ColorLED.h> //引用彩灯库 | ||
| + | |||
| + | #define PIN 6 //彩灯引脚 | ||
| + | #define NUMPIXELS 16 //级联彩灯数量 | ||
| + | |||
| + | #define val_max 255 | ||
| + | #define val_min 0 | ||
| + | |||
| + | ColorLED strip = ColorLED(NUMPIXELS, PIN); //将ColorLED类命名为strip,并定义彩灯数量和彩灯引脚号 | ||
| + | |||
| + | void setup() { | ||
| + | strip.begin(); //彩灯初始化 | ||
| + | strip.show(); | ||
| + | } | ||
| + | |||
| + | void loop() { | ||
| + | rainbowCycle( 255, 0, 0, 5);//红色呼吸 | ||
| + | rainbowCycle( 0, 255, 0, 5);//绿色呼吸 | ||
| + | rainbowCycle( 0, 0, 255, 5);//蓝色呼吸 | ||
| + | } | ||
| + | |||
| + | void colorSet(uint32_t c) { | ||
| + | for (uint16_t i = 0; i < strip.numPixels(); i++) { | ||
| + | strip.setPixelColor(i, c); | ||
| + | } | ||
| + | strip.show(); | ||
| + | } | ||
| + | |||
| + | void rainbowCycle( int r, int g, int b, uint8_t wait) { | ||
| + | for (int val = 0; val < 255; val++) | ||
| + | { | ||
| + | colorSet(strip.Color(map(val, val_min, val_max, 0, r), map(val, val_min, val_max, 0, g), map(val, val_min, val_max, 0, b))); | ||
| + | delay(wait); | ||
| + | } | ||
| + | for (int val = 255; val >= 0; val--) | ||
| + | { | ||
| + | colorSet(strip.Color(map(val, val_min, val_max, 0, r), map(val, val_min, val_max, 0, g), map(val, val_min, val_max, 0, b))); | ||
| + | delay(wait); | ||
| + | } | ||
| + | } | ||
| + | </source> | ||
| + | |||
| + | <br> | ||
| + | <br> | ||
| + | |||
| + | *<big>'''流水灯'''</big> | ||
<source lang="cpp"> | <source lang="cpp"> | ||
| + | |||
#include <Microduino_ColorLED.h> //引用彩灯库 | #include <Microduino_ColorLED.h> //引用彩灯库 | ||
| − | #define | + | #define PIN 6 //彩灯引脚 |
| − | #define | + | #define NUMPIXELS 7 //级联彩灯数量 |
| − | ColorLED strip = ColorLED( | + | |
| + | #define val_max 255 | ||
| + | #define val_min 0 | ||
| + | |||
| + | ColorLED strip = ColorLED(NUMPIXELS, PIN); //将ColorLED类命名为strip,并定义彩灯数量和彩灯引脚号 | ||
void setup() { | void setup() { | ||
| − | strip.begin(); | + | strip.begin(); //彩灯初始化 |
| − | + | strip.show(); | |
| − | strip.show(); | ||
} | } | ||
| + | /*流水灯效果*/ | ||
void loop() { | void loop() { | ||
| − | // | + | theaterChase(COLOR_RED, 2, 450); //红色流水灯效果,循环2次,两灯之间延时450ms |
| + | theaterChase(COLOR_BLUE, 4, 400); //蓝色流水灯效果,循环4次,两灯之间延时400ms | ||
| + | } | ||
| + | |||
| + | //Theatre-style crawling lights. | ||
| + | void theaterChase(uint32_t c, uint8_t n, uint8_t wait) { | ||
| + | for (int j = 0; j < n; j++) { //do 10 cycles of chasing | ||
| + | for (uint16_t i = 0; i < strip.numPixels(); i++) { | ||
| + | strip.setPixelColor(i, c); //turn every third pixel on | ||
| + | strip.show(); | ||
| + | delay(wait); | ||
| + | strip.setPixelColor(i, 0); //turn every third pixel on | ||
| + | strip.show(); | ||
| + | } | ||
| + | } | ||
} | } | ||
| + | |||
</source> | </source> | ||
| + | |||
| + | <br> | ||
| + | <br> | ||
| + | |||
| + | *<big>'''闪烁灯'''</big> | ||
| + | <source lang="cpp"> | ||
| + | |||
| + | #include <Microduino_ColorLED.h> //引用彩灯库 | ||
| + | |||
| + | #define PIN 6 //彩灯引脚 | ||
| + | #define NUMPIXELS 7 //级联彩灯数量 | ||
| + | |||
| + | #define val_max 255 | ||
| + | #define val_min 0 | ||
| + | |||
| + | ColorLED strip = ColorLED(NUMPIXELS, PIN); //将ColorLED类命名为strip,并定义彩灯数量和彩灯引脚号 | ||
| + | |||
| + | void setup() { | ||
| + | strip.begin(); //彩灯初始化 | ||
| + | strip.show(); | ||
| + | } | ||
| + | |||
| + | void loop() { | ||
| + | ledBlinkALL(COLOR_BLUE, 1000); | ||
| + | } | ||
| + | |||
| + | //第n号灯,颜色c,闪烁时间wait | ||
| + | void ledBlink(uint32_t c, uint8_t n, uint8_t wait) { | ||
| + | strip.setPixelColor(n, c); //turn every third pixel on | ||
| + | strip.show(); | ||
| + | delay(wait); | ||
| + | strip.setPixelColor(n, 0); //turn every third pixel on | ||
| + | strip.show(); | ||
| + | delay(wait); | ||
| + | } | ||
| + | |||
| + | //全部灯,颜色c,闪烁时间wait | ||
| + | void ledBlinkALL(uint32_t c, uint8_t wait) { | ||
| + | for (uint16_t i = 0; i < strip.numPixels(); i++) { | ||
| + | strip.setPixelColor(i, c); | ||
| + | strip.show(); | ||
| + | } | ||
| + | delay(wait); | ||
| + | for (uint16_t i = 0; i < strip.numPixels(); i++) { | ||
| + | strip.setPixelColor(i, 0); | ||
| + | strip.show(); | ||
| + | } | ||
| + | delay(wait); | ||
| + | } | ||
| + | |||
| + | </source> | ||
| + | |||
| + | <br> | ||
| + | <br> | ||
| + | |||
| + | *<big>'''彩虹灯'''</big> | ||
| + | <source lang="cpp"> | ||
| + | |||
| + | #include <Microduino_ColorLED.h> //引用彩灯库 | ||
| + | |||
| + | #define PIN 6 //彩灯引脚 | ||
| + | #define NUMPIXELS 7 //级联彩灯数量 | ||
| + | |||
| + | #define val_max 255 | ||
| + | #define val_min 0 | ||
| + | |||
| + | ColorLED strip = ColorLED(NUMPIXELS, PIN); //将ColorLED类命名为strip,并定义彩灯数量和彩灯引脚号 | ||
| + | |||
| + | void setup() { | ||
| + | strip.begin(); //彩灯初始化 | ||
| + | strip.show(); | ||
| + | } | ||
| + | |||
| + | /*彩虹灯效*/ | ||
| + | void loop() { | ||
| + | rainbow(20); | ||
| + | } | ||
| + | |||
| + | void rainbow(uint8_t wait) { | ||
| + | uint16_t i, j; | ||
| + | for(j=0; j<256; j++) { | ||
| + | for(i=0; i<strip.numPixels(); i++) { | ||
| + | strip.setPixelColor(i, Wheel((i+j) & 255)); | ||
| + | } | ||
| + | strip.show(); | ||
| + | delay(wait); | ||
| + | } | ||
| + | } | ||
| + | |||
| + | // Input a value 0 to 255 to get a color value. | ||
| + | // The colours are a transition r - g - b - back to r. | ||
| + | uint32_t Wheel(byte WheelPos) { | ||
| + | WheelPos = 255 - WheelPos; | ||
| + | if(WheelPos < 85) { | ||
| + | return strip.Color(255 - WheelPos * 3, 0, WheelPos * 3); | ||
| + | } | ||
| + | if(WheelPos < 170) { | ||
| + | WheelPos -= 85; | ||
| + | return strip.Color(0, WheelPos * 3, 255 - WheelPos * 3); | ||
| + | } | ||
| + | WheelPos -= 170; | ||
| + | return strip.Color(WheelPos * 3, 255 - WheelPos * 3, 0); | ||
| + | } | ||
| + | |||
| + | </source> | ||
| + | |||
| + | <br> | ||
| + | <br> | ||
| + | |||
| + | *<big>'''炫彩灯'''</big> | ||
| + | <source lang="cpp"> | ||
| + | |||
| + | #include <Microduino_ColorLED.h> //引用彩灯库 | ||
| + | |||
| + | #define PIN 6 //彩灯引脚 | ||
| + | #define NUMPIXELS 7 //级联彩灯数量 | ||
| + | |||
| + | #define val_max 255 | ||
| + | #define val_min 0 | ||
| + | |||
| + | ColorLED strip = ColorLED(NUMPIXELS, PIN); //将ColorLED类命名为strip,并定义彩灯数量和彩灯引脚号 | ||
| + | |||
| + | void setup() { | ||
| + | strip.begin(); //彩灯初始化 | ||
| + | strip.show(); | ||
| + | } | ||
| + | |||
| + | /*炫彩灯效*/ | ||
| + | void loop() { | ||
| + | rainbowCycle(20); | ||
| + | } | ||
| + | |||
| + | // Slightly different, this makes the rainbow equally distributed throughout | ||
| + | void rainbowCycle(uint8_t wait) { | ||
| + | uint16_t i, j; | ||
| + | |||
| + | for (j = 0; j < 256 * 5; j++) { // 5 cycles of all colors on wheel | ||
| + | for (i = 0; i < strip.numPixels(); i++) { | ||
| + | strip.setPixelColor(i, Wheel(((i * 256 / strip.numPixels()) + j) & 255)); | ||
| + | } | ||
| + | strip.show(); | ||
| + | delay(wait); | ||
| + | } | ||
| + | } | ||
| + | |||
| + | // Input a value 0 to 255 to get a color value. | ||
| + | // The colours are a transition r - g - b - back to r. | ||
| + | uint32_t Wheel(byte WheelPos) { | ||
| + | WheelPos = 255 - WheelPos; | ||
| + | if (WheelPos < 85) { | ||
| + | return strip.Color(255 - WheelPos * 3, 0, WheelPos * 3); | ||
| + | } | ||
| + | if (WheelPos < 170) { | ||
| + | WheelPos -= 85; | ||
| + | return strip.Color(0, WheelPos * 3, 255 - WheelPos * 3); | ||
| + | } | ||
| + | WheelPos -= 170; | ||
| + | return strip.Color(WheelPos * 3, 255 - WheelPos * 3, 0); | ||
| + | } | ||
| + | |||
| + | </source> | ||
| + | |||
<br> | <br> | ||
<p style="color: #E87E05;font-size:135%">相关案例</p> | <p style="color: #E87E05;font-size:135%">相关案例</p> | ||
2017年7月14日 (五) 07:10的最新版本
|
呼吸、流水、闪烁、彩虹、炫彩
硬件清单
电路搭建 将彩灯的IN接到Hub的6/7引脚,实际使用的是6号引脚。
代码
#include <Microduino_ColorLED.h> //引用彩灯库
#define PIN 6 //彩灯引脚
#define NUMPIXELS 16 //级联彩灯数量
#define val_max 255
#define val_min 0
ColorLED strip = ColorLED(NUMPIXELS, PIN); //将ColorLED类命名为strip,并定义彩灯数量和彩灯引脚号
void setup() {
strip.begin(); //彩灯初始化
strip.show();
}
void loop() {
rainbowCycle( 255, 0, 0, 5);//红色呼吸
rainbowCycle( 0, 255, 0, 5);//绿色呼吸
rainbowCycle( 0, 0, 255, 5);//蓝色呼吸
}
void colorSet(uint32_t c) {
for (uint16_t i = 0; i < strip.numPixels(); i++) {
strip.setPixelColor(i, c);
}
strip.show();
}
void rainbowCycle( int r, int g, int b, uint8_t wait) {
for (int val = 0; val < 255; val++)
{
colorSet(strip.Color(map(val, val_min, val_max, 0, r), map(val, val_min, val_max, 0, g), map(val, val_min, val_max, 0, b)));
delay(wait);
}
for (int val = 255; val >= 0; val--)
{
colorSet(strip.Color(map(val, val_min, val_max, 0, r), map(val, val_min, val_max, 0, g), map(val, val_min, val_max, 0, b)));
delay(wait);
}
}
#include <Microduino_ColorLED.h> //引用彩灯库
#define PIN 6 //彩灯引脚
#define NUMPIXELS 7 //级联彩灯数量
#define val_max 255
#define val_min 0
ColorLED strip = ColorLED(NUMPIXELS, PIN); //将ColorLED类命名为strip,并定义彩灯数量和彩灯引脚号
void setup() {
strip.begin(); //彩灯初始化
strip.show();
}
/*流水灯效果*/
void loop() {
theaterChase(COLOR_RED, 2, 450); //红色流水灯效果,循环2次,两灯之间延时450ms
theaterChase(COLOR_BLUE, 4, 400); //蓝色流水灯效果,循环4次,两灯之间延时400ms
}
//Theatre-style crawling lights.
void theaterChase(uint32_t c, uint8_t n, uint8_t wait) {
for (int j = 0; j < n; j++) { //do 10 cycles of chasing
for (uint16_t i = 0; i < strip.numPixels(); i++) {
strip.setPixelColor(i, c); //turn every third pixel on
strip.show();
delay(wait);
strip.setPixelColor(i, 0); //turn every third pixel on
strip.show();
}
}
}
#include <Microduino_ColorLED.h> //引用彩灯库
#define PIN 6 //彩灯引脚
#define NUMPIXELS 7 //级联彩灯数量
#define val_max 255
#define val_min 0
ColorLED strip = ColorLED(NUMPIXELS, PIN); //将ColorLED类命名为strip,并定义彩灯数量和彩灯引脚号
void setup() {
strip.begin(); //彩灯初始化
strip.show();
}
void loop() {
ledBlinkALL(COLOR_BLUE, 1000);
}
//第n号灯,颜色c,闪烁时间wait
void ledBlink(uint32_t c, uint8_t n, uint8_t wait) {
strip.setPixelColor(n, c); //turn every third pixel on
strip.show();
delay(wait);
strip.setPixelColor(n, 0); //turn every third pixel on
strip.show();
delay(wait);
}
//全部灯,颜色c,闪烁时间wait
void ledBlinkALL(uint32_t c, uint8_t wait) {
for (uint16_t i = 0; i < strip.numPixels(); i++) {
strip.setPixelColor(i, c);
strip.show();
}
delay(wait);
for (uint16_t i = 0; i < strip.numPixels(); i++) {
strip.setPixelColor(i, 0);
strip.show();
}
delay(wait);
}
#include <Microduino_ColorLED.h> //引用彩灯库
#define PIN 6 //彩灯引脚
#define NUMPIXELS 7 //级联彩灯数量
#define val_max 255
#define val_min 0
ColorLED strip = ColorLED(NUMPIXELS, PIN); //将ColorLED类命名为strip,并定义彩灯数量和彩灯引脚号
void setup() {
strip.begin(); //彩灯初始化
strip.show();
}
/*彩虹灯效*/
void loop() {
rainbow(20);
}
void rainbow(uint8_t wait) {
uint16_t i, j;
for(j=0; j<256; j++) {
for(i=0; i<strip.numPixels(); i++) {
strip.setPixelColor(i, Wheel((i+j) & 255));
}
strip.show();
delay(wait);
}
}
// Input a value 0 to 255 to get a color value.
// The colours are a transition r - g - b - back to r.
uint32_t Wheel(byte WheelPos) {
WheelPos = 255 - WheelPos;
if(WheelPos < 85) {
return strip.Color(255 - WheelPos * 3, 0, WheelPos * 3);
}
if(WheelPos < 170) {
WheelPos -= 85;
return strip.Color(0, WheelPos * 3, 255 - WheelPos * 3);
}
WheelPos -= 170;
return strip.Color(WheelPos * 3, 255 - WheelPos * 3, 0);
}
#include <Microduino_ColorLED.h> //引用彩灯库
#define PIN 6 //彩灯引脚
#define NUMPIXELS 7 //级联彩灯数量
#define val_max 255
#define val_min 0
ColorLED strip = ColorLED(NUMPIXELS, PIN); //将ColorLED类命名为strip,并定义彩灯数量和彩灯引脚号
void setup() {
strip.begin(); //彩灯初始化
strip.show();
}
/*炫彩灯效*/
void loop() {
rainbowCycle(20);
}
// Slightly different, this makes the rainbow equally distributed throughout
void rainbowCycle(uint8_t wait) {
uint16_t i, j;
for (j = 0; j < 256 * 5; j++) { // 5 cycles of all colors on wheel
for (i = 0; i < strip.numPixels(); i++) {
strip.setPixelColor(i, Wheel(((i * 256 / strip.numPixels()) + j) & 255));
}
strip.show();
delay(wait);
}
}
// Input a value 0 to 255 to get a color value.
// The colours are a transition r - g - b - back to r.
uint32_t Wheel(byte WheelPos) {
WheelPos = 255 - WheelPos;
if (WheelPos < 85) {
return strip.Color(255 - WheelPos * 3, 0, WheelPos * 3);
}
if (WheelPos < 170) {
WheelPos -= 85;
return strip.Color(0, WheelPos * 3, 255 - WheelPos * 3);
}
WheelPos -= 170;
return strip.Color(WheelPos * 3, 255 - WheelPos * 3, 0);
}
相关案例
|