Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /*
- This code can be a good test code for your strip
- function: leds.setPixelColor(i,y) can be used to let number i of your led turn on with color of y
- and you can draw your idea easily with this function but never forget function: led.show()
- */
- #include <Adafruit_NeoPixel.h>
- #include <Wire.h>
- #include <LiquidCrystal_I2C.h>
- #define PIN 27 //The signal pin connected with Arduino
- #define LED_COUNT 60 // the amount of the leds of your strip(60 LEDs per meter)
- unsigned long previousMillis = 0; // will store last time LED was updated
- // constants won't change :
- const long interval = 50; // interval at which to blink (milliseconds)
- const long mininumSound = 100;
- int a = 0;
- // Create an instance of the Adafruit_NeoPixel class called "leds".
- // That'll be what we refer to from here on...
- Adafruit_NeoPixel leds = Adafruit_NeoPixel(LED_COUNT, PIN, NEO_GRB + NEO_KHZ800);
- LiquidCrystal_I2C lcd(0x20,16,2);
- void setup()
- {
- lcd.init();
- lcd.begin(16,2);
- lcd.backlight();
- leds.begin(); // Call this to start up the LED strip.
- clearLEDs(); // This function, defined below, turns all LEDs off...
- leds.show(); // ...but the LEDs don't actually update until you call this.
- // Serial.begin(9600);
- }
- void loop()
- {
- unsigned long currentMillis = millis();
- int val;
- val=analogRead(A6);
- // Serial.println(val);
- if (val > mininumSound)
- {
- lcd.clear0();
- val=analogRead(A6);
- lcd.setCursor(0,0);
- lcd.print(val);
- // Serial.println(val);
- //clearLEDs();
- //delay(1000);
- }
- else {
- if (a<LED_COUNT)
- {
- // save the last time you blinked the LED
- if(currentMillis - previousMillis >= interval) {
- rainbow(a);
- previousMillis = currentMillis;
- a++;
- }
- }
- else {
- a = 1;
- }
- }
- }
- // Sets all LEDs to off, but DOES NOT update the display;
- // call leds.show() to actually turn them off after this.
- void clearLEDs()
- {
- for (int i=0; i<LED_COUNT; i++)
- {
- leds.setPixelColor(i, 0);
- }
- }
- // Prints a rainbow on the ENTIRE LED strip.
- // The rainbow begins at a specified position.
- // ROY G BIV!
- void rainbow(byte startPosition)
- {
- // Need to scale our rainbow. We want a variety of colors, even if there
- // are just 10 or so pixels.
- int rainbowScale = 192 / LED_COUNT;
- // Next we setup each pixel with the right color
- for (int i=0; i<LED_COUNT; i++)
- {
- // There are 192 total colors we can get out of the rainbowOrder function.
- // It'll return a color between red->orange->green->...->violet for 0-191.
- leds.setPixelColor(i, rainbowOrder((rainbowScale * (i + startPosition)) % 192));
- }
- // Finally, actually turn the LEDs on:
- leds.show();
- }
- // Input a value 0 to 191 to get a color value.
- // The colors are a transition red->yellow->green->aqua->blue->fuchsia->red...
- // Adapted from Wheel function in the Adafruit_NeoPixel library example sketch
- uint32_t rainbowOrder(byte position)
- {
- // 6 total zones of color change:
- if (position < 31) // Red -> Yellow (Red = FF, blue = 0, green goes 00-FF)
- {
- return leds.Color(0xFF, position * 8, 0);
- }
- else if (position < 63) // Yellow -> Green (Green = FF, blue = 0, red goes FF->00)
- {
- position -= 31;
- return leds.Color(0xFF - position * 8, 0xFF, 0);
- }
- else if (position < 95) // Green->Aqua (Green = FF, red = 0, blue goes 00->FF)
- {
- position -= 63;
- return leds.Color(0, 0xFF, position * 8);
- }
- else if (position < 127) // Aqua->Blue (Blue = FF, red = 0, green goes FF->00)
- {
- position -= 95;
- return leds.Color(0, 0xFF - position * 8, 0xFF);
- }
- else if (position < 159) // Blue->Fuchsia (Blue = FF, green = 0, red goes 00->FF)
- {
- position -= 127;
- return leds.Color(position * 8, 0, 0xFF);
- }
- else //160 <position< 191 Fuchsia->Red (Red = FF, green = 0, blue goes FF->00)
- {
- position -= 159;
- return leds.Color(0xFF, 0x00, 0xFF - position * 8);
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement