大神,能帮忙看一下吗?非常感谢!
[mw_shl_code=arduino,true]#include
#include
//strip
#define PIN 2
#define MAX_LED 40
#define ADD true
#define SUB false
int val = 0;
boolean stat = ADD;
Adafruit_NeoPixel strip = Adafruit_NeoPixel( MAX_LED, PIN, NEO_RGB + NEO_KHZ800 );
int MinBrightness = 2; //value 0-255
int MaxBrightness = 220; //value 0-255
int fadeInWait = 7; //lighting up speed, steps.
int fadeOutWait = 7; //dimming speed, steps.
int VCC = 13;//as power vcc
int D3 = 12;
int D2 = 11;
int D1 = 10;
int D0 = 9;
unsigned char mode; //状态
unsigned char temp1;//模式
//int InputState = 1; //variable for reading the input status
// the setup routine runs once when you press reset:
void setup() {
// initialize the digital pin
strip.begin();
strip.show();
pinMode(VCC, OUTPUT);
pinMode(D3, INPUT);
pinMode(D2, INPUT);
pinMode(D1, INPUT);
pinMode(D0, INPUT);
digitalWrite(VCC, HIGH);//AS VCC 作为电源引脚
Serial.begin(9600);
delay(500);//Waiting for rf receiver module startup
}
void rgbBreathe(uint32_t c, uint8_t y) {
for (uint8_t b = MinBrightness; b < MaxBrightness; b++) {
strip.setBrightness(b * 255 / 255);
for (uint16_t i = 0; i < strip.numPixels(); i++) {
strip.setPixelColor(i, c);
}
strip.show();
delay(fadeInWait);
}
strip.setBrightness(MaxBrightness * 255 / 255);
for (uint16_t i = 0; i < strip.numPixels(); i++) {
strip.setPixelColor(i, c);
strip.show();
delay(y);
}
for (uint8_t b = MaxBrightness; b > MinBrightness; b--) {
strip.setBrightness(b * 255 / 255);
for (uint16_t i = 0; i < strip.numPixels(); i++) {
strip.setPixelColor(i, c);
}
strip.show();
delay(fadeOutWait);
}
}
void changeColor(uint32_t c) {
for (uint16_t i = 0; i < MAX_LED; i++) {
strip.setPixelColor(i, c);
}
strip.show();
delay(20);
}
void rgbChasing(uint32_t c) {
for (uint16_t i = 0 ; i < MAX_LED; i++) {
strip.setPixelColor(i, c);
strip.setBrightness(255);
strip.show();
delay(70);
}
changeColor(strip.Color(0, 0, 0));
}
void button_scan()
{
//A
temp1 = digitalRead(D3);
if (temp1 == HIGH)
{
delay(10);
temp1 = digitalRead(D3);
if (temp1 == HIGH)
{
mode = 1;
}
//抬手检测
while (temp1 == HIGH) {
temp1 = digitalRead(D3);
}
}
//B
temp1 = digitalRead(D2);
if (temp1 == HIGH)
{
delay(10);
temp1 = digitalRead(D2);
if (temp1 == HIGH)
{
mode = 2;
}
//抬手检测
while (temp1 == HIGH) {
temp1 = digitalRead(D2);
}
}
//C
temp1 = digitalRead(D1);
if (temp1 == HIGH)
{
delay(10);
temp1 = digitalRead(D1);
if (temp1 == HIGH)
{
mode = 3;
}
//抬手检测
while (temp1 == HIGH) {
temp1 = digitalRead(D1);
}
}
//D
temp1 = digitalRead(D0);
if (temp1 == HIGH)
{
delay(10);
temp1 = digitalRead(D0);
if (temp1 == HIGH)
{
mode = 4;
}
//抬手检测
while (temp1 == HIGH) {
temp1 = digitalRead(D0);
}
}
}
// the loop routine runs over and over again forever:
void loop() {
button_scan();
switch (mode) {
case 1:
rgbBreathe(strip.Color(255, 0, 0), 5);
break;
case 2:
changeColor(strip.Color(0, 0, 0));
rgbChasing(strip.Color(255, 0, 0));
break;
case 3:
rgbBreathe(strip.Color(100, 255, 0), 5);
break;
case 4:
changeColor(strip.Color(0, 0, 0));
break;
}
}[/mw_shl_code]