link video                

klik Belanja lampu disini

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();

}