led meteor neopixel |
kali ini saya membuat sebuah lampu meteor yang menggunakan led neopixel yang bisa di atur warnanya & jalanya sesuai keinginan kita.
Di sini saya menggunakan ARDUINO NANO & LED neopixel WS2812B 5V,namun terserah agan mau pakai yang mana karna ada juga yang 12V.selamat mencoba semoga berhasil jika ada pertanyaan mengenai program animasi lainya silahkan bertanya
silahkan download codenya di bawah : led meteor neopixel
#include <Adafruit_NeoPixel.h>
#define PIN 6
#define NUM_LEDS 51
Adafruit_NeoPixel strip = Adafruit_NeoPixel(NUM_LEDS, PIN, NEO_GRB + NEO_KHZ800);
void setup() {
strip.begin();
strip.show();
}
void loop() {
meteorRain(255,125,130,255, 51, true, 0);//tarjo channel
}
void meteorRain(byte red, byte green, byte blue, byte meteorSize, byte meteorTrailDecay, boolean meteorRandomDecay, int SpeedDelay) {
setAll(0,0,0);
for(int i = 0; i < NUM_LEDS+NUM_LEDS; i++) {
for(int j=0; j<51; j++) {
if( (!meteorRandomDecay) || (random(96)>0) ) {
fadeToBlack(j, meteorTrailDecay );
}
}
for(int j = 0; j <1; j++) {
if( ( i-j <51) && (i-j>=0) ) {
setPixel(i-j, 255, green, blue);
}
}
showStrip();
delay(20);
}
for(int i = 0; i < NUM_LEDS+NUM_LEDS; i++) {
for(int j=0; j<51; j++) {
if( (!meteorRandomDecay) || (random(35)>0) ) {//
fadeToBlack(j, meteorTrailDecay );
}
}
for(int j = 0; j <1; j++) {
if( ( i-j <51) && (i-j>=0) ) {
setPixel(i-j, 255, 0, 55);
}
}
showStrip();
delay(20);
}
for(int i = 0; i < NUM_LEDS+NUM_LEDS; i++) {
for(int j=0; j<51; j++) {
if( (!meteorRandomDecay) || (random(96)>0) ) {
fadeToBlack(j, meteorTrailDecay );
}
}
for(int j = 0; j <1; j++) {
if( ( i-j <51) && (i-j>=0) ) {
setPixel(i-j, 25, 50, 220);
}
}
showStrip();
delay(20);
}
for(int i = 0; i < NUM_LEDS+NUM_LEDS; i++) {
for(int j=0; j<51; j++) {
if( (!meteorRandomDecay) || (random(35)>0) ) {
fadeToBlack(j, meteorTrailDecay );
}
}
for(int j = 0; j <1; j++) {
if( ( i-j <51) && (i-j>=0) ) {
setPixel(i-j, 255, 0, 150);
}
}
showStrip();
delay(20);
}
}
void fadeToBlack(int ledNo, byte fadeValue) {
#ifdef ADAFRUIT_NEOPIXEL_H
// NeoPixel
uint32_t oldColor;
uint8_t r, g, b;
int value;
oldColor = strip.getPixelColor(ledNo);
r = (oldColor & 0x00ff0000UL) >> 16;
g = (oldColor & 0x0000ff00UL) >> 8;
r=(r<=5)? 0 : (int) r-(r*fadeValue/256);
g=(g<=5)? 0 : (int) g-(g*fadeValue/256);
b=(b<=5)? 0 : (int) b-(b*fadeValue/256);
strip.setPixelColor(ledNo, r,g,b);
#endif
#ifndef ADAFRUIT_NEOPIXEL_H
leds[ledNo].fadeToBlackBy( fadeValue );
#endif
}
void showStrip() { ///tarjo channel
#ifdef ADAFRUIT_NEOPIXEL_H
strip.show();
#endif
#ifndef ADAFRUIT_NEOPIXEL_H
FastLED.show();
#endif
}
void setPixel(int Pixel, byte red, byte green, byte blue) {
#ifdef ADAFRUIT_NEOPIXEL_H
strip.setPixelColor(Pixel, strip.Color(red, green, blue));
#endif
#ifndef ADAFRUIT_NEOPIXEL_H
leds[Pixel].r = red;
leds[Pixel].g = green;
leds[Pixel].b = blue;
#endif
}
void setAll(byte red, byte green, byte blue) {
for(int i = 0; i < 51; i++ ) {
setPixel(i, red, green, blue);
}
showStrip();
}
1 comment for "led meteor neopixel"