Created
February 16, 2023 18:49
-
-
Save rahulbot/1e80f24154fe3a03eca254f98b4596d8 to your computer and use it in GitHub Desktop.
Arduino neopixel examples
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#include "FastLED.h" | |
#define PIN_NEO_PIXEL 8 // Arduino pin that connects to NeoPixel | |
#define NUM_LEDS 21 | |
CRGB leds[NUM_LEDS]; | |
void setup() { FastLED.addLeds<NEOPIXEL, PIN_NEO_PIXEL>(leds, NUM_LEDS); } | |
void loop() { | |
Fire(55,120,15); | |
} | |
void Fire(int Cooling, int Sparking, int SpeedDelay) { | |
static byte heat[NUM_LEDS]; | |
int cooldown; | |
// Step 1. Cool down every cell a little | |
for( int i = 0; i < NUM_LEDS; i++) { | |
cooldown = random(0, ((Cooling * 10) / NUM_LEDS) + 2); | |
if(cooldown>heat[i]) { | |
heat[i]=0; | |
} else { | |
heat[i]=heat[i]-cooldown; | |
} | |
} | |
// Step 2. Heat from each cell drifts 'up' and diffuses a little | |
for( int k= NUM_LEDS - 1; k >= 2; k--) { | |
heat[k] = (heat[k - 1] + heat[k - 2] + heat[k - 2]) / 3; | |
} | |
// Step 3. Randomly ignite new 'sparks' near the bottom | |
if( random(255) < Sparking ) { | |
int y = random(7); | |
heat[y] = heat[y] + random(160,255); | |
//heat[y] = random(160,255); | |
} | |
// Step 4. Convert heat to LED colors | |
for( int j = 0; j < NUM_LEDS; j++) { | |
setPixelHeatColor(j, heat[j] ); | |
} | |
FastLED.show(); | |
delay(SpeedDelay); | |
} | |
void setPixel(int Pixel, byte red, byte green, byte blue) { | |
// FastLED | |
leds[Pixel].r = red; | |
leds[Pixel].g = green; | |
leds[Pixel].b = blue; | |
} | |
void setPixelHeatColor (int Pixel, byte temperature) { | |
// Scale 'heat' down from 0-255 to 0-191 | |
byte t192 = round((temperature/255.0)*191); | |
// calculate ramp up from | |
byte heatramp = t192 & 0x3F; // 0..63 | |
heatramp <<= 2; // scale up to 0..252 | |
// figure out which third of the spectrum we're in: | |
if( t192 > 0x80) { // hottest | |
setPixel(Pixel, 255, 255, heatramp); | |
} else if( t192 > 0x40 ) { // middle | |
setPixel(Pixel, 255, heatramp, 0); | |
} else { // coolest | |
setPixel(Pixel, heatramp, 0, 0); | |
} | |
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#include "FastLED.h" | |
#define PIN_NEO_PIXEL 8 // Arduino pin that connects to NeoPixel | |
#define NUM_PIXELS 21 | |
#define DELAY_INTERVAL 100 | |
CRGB leds[NUM_PIXELS]; | |
void setup() { FastLED.addLeds<NEOPIXEL, PIN_NEO_PIXEL>(leds, NUM_PIXELS); } | |
void loop() { | |
FastLED.clear(); | |
for (int pixel = 0; pixel < NUM_PIXELS; pixel++) { // for each pixel | |
setPixel(pixel, 0, 255, 0); // it only takes effect if pixels.show() is called | |
FastLED.show(); // send the updated pixel colors to the NeoPixel hardware. | |
delay(DELAY_INTERVAL); // pause between each pixel | |
} | |
} | |
void setPixel(int Pixel, byte red, byte green, byte blue) { | |
// FastLED | |
leds[Pixel].r = red; | |
leds[Pixel].g = green; | |
leds[Pixel].b = blue; | |
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#include <Adafruit_NeoPixel.h> | |
#define PIN_NEO_PIXEL 8 // Arduino pin that connects to NeoPixel | |
#define NUM_PIXELS 21 // The number of LEDs (pixels) on NeoPixel | |
#define DELAY_INTERVAL 100 | |
Adafruit_NeoPixel NeoPixel(NUM_PIXELS, PIN_NEO_PIXEL, NEO_GRB + NEO_KHZ800); | |
void setup() { | |
NeoPixel.begin(); // INITIALIZE NeoPixel strip object (REQUIRED) | |
} | |
void loop() { | |
NeoPixel.clear(); | |
for (int pixel = 0; pixel < NUM_PIXELS; pixel++) { // for each pixel | |
NeoPixel.setPixelColor(pixel, NeoPixel.Color(0, 255, 0)); // it only takes effect if pixels.show() is called | |
NeoPixel.show(); // send the updated pixel colors to the NeoPixel hardware. | |
delay(DELAY_INTERVAL); // pause between each pixel | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment