Hi!
My project involves attaching 5 LEDs to a board and programming the LEDs to change color when a momentary push button is pressed.
I am using the following:
- Adafruit GEMMA board (http://www.adafruit.com/products/1222#Description)
- Adafruit NeoPixel LEDs (http://www.adafruit.com/products/1260#Description)
- LilyPad momentary push button board (LilyPad Button Board - DEV-08776 - SparkFun Electronics)
Since the GEMMA isn’t fully 100% Arduino-compatible, I am open to using the more compatible Adafruit FLORA (http://www.adafruit.com/products/659#Description) if necessary, although I’d like to stick with the GEMMA if possible because of its smaller size.
I’ve never programmed before, so all my code is cobbled together from tutorials and projects I’ve seen online. It compiles fine in the Arduino IDE, but I can’t get the different color patterns to show when I press the push button. The only color I get is the color from the first pattern.
If someone could help me understand how to get the other color patterns to show up, I would be greatly appreciative. Thank you!
#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(5, PIN, NEO_GRB + NEO_KHZ800);
int nPatterns = 8;
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();
}
// 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;
}
}