#include <Adafruit_NeoPixel.h> #ifdef __AVR__ #include <avr/power.h> #endif #define PIN 9 // Parameter 1 = number of pixels in strip // Parameter 2 = Arduino 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) // NEO_RGBW Pixels are wired for RGBW bitstream (NeoPixel RGBW products) Adafruit_NeoPixel strip = Adafruit_NeoPixel(16, PIN, NEO_GRB + NEO_KHZ800); // IMPORTANT: To reduce NeoPixel burnout risk, add 1000 uF capacitor across // pixel power leads, add 300 - 500 Ohm resistor on first pixel's data input // and minimize distance between Arduino and first pixel. Avoid connecting // on a live circuit...if you must, connect GND first. volatile int frame=0; #include <Keypad.h> const byte ROWS = 4; // Four rows const byte COLS = 3; // Three columns // Define the Keymap char keys[ROWS][COLS] = { {'1','2','3'}, {'4','5','6'}, {'7','8','9'}, {'A','0','B'} }; // Connect keypad ROW0, ROW1, ROW2 and ROW3 to these Arduino pins. byte rowPins[ROWS] = { 8, 7, 6, 5 }; // Connect keypad COL0, COL1 and COL2 to these Arduino pins. byte colPins[COLS] = { 4, 3, 2 }; // Create the Keypad Keypad kpd = Keypad( makeKeymap(keys), rowPins, colPins, ROWS, COLS ); void setup() { strip.begin(); strip.show(); // Initialize all pixels to 'off' //set pins as outputs pinMode(13, OUTPUT); // Fill the dots one after the other with a color cli();//stop interrupts //set timer1 interrupt at 1Hz TCCR1A = 0;// set entire TCCR1A register to 0 TCCR1B = 0;// same for TCCR1B TCNT1 = 0;//initialize counter value to 0 // set compare match register for 1hz increments OCR1A = 977;// = (16*10^6) / (8*1024) - 1 (must be <65536) // turn on CTC mode TCCR1B |= (1 << WGM12); // Set CS10 and CS12 bits for 1024 prescaler TCCR1B |= (1 << CS12) | (1 << CS10); // enable timer compare interrupt TIMSK1 |= (1 << OCIE1A); sei();//allow interrupts }//end setup ISR(TIMER1_COMPA_vect){//timer1 interrupt 1Hz toggles pin 13 (LED) //generates pulse wave of frequency 1Hz/2 = 0.5kHz (takes two cycles for full wave- toggle high then toggle low) if(frame==1){ strip.setPixelColor(0,60,0,0); strip.show(); frame++; } else if(frame==2) { strip.setPixelColor(1,60,0,0); strip.show(); frame++; } else if(frame==3) { strip.setPixelColor(2,60,0,0); strip.show(); frame++; } else if(frame==4) { strip.setPixelColor(3,60,0,0); strip.show(); frame++; } else if(frame==5) { strip.setPixelColor(4,60,0,0); strip.show(); frame++; } else if(frame==6) { strip.setPixelColor(5,60,0,0); delay(50); strip.show(); frame++; } else if(frame==7) { strip.setPixelColor(6,60,0,0); strip.show(); frame++; } else if(frame==8) { strip.setPixelColor(7,60,0,0); delay(50); strip.show(); frame++; } else if(frame==9) { strip.setPixelColor(8,60,0,0); strip.show(); frame++; } else if(frame==10) { strip.setPixelColor(9,60,0,0); strip.show(); frame++; } else if(frame==11) { strip.setPixelColor(10,60,0,0); strip.show(); frame++; } else if(frame==12) { strip.setPixelColor(11,60,0,0); strip.show(); frame++; } else if(frame==13) { strip.setPixelColor(12,60,0,0); strip.show(); frame++; } else if(frame==14) { strip.setPixelColor(13,60,0,0); strip.show(); frame++; } else if(frame==15) { strip.setPixelColor(14,60,0,0); strip.show(); frame++; } else if(frame==16) { strip.setPixelColor(15,60,0,0); strip.show(); } else if(frame==17){ strip.setPixelColor(15,0,0,0); strip.show(); frame++; } else if(frame==18) { strip.setPixelColor(14,0,0,0); strip.show(); frame++; } else if(frame==19) { strip.setPixelColor(13,0,0,0); strip.show(); frame++; } else if(frame==20) { strip.setPixelColor(12,0,0,0); strip.show(); frame++; } else if(frame==21) { strip.setPixelColor(11,0,0,0); strip.show(); frame++; } else if(frame==22) { strip.setPixelColor(10,0,0,0); delay(50); strip.show(); frame++; } else if(frame==23) { strip.setPixelColor(9,0,0,0); strip.show(); frame++; } else if(frame==24) { strip.setPixelColor(8,0,0,0); delay(50); strip.show(); frame++; } else if(frame==25) { strip.setPixelColor(7,0,0,0); strip.show(); frame++; } else if(frame==26) { strip.setPixelColor(6,0,0,0); strip.show(); frame++; } else if(frame==27) { strip.setPixelColor(5,0,0,0); strip.show(); frame++; } else if(frame==28) { strip.setPixelColor(4,0,0,0); strip.show(); frame++; } else if(frame==29) { strip.setPixelColor(3,0,0,0); strip.show(); frame++; } else if(frame==30) { strip.setPixelColor(2,0,0,0); strip.show(); frame++; } else if(frame==31) { strip.setPixelColor(1,0,0,0); strip.show(); frame++; } else if(frame==32) { strip.setPixelColor(0,0,0,0); strip.show(); } else if(frame==33) { strip.setPixelColor(random(16),random(0,25),random(0,25),random(0,25)); strip.setPixelColor(random(16),0,0,0,0); strip.setPixelColor(random(16),0,0,0,0); delay(30); strip.show(); } else if(frame==34){frame=0;} } void loop() { char key = kpd.getKey(); if(key) // Check for a valid key. { switch (key) { case '1': frame = 1; break; case '2': frame = 17; break; case '3': frame = 33; break; default: break; } } } void colorWipe(uint32_t c, uint8_t wait) { for(uint16_t i=0; i<strip.numPixels(); i++) { strip.setPixelColor(i, c); strip.show(); delay(wait); } }
No Comments