Hi, Im fairly new to programing on arduino. Im trying to take a single neopixel v2 and change color states with a push button. I have it down so i can change single colors with the button press with no issues. Im trying to get rainbow color fades and bliking colors in pattern to work with button presses. Ive tried the loop functions and other codes, but to no avail. Anyone that can help me with this code would be greatly appreciated.
#include <Adafruit_NeoPixel.h>
int buttonPin = 0; // momentary push button on pin 0
int oldButtonVal = 0;
#define PIN 1 // Parameter 1 = number of pixels in strip
// Parameter 2 = pin number (most are valid)
// Parameter 3 = pixel type flags, add together as needed:
// NEO_KHZ800 800 KHz bitstream (most NeoPixel products w/WS2812 LEDs)
// NEO_KHZ400 400 KHz (classic 'v1' (not v2) FLORA pixels, WS2811 drivers)
// NEO_GRB Pixels are wired for GRB bitstream (most NeoPixel products)
// NEO_RGB Pixels are wired for RGB bitstream (v1 FLORA pixels, not v2)
Adafruit_NeoPixel strip = Adafruit_NeoPixel(1, PIN, NEO_GRB + NEO_KHZ800);
int nPatterns = 9;
int lightPattern = 1;
// the setup routine runs once when you press reset:
void setup() {
strip.begin();
strip.show(); // initialize all pixels to 'off'
// initialize the BUTTON pin as an input
pinMode(buttonPin, INPUT);
digitalWrite(buttonPin, HIGH); // button pin is HIGH, so it drops to 0 if pressed
}
// Pattern 1 - White light, all LEDs in the strip are white
void pattern1() {
strip.setPixelColor(0, strip.Color(255, 255, 255)); // White
strip.setPixelColor(1, strip.Color(255, 255, 255));
strip.setPixelColor(2, strip.Color(255, 255, 255));
strip.setPixelColor(3, strip.Color(255, 255, 255));
strip.setPixelColor(4, strip.Color(255, 255, 255));
strip.show();
}
// Pattern 2 - Red light, all LEDs in the strip are red
void pattern2() {
strip.setPixelColor(0, strip.Color(255, 0, 0)); // Red
strip.setPixelColor(1, strip.Color(255, 0, 0));
strip.setPixelColor(2, strip.Color(255, 0, 0));
strip.setPixelColor(3, strip.Color(255, 0, 0));
strip.setPixelColor(4, strip.Color(255, 0, 0));
strip.show();
}
// Pattern 3 - Orange light, all LEDs in the strip are orange
void pattern3() {
strip.setPixelColor(0, strip.Color(255, 128, 0)); // Orange
strip.setPixelColor(1, strip.Color(255, 128, 0));
strip.setPixelColor(2, strip.Color(255, 128, 0));
strip.setPixelColor(3, strip.Color(255, 128, 0));
strip.setPixelColor(4, strip.Color(255, 128, 0));
strip.show();
}
// Pattern 4 - Yellow light, all LEDs in the strip are yellow
void pattern4() {
strip.setPixelColor(0, strip.Color(255, 255, 0)); // Yellow
strip.setPixelColor(1, strip.Color(255, 255, 0));
strip.setPixelColor(2, strip.Color(255, 255, 0));
strip.setPixelColor(3, strip.Color(255, 255, 0));
strip.setPixelColor(4, strip.Color(255, 255, 0));
strip.show();
}
// Pattern 5 - Green light, all LEDs in the strip are green
void pattern5() {
strip.setPixelColor(0, strip.Color(0, 255, 0)); // Green
strip.setPixelColor(1, strip.Color(0, 255, 0));
strip.setPixelColor(2, strip.Color(0, 255, 0));
strip.setPixelColor(3, strip.Color(0, 255, 0));
strip.setPixelColor(4, strip.Color(0, 255, 0));
strip.show();
}
// Pattern 6 - Blue light, all LEDs in the strip are blue
void pattern6() {
strip.setPixelColor(0, strip.Color(0, 0, 255)); // Blue
strip.setPixelColor(1, strip.Color(0, 0, 255));
strip.setPixelColor(2, strip.Color(0, 0, 255));
strip.setPixelColor(3, strip.Color(0, 0, 255));
strip.setPixelColor(4, strip.Color(0, 0, 255));
strip.show();
}
// Pattern 7 - Violet light, all LEDs in the strip are violet
void pattern7() {
strip.setPixelColor(0, strip.Color(127, 0, 255)); // Violet
strip.setPixelColor(1, strip.Color(127, 0, 255));
strip.setPixelColor(2, strip.Color(127, 0, 255));
strip.setPixelColor(3, strip.Color(127, 0, 255));
strip.setPixelColor(4, strip.Color(127, 0, 255));
strip.show();
}
// Pattern 8 - Rainbow light, all LEDs in the strip are different colors
void pattern8() {
strip.setPixelColor(0, strip.Color(255, 0, 255)); // Red
strip.setPixelColor(1, strip.Color(255, 255, 0)); // Yellow
strip.setPixelColor(2, strip.Color(0, 255, 0)); // Green
strip.setPixelColor(3, strip.Color(0, 0, 255)); // Blue
strip.setPixelColor(4, strip.Color(127, 0, 255)); // Violet
strip.show();
}
//Pattern 9 - Color Cycle
// void pattern9() {
// rainbow(20)
// }
// the loop routine runs over and over again forever;
void loop() {
// read that state of the pushbutton value;
int buttonVal = digitalRead(buttonPin);
if (buttonVal == LOW && oldButtonVal == HIGH) {// button has just been pressed
lightPattern = lightPattern + 1;
}
if (lightPattern > nPatterns) lightPattern = 1;
oldButtonVal = buttonVal;
switch(lightPattern) {
case 1:
pattern1();
break;
case 2:
pattern2();
break;
case 3:
pattern3();
break;
case 4:
pattern4();
break;
case 5:
pattern5();
break;
case 6:
pattern6();
break;
case 7:
pattern7();
break;
case 8:
pattern8();
break;
}
}