This Blog is protected by DMCA.com

Tuesday, October 1, 2019

Mengontrol LED Strip dengan arduino + Penjelasan lengkap (Pemrograman dasar)


Pada artikel kali ini, kita akan belajar untuk mengontrol tampilan lampu led strip menggunakan arduino, baik itu membuat animasi kekanan, kekiri, pinggir ketengah, kemasjid dan segala macam. langsung saja, simak tutorial dibawah ini.



Sebelum itu, saya asumsikan anda sudah menguasai dasar pemrograman c++ seperti pengkondisian IF dan perulangan seperti FOR karena kedua identifier itu kita gunakan untuk membuat animasi led.












Pengertian LED strip dan jenisnya



LED Strip adalah kumpulan lampu LED yang disusun menjadi semacam pita dan dikontrol oleh mikrokontroller. Kegunaannya bisa bermacam-macam, mulai dari dekorasi dinding, hiasan PC gaming, aksesoris kendaraan dan sebagainya



Bahkan orang juga didekorasi pakai LED strip





Kemudian, LED strip juga memiliki banyak jenis, berikut faktor spesifikasinya







  • Warna
LED strip ada yang memiliki 1 warna, dan ada juga berwarna-warni (RGB). biasanya led strip RGB lebih mahal dari pada led strip 1 warna. 


  • Addressable atau tidak
  • LED strip yang sudah addressable berarti LED strip tersebut dapat dinyalakan/dimatikan secara individual, misalnya LED pertama dimatikan, yang kedua dihidupkan dst. 
    Pada LED satu warna, kita bisa menghidupkan led 1 selagi mematikan yang lainnya secara bersamaan, jadi kita bisa buat animasi led berjalan. Namun pada LED strip RGB, kita bisa menghidupkan led dengan warna bervariasi disetiap LEDnya sehingga memungkinkan kita untuk bisa buat pelangi berjalan 
    Untuk pinnya, biasanya hanya ada 3 yaitu: VCC, DI, dan GND. DI adalah data input signal, nah sinyal inilah yang kita kirimkan dari mikrokontroller.
    Berbeda dengan led yang bukan addressable, biasanya led strip non-addressable hanya memiliki pin VCC dan GND, sehingga cukup diberikan arus, led sudah bisa hidup. Untuk LED strip RGB non-addressable, biasanya terdapat 3 pin atau lebih sebagai pengatur warna, dan 1 pin gnd/vcc
  • Density / Kerapatan
LED strip juga memiliki kerapatan setiap led yang berbeda-beda, ada yang memiliki 30 LED / meter, 60 LED/ meter, 144 LED / meter dan sebagainya.




  • Tegangan Supply
Di pasaran, ada beberapa versi untuk tegangan yang diperlukan. Ada yang butuh 5V, 12V, dan 24V. Namun perberdaan tegangan ini ada efek samping pada LED addressable,

jika tegangan supply-nya 5V, LED tersebut dapat dikontrol secara individual setiap 1 LED.



Namun tidak untuk 12V, led tersebut dikontrol secara individual setiap 3 LED, jadi jika kita atur warna urutan 1 merah dan urutan 2 menjadi biru, hasilnya adalah 3 LED pertama merah dan 3 LED kedua berwarna biru. Biasanya terdapat IC di setiap 3 LED menandakan 3 LED tersebut menggunakan 1 IC yang sama






Sekarang anda tahu jenis-jenisnya, jangan bingung kalau di tokopedia ada barang tertulis sebagai berikut: Led Strip WS2812B Addressable RGB 30 Led/meter 5V


Sedikit teori

Pada artikel ini kita menggunakan LED strip yang addressable sehingga kita bisa membuat animasi yang menarik. 

LED Strip menurut saya adalah keajaiban, karena hanya dengan 1 pin data, kita bisa mengatur belasan, puluhan, bahkan ratusan LED. Bagaimana bisa?

Setiap led membutuhkan 24 bit data untuk menampilkan tampilan dengan warna tertentu,

formatnya adalah 8 bit pertama untuk green, 8 bit kedua untuk red, 8 bit ketiga untuk blue. Tata cara menerapkan bit tersebut adalah dengan membuat interval logika 0 dan 1 seperti berikut



Cukup pusing kan? Jangan khawatir, kita tidak perlu bermain bit-bit tersebut tapi cukup dengan menggunakan library NeoPixel yang disediakan oleh Adafruit.



Singkatnya, dengan menggunakan library neopixel kita cukup menentukan led berapa? dihidupkan dengan warna apa? seberapa terang?



berikut script dasarnya:





  • Mengimport library dan mengkonfigurasi led strip yang digunakan

/* --------------------------------------------------
 * Import library neopixel
 */
#include <Adafruit_NeoPixel.h>

/* --------------------------------------------------
 * Membuat objek  led strip bernama "strip" untuk digunakan (nama bebas) 
 * dengan format: Adafruit_NeoPixel(jumlah_lednya, pin_arduino, NEO_GRB + NEO_KHZ800)
 */
Adafruit_NeoPixel strip = Adafruit_NeoPixel(60, 6, NEO_GRB + NEO_KHZ800);



  • Mengaktifkan strip, agar dapat digunakan
strip.begin();




  • Mengatur brightness / kecerahan
strip.setBrightness(nilai_kecerahan)


nilai kecerahan dimulai dari 0 - 255,

semakin besar semakin cerah



  • Mendefinisikan warna (via RGB)
strip.Color(merah, hijau, biru);


nilai masing-masing warna: 0 - 255



Misalnya: (255, 0, 0) menghasilkan warna merah

(255, 255, 0) menghasilkan warna kuning (campuran merah + hijau)


Tips: Search di google dengan keywoard "Color picker"pilih warna, ambil nilai rgbnya



  • Mendefinisikan warna (via HSV)
strip.ColorHSV(hue, saturation, value);
// atau cukup dengan
strip.ColorHSV(hue);


nilai hue = 0 - 65536 (atau lebar integer 16 bit)

nilai saturation = 0-255

nilai value = 0-255



HSV adalah salah satu alternatif RGB jika kita ingin mendapatkan warna berdasarkan slider spektrum warna HSV seperti  gambar dibawah



  • Mengatur warna pada seluruh led
strip.fill(warna)


Misal: untuk mengatur warna kuning pada semua led jadi seperti berikut



strip.fill(strip.Color(255, 255, 0));



  • Mengatur warna pada led tertentu
strip.setPixelColor(urutan_led, warnanya)


Urutan led dimulai dari 0, jadi untuk led ketiga ditulis 2



Misal: untuk mengatur warna biru pada led nomor 3 seperti berikut



strip.setPixelColor(2, strip.Color(0, 0, 255));






  • Mematikan seluruh led
strip.clear();


  • Menampilkan pengaturan warna pada led strip
strip.show();


Semua kode pengaturan diatas seperti fill(), setPixelColor(), clear() tidak akan ngefek pada led strip sebelum strip.show() dilakukan, maka biasanya strip.show() dituliskan setelah kode-kode tersebut.

  • Mengambil jumlah led yang sudah dideklarasikan
strip.numPixels();







Meng-install Library





  • Pastikan anda sudah menginstall Arduino
  • masuk ke sketch > include library > manage library
  • Pada search, ketikkan "Adafruit Neopixel"
  • Pilih yang single-wire-based, Klik install








Bermain dengan warna



konfigurasi led strip yang saya gunakan pada kode dibawah adalah

menggunakan 60 led dengan pin DI di pin 6 arduino,

Atur wiringnya, jangan lupa menghubungkan VCC dan GND



Skenario 1

Menampilkan warna biru, kemudian jeda setengah detik, lalu menampilkan warna merah, jeda lagi setengah detik, kemudian ulang dari awal lagi.



/* --------------------------------------------------
 * Import library neopixel
 */
#include <Adafruit_NeoPixel.h>

/* --------------------------------------------------
 * Membuat objek led strip untuk digunakan 
 * dengan format: Adafruit_NeoPixel(jumlah_lednya, pin_arduino, NEO_GRB + NEO_KHZ800)
 */
Adafruit_NeoPixel strip = Adafruit_NeoPixel(60, 6, NEO_GRB + NEO_KHZ800);


/* --------------------------------------------------
 * memulai tampilan strip 
 * (dilakukan didalam setup karena strip.begin() cukup di lakukan sekali)
 */
void setup() {
    strip.begin(); // mengaktifkan led strip
    strip.show(); // menampilkan tampilan strip (karena belum ada settingan apapun jadi mati semua)
}

void loop() {
    strip.fill(strip.Color(0, 0, 255)); // Mengatur warna menjadi biru
    strip.show(); // Menampilkan settingan diatas pada led (apply)
    delay(500); // Jeda 1 detik
    strip.fill(strip.Color(255, 0, 0)); // Mengatur warna menjadi merah
    strip.show(); // Menampilkan settingan diatas pada led (apply)
    delay(500); // jeda 1 detik
}


Diatas, saya menggunakan strip.fill() untuk mengatur keseluruhan warna dan menampilkannya menggunakan strip.show(). cukup simple..



Hasilnya seperti berikut:







Skenario 2

Pada pengaturan warna, nilai warna tidak hanya bisa ditentukan lewat angka tetap, namun juga bisa ditentukan dari perulangan. Oleh karena itu, kita coba lakukan perulangan 0 sampai 255 dan diterapkan nilai tersebut ke nilai merah..

Hasilnya, kita mendapatkan efek fading warna merah karena kita mengatur warna merah dari 0 sampai 255 satu persatu menggunakan perulangan.



Berikut kodenya:

/* --------------------------------------------------
 * Import library neopixel
 */
#include <Adafruit_NeoPixel.h>

/* --------------------------------------------------
 * Membuat objek led strip untuk digunakan 
 * dengan format: Adafruit_NeoPixel(jumlah_lednya, pin_arduino, NEO_GRB + NEO_KHZ800)
 */
Adafruit_NeoPixel strip = Adafruit_NeoPixel(60, 6, NEO_GRB + NEO_KHZ800);


/* --------------------------------------------------
 * memulai tampilan strip 
 * (dilakukan didalam setup karena strip.begin() cukup di lakukan sekali)
 */
void setup() {
    strip.begin(); // mengaktifkan led strip
    strip.show(); // menampilkan tampilan strip (karena belum ada settingan apapun jadi mati semua)
}

void loop() {
  // Melakukan perulangan dari 0 sampai 255 yang tersimpan di variabel i
  for (int i = 0; i <= 255; i++) { 
    strip.fill(strip.Color(i, 0, 0)); // nilai tersebut dimasukkan ke dalam pengaturan warna merah
    strip.show(); // menampilkan hasil pengaturan warna
    delay(50); // kecepatan fade
  }
}


Pada kode diatas, saya melakukan perulangan menggunakan for() { isi_perulangan } mulai dari 0 sampai 255, disetiap perulangannya dilakukan pengaturan warna  kemudian ditampilkan dengan strip.show(), alhasil nilai warna merah bertambah 1 setiap 50 milidetik sampai nilai mencapai 255.



hasilnya seperti berikut:





Skenario 3

Dengan memanfaatkan ColorHSV, kita bisa menggeser warna berdasarkan spektrum hue menggunakan perulangan sehingga menjadi seperti efek pelangi yang tidak bergerak



/* --------------------------------------------------
 * Import library neopixel
 */
#include <Adafruit_NeoPixel.h>

/* --------------------------------------------------
 * Membuat objek led strip untuk digunakan 
 * dengan format: Adafruit_NeoPixel(jumlah_lednya, pin_arduino, NEO_GRB + NEO_KHZ800)
 */
Adafruit_NeoPixel strip = Adafruit_NeoPixel(60, 6, NEO_GRB + NEO_KHZ800);


/* --------------------------------------------------
 * memulai tampilan strip 
 * (dilakukan didalam setup karena strip.begin() cukup di lakukan sekali)
 */
void setup() {
    strip.begin(); // mengaktifkan led strip
    strip.show(); // menampilkan tampilan strip (karena belum ada settingan apapun jadi mati semua)
}

void loop() {
  // Melakukan perulangan dari 0 sampai 130 yang tersimpan di variabel i
  for (int i = 0; i < 130; i++) { 
    strip.fill(strip.ColorHSV(i*500)); // setiap perulangan dikali 500 (agar bisa mencapai 65000)
    strip.show(); // menampilkan hasil pengaturan warna
    delay(20); // kecepatan pergantian warna
  }
}


Color HSV mempunyai range nilai 0 - 65536, maka saya gunakan perulangan sampai 130 dan pengaturan warna menjadi i * 500 sehingga bisa mencapai nilai maksimal ke 65000, (130*500).



Sehingga hasilnya seperti berikut:










Membuat scrolling led berjalan



Anda sudah menguasai bagaimana teknik pemrograman untuk mengkonfigurasi warna LED, sekarang kita akan belajar bagaimana cara mensetting led secara individual. Dengan mensetting led secara individual kita bisa membuat efek-efek dan animasi yang jauh lebih menarik.



Skenario 1

Membuat led hidup satu persatu, kemudian mati satu persatu juga, lalu diulangi lagi.



Skenario tersebut dapat dilakukan menggunakan perulangan seperti contoh sebelumnya,



/* --------------------------------------------------
 * Import library neopixel
 */
#include <Adafruit_NeoPixel.h>

/* --------------------------------------------------
 * Membuat objek led strip untuk digunakan 
 * dengan format: Adafruit_NeoPixel(jumlah_lednya, pin_arduino, NEO_GRB + NEO_KHZ800)
 */
Adafruit_NeoPixel strip = Adafruit_NeoPixel(20, 6, NEO_GRB + NEO_KHZ800);


/* --------------------------------------------------
 * memulai tampilan strip 
 * (dilakukan didalam setup karena strip.begin() cukup di lakukan sekali)
 */
void setup() {
    strip.begin(); // mengaktifkan led strip
    strip.show(); // menampilkan tampilan strip (karena belum ada settingan apapun jadi mati semua)
}

void loop() {
  // Menghidupkan lampu LED
  for (int i = 0; i < strip.numPixels(); i++) { 
    strip.setPixelColor(i, strip.Color(0, 255, 0)); // Mensetting lampu urutan ke - i menjadi hijau
    strip.show(); // menampilkan hasil pengaturan warna
    delay(50); // kecepatan pergantian warna
  }
  // Mematikan lampu LED
  for (int i = 0; i < strip.numPixels(); i++) { 
    strip.setPixelColor(i, strip.Color(0, 0, 0)); // // Mensetting lampu urutan ke - i menjadi mati
    strip.show(); // menampilkan hasil pengaturan warna
    delay(50); // kecepatan pergantian warna
  }
}


Mirip dengan contoh sebelumnya, saya menggunakan perulangan dari 0 ke berapapun jumlah pixel yang anda setting ( strip.numPixel() )  dimana pada kasus ini bernilai 10, saya manfaatkan nilai i untuk men-setting led ke - i menjadi hijau.

Setelah selesai mengulang, saya lakukan perulangan yang sama namun dengan men-setting led ke - i menjadi mati



Hasilnya:





Anda juga bisa memutar balik perulangannya menjadi dari 10 ke 0 untuk mengganti arah scrolling lednya, berarti didalam loop kodenya seperti berikut ini:

// Menghidupkan lampu LED
for (int i = strip.numPixels(); i > 0; i--) { 
  strip.setPixelColor(i, strip.Color(0, 255, 0)); // Mensetting lampu urutan ke - i menjadi hijau
  strip.show(); // menampilkan hasil pengaturan warna
  delay(50); // kecepatan pergantian warna
}
// Mematikan lampu LED
for (int i = strip.numPixels(); i > 0; i--) { 
  strip.setPixelColor(i, strip.Color(0, 0, 0)); // // Mensetting lampu urutan ke - i menjadi mati
  strip.show(); // menampilkan hasil pengaturan warna
  delay(50); // kecepatan pergantian warna
}




Skenario 2

Membuat running led. Pada dasarnya sama dengan sebelumnya, tapi hidupnya satu per satu.



Logikanya cukup mudah,

dengan kode diatas, pada setiap perulangan, kita matikan lampu urutan ke i-1


/* --------------------------------------------------
 * Import library neopixel
 */
#include <Adafruit_NeoPixel.h>

/* --------------------------------------------------
 * Membuat objek led strip untuk digunakan 
 * dengan format: Adafruit_NeoPixel(jumlah_lednya, pin_arduino, NEO_GRB + NEO_KHZ800)
 */
Adafruit_NeoPixel strip = Adafruit_NeoPixel(20, 6, NEO_GRB + NEO_KHZ800);


/* --------------------------------------------------
 * memulai tampilan strip 
 * (dilakukan didalam setup karena strip.begin() cukup di lakukan sekali)
 */
void setup() {
    strip.begin(); // mengaktifkan led strip
    strip.show(); // menampilkan tampilan strip (karena belum ada settingan apapun jadi mati semua)
}

void loop() {
  for (int i = 0; i < strip.numPixels(); i++) { 
    strip.setPixelColor(i, strip.Color(0, 255, 0)); // Mensetting lampu urutan ke - i menjadi hijau
    strip.setPixelColor(i-1, strip.Color(0, 0, 0)); // Mematikan lampu pada urutan sebelumnya
    strip.show(); // menampilkan hasil pengaturan warna
  
    // Jika perulangan sudah sampai akhir, kita matikan lampu led terakhir tersebut agar tidak sisa
    if (i == strip.numPixels() - 1) {
      strip.setPixelColor(i, strip.Color(0, 0, 0));
    }
    delay(50); // kecepatan running led (jeda sebelum geser)
  }
}




Hasilnya :





Skenario 3

Membuat  pelangi berjalan



/* --------------------------------------------------
 * Import library neopixel
 */
#include <Adafruit_NeoPixel.h>

/* --------------------------------------------------
 * Membuat objek led strip untuk digunakan 
 * dengan format: Adafruit_NeoPixel(jumlah_lednya, pin_arduino, NEO_GRB + NEO_KHZ800)
 */
Adafruit_NeoPixel strip = Adafruit_NeoPixel(20, 6, NEO_GRB + NEO_KHZ800);


/* --------------------------------------------------
 * memulai tampilan strip 
 * (dilakukan didalam setup karena strip.begin() cukup di lakukan sekali)
 */
void setup() {
    strip.begin(); // mengaktifkan led strip
    strip.show(); // menampilkan tampilan strip (karena belum ada settingan apapun jadi mati semua)
}

void loop() {
  for(int8_t shift = 0; shift <= 450; shift++) {
    for(int8_t led = 0; led < strip.numPixels(); led++) {
      strip.setPixelColor(led, strip.ColorHSV((led*1000 + (shift*500))));
    }
    delay(10); // kecepatan scrolling
    strip.show();
  }
}


Lupa saya gan algoritmanya, wkwkwk.. intinya dengan mengambil range tertentu di pita warna HSV, kemudian range tersebut digeser sehingga membentuk warna yang "berjalan" diatas pita warna HSV.



jadinya seperti berikut:






Kesimpulan



Jika anda menguasai semua dasar pemrograman diatas, anda dengan mudah dapat membuat variasi animasi dan efek led sesuai dengan keinginan anda sendiri.



led strip ini bisa digunakan untuk menghias apa saja, misalnya, pada PC anda tidak ada fitur RGB pada motherboard, anda bisa buat dan dikontrol lewat PC. selain itu, bahkan kucing anda bisa saja anda buatkan kalung RGB agar terlihat seperti kucing modern.

Kalau tanya bisa di:
IG : @badar.wildanie (bantu follow lah, cuma sedikit hehe)
WA : 082228 111 059

ya itu aja, hehe.

selamat berkreasi..


91 Comments

Terima kasih tutorialnya ya mas, semoga bermanfa'at dan menjadikan amal baik bt mas Wildanie, sekalian ikut nanya y mas, saya mencoba dgn cara ini blm berhasil dgn baik, mohon pencerahannya


// Menghidupkan lampu LED

for (int i = strip.numPixels(); i > 0; i--) {
strip.setPixelColor(i-5, strip.Color(255, 0, 255));
strip.setPixelColor(i, strip.Color(0, 0, 0));
strip.show();
delay(50);
}


if (i == strip.numPixels()-1){
}
delay(50);
}

NB:
LED yang awal s/d 5 titik led padam, jadi led tidak mau nyala dari awal ini mas,
Terima kasih

Sama-sama bang.. untuk kodenya harusnya seperti ini


void loop() {
for (int i = strip.numPixels()-1; i >= 0; i--) {
strip.setPixelColor(i, strip.Color(255, 0, 255));
strip.setPixelColor(i+1, strip.Color(0, 0, 0));
strip.show();
delay(50);
}
if (i == 0) {
strip.setPixelColor(i, strip.Color(0, 0, 0));
}
delay(50);
}

hasilnya jadi running led warna ungu (campuran merah + biru)

Alkhamdulillah mas, berkat ilmu dr mas akhirnya bs kreasi utak atik dan hasilnya lumayan senang, syukron jazilan

alhamdulillah bang, saya ikut senang.. selamat berkreasi..

Nanya lagi mas,
Kalo mau buat efek trabarakan supaya lanjut kesamping tidak mandeg di tengah² formatnya gmn y mas, saya buat format seperti ini , hasil nya led bertemu di tengah² tidak mau lanjut kasamping kanan kiri.

Terima kasih 🙏


void loop() {

for (int i = 12 / 2 ; i > 0; i--) {

strip.setPixelColor / 2 (- i,strip.Color(0, 255, 0));

strip.setPixelColor / 2 (+i,strip.Color(0, 255, 0));

strip.show();
delay(50);
}
}

Ya monggo, silahkan pakai source code dibawah ini
(Running led nabrak ke tengah warna hijau)

void loop() {
for (int i = 0; i < (strip.numPixels() / 2); i++) {
// Menghidupkan LED
strip.setPixelColor(i, strip.Color(0, 255, 0)); // Running led kiri
strip.setPixelColor(strip.numPixels() - 1 - i, strip.Color(0, 255, 0)); // Running led kanan

// Mematikan LED
strip.setPixelColor(i-1, strip.Color(0, 0, 0));
strip.setPixelColor(strip.numPixels() - i, strip.Color(0, 0, 0));

// Mematikan 2 LED di tengah, biar gak sisa
if (i == 0) {
strip.setPixelColor((strip.numPixels()/2), strip.Color(0, 0, 0));
strip.setPixelColor((strip.numPixels()/2)-1, strip.Color(0, 0, 0));
}
strip.show();
delay(50);
}
}

Alkhamdulillah mas, sukses sesuai harapan, terima kasih y mas, semoga Alloh Swt membalas amal baik mas dgn kebaikan yg lebih, Aamiiin...

Oh ya mas, boleh nanya² lg kah mas,

Saya mau buat led jalan bersamaan
Led 0 sampe akhir 9
Dan
Led 11 sampe akhir 19

Tp lg² masih blm berhasil ini mas, mohon pencerahannya,

Saya pake format sperti ini mas, namun Led gk mau jalan. Syukron Jazilan 🙏

void loop() {

for (int i = 11 ; i < 42 / 2 ; i++) {
strip.setPixelColor(i-1, strip.Color(0, 0, 0));

strip.setPixelColor(i, strip.Color(0, 255, 0));

strip.show();
delay(50);

if (i =0) {
strip.setPixelColor(i-1, strip.Color(0, 0, 0));

strip.setPixelColor(i, strip.Color(0, 255, 0));
}
delay(50);
}
}

Amiin, ya rabbal alamin.. terimakasih banyak bang
btw dibawah adl kode utk 2 running led berjalan ke arah yang sama,
dengan masing-masing lebar 1/2 dari total led yang digunakan

void loop() {
// Membuat perulangan dari 0 ke setengah dari led yg digunakan
for (int i = 0; i < (strip.numPixels() / 2); i++) {
// Menghidupkan LED
strip.setPixelColor(i, strip.Color(0, 255, 0)); // Running led kiri
strip.setPixelColor(strip.numPixels() / 2 + i, strip.Color(0, 255, 0)); // Running led kanan (mulai dari led tengah)

// Mematikan LED
strip.setPixelColor(i-1, strip.Color(0, 0, 0));
strip.setPixelColor(strip.numPixels() / 2 + i - 1, strip.Color(0, 0, 0));

// Mematikan 2 LED di tengah, biar gak sisa
if (i == 0) {
strip.setPixelColor((strip.numPixels()/2)-1, strip.Color(0, 0, 0));
strip.setPixelColor(strip.numPixels()-1, strip.Color(0, 0, 0));
}
strip.show();
delay(50);
}
}

Alkhamdulillah Ya Alloh...
Terima kasih banget njih mas,
Done sesuai harapan
Semoga amal baik mas tergolong aman sholikhan maqbulan 'indalloh tergolong amal jariyah berkah bermanfa'at ila Yaumil Qiyamah, Aamiiin...

Sementara aq kreasiken dulu ya mas, mungkin suatu saat bakalan nanya² lg, semoga mas tidak bosan dan semua khajat² mas selalu dimudahkan Alloh Swt, Aamiiin... 🙏

Alkhamdulillah Terima kasih banyak y mas, lantaran mas,hasil kreasi saya sperti berikut ini mas, 🙏


https://youtu.be/_qt9FsrpdNg

slam. mau masu tanya, kalau misal mau efek 300 animasi kaya sp105s bisa gak ya pake uno?

ya, bisa saja tapi tidak bisa digunakan pada led yang lebih banyak (misalnya diatas 200 led) karena ukuran penyimpanan sketch dan ram yang tidak cukup
disarankan pakai ESP32 atau ESP8266 biasa sebab ukuran ram dan storagenya lebih besar + udah punya interface WiFi

Mantab2 tutorialnya ..kapan dolen2 ning Bali

Gak sampe 200 led ko.. paling panjang 70an tp kanan kiri...oh mas kl menambhakan animasi gmn ya.. misal yg contoh mas buat. Contoh 1 trs inngin lanjut contoh dua itu pakai coding apa.. soalnya sy kl hanya kopas contoh itu gk bs

@usman, taruh saja kode animasi kedua dibawah animasi pertama.

Bagaimana caranya led runing pkek promini

@Unknown Sama aja gan, upload sketchnya via FTDI lalu hubungkan DI dari led strip ke pin yang sudah ditentukan oleh sketch nya, contohnya kalau kode-kode diatas, saya set ke pin 6.
Jangan lupa hubungkan vcc dan gnd nya led strip.

Mksh bos ku,aku pngen bljr cara membuat lampu runing yng ada di truk bos..kyk strobo....

This comment has been removed by the author.

mas cara menambahkan animasi warna pelangi ke program saya ini gimana mas

#include

#define LED_PIN 11
#define NUM_LEDS 14

CRGB ledsA[NUM_LEDS];

void setup()
{
FastLED.addLeds(ledsA, NUM_LEDS);
}

void Keluar_Kanan_Kiri()
{
//Blue
ledsA[0].setRGB(0,0,0);
ledsA[1].setRGB(0,0,0);
ledsA[2].setRGB(0,0,0);
ledsA[3].setRGB(0,0,0);
ledsA[4].setRGB(0,0,0);
ledsA[5].setRGB(0,0,0);
ledsA[6].setRGB(252,28,3);
ledsA[7].setRGB(252,28,3);
ledsA[8].setRGB(0,0,0);
ledsA[9].setRGB(0,0,0);
ledsA[10].setRGB(0,0,0);
ledsA[11].setRGB(0,0,0);
ledsA[12].setRGB(0,0,0);
ledsA[13].setRGB(0,0,0);

Assalamualaikum pak Wildan
Mau nanya cara membuat lampu sein kanan kiri dan rem bagaimana pak, terima ksh

/* --------------------------------------------------
* Import library neopixel
*/
#include

/* --------------------------------------------------
* Membuat objek led strip untuk digunakan
* dengan format: Adafruit_NeoPixel(jumlah_lednya, pin_arduino, NEO_GRB + NEO_KHZ800)
*/
Adafruit_NeoPixel strip = Adafruit_NeoPixel(20, 6, NEO_GRB + NEO_KHZ800);


/* --------------------------------------------------
* memulai tampilan strip
* (dilakukan didalam setup karena strip.begin() cukup di lakukan sekali)
*/
void setup() {
strip.begin(); // mengaktifkan led strip
strip.show(); // menampilkan tampilan strip (karena belum ada settingan apapun jadi mati semua)
}

void loop() {
for (int i = 0; i < strip.numPixels(); i++) {
strip.setPixelColor(i, strip.Color(0, 255, 0)); // Mensetting lampu urutan ke - i menjadi hijau
strip.setPixelColor(i-1, strip.Color(0, 0, 0)); // Mematikan lampu pada urutan sebelumnya
strip.show(); // menampilkan hasil pengaturan warna

// Jika perulangan sudah sampai akhir, kita matikan lampu led terakhir tersebut agar tidak sisa
if (i == strip.numPixels() - 1) {
strip.setPixelColor(i, strip.Color(0, 0, 0));
}
delay(50); // kecepatan running led (jeda sebelum geser)
}
}




untuk prodram ini pin analog nya yg mana ?

mas minta alamat email atau no WA kalau boleh terimakasih

Mohon maaf, untuk yang bertanya lebih lanjut silahkan hubungi WA (message only) di :
0812-2849-4461 karena bisa upload gambar, video, code dll
@tup: Silahkan gan, nomor diatas
@Harris Rendra: Nomerku ganti cak, nomer e samean ilang, chat via nomor diatas

@Unknown: Pinnya ada di pin 6, berasal dari kode ini
=> Adafruit_NeoPixel(20, 6, NEO_GRB + NEO_KHZ800);
btw, itu bukan pin analog, melainkan pin digital untuk output

Mas saya mau tanya. Tadi saya memasukan coding yang mas contohkan.void loop() {
for (int i = 0; i < (strip.numPixels() / 2); i++) {
// Menghidupkan LED
strip.setPixelColor(i, strip.Color(0, 255, 0)); // Running led kiri
strip.setPixelColor(strip.numPixels() - 1 - i, strip.Color(0, 255, 0)); // Running led kanan

// Mematikan LED
strip.setPixelColor(i-1, strip.Color(0, 0, 0));
strip.setPixelColor(strip.numPixels() - i, strip.Color(0, 0, 0));

// Mematikan 2 LED di tengah, biar gak sisa
if (i == 0) {
strip.setPixelColor((strip.numPixels()/2), strip.Color(0, 0, 0));
strip.setPixelColor((strip.numPixels()/2)-1, strip.Color(0, 0, 0));
}
strip.show();
delay(50);
}
}
Nahh yang menyala hanya running led ke kiri, sedangkan yang ke kanan tidak nyala/tabrakan. Saya mengunakan led ws2811 60led 20ic.
Mohon di bantu mas. Trimakasih.

Mas kalo menentukan jumlah ic Lednya seperti apa ya?

@dimas kalau suppy 5v cukup hitung jumlah lampu led nya saja, (total led / 1)
untuk 12v, jumlah keseluruhan lampu led dibagi dengan 3 (total led / 3)
untuk 24v, jumlah keseluruhan lampu led dibagi dengan 6 (total led / 6)

@Badar Wildanie mass mau tanya kalo untuk memberi perintah berhenti pada led yg sudah berjalan ada codingan tambahan kah ?

contoh :


void loop() {
for (int i = 0; i < strip.numPixels(); i++) {
strip.setPixelColor(i, strip.Color(0, 255, 0)); // Mensetting lampu urutan ke - i menjadi hijau
strip.setPixelColor(i-1, strip.Color(0, 0, 0)); // Mematikan lampu pada urutan sebelumnya
strip.show(); // menampilkan hasil pengaturan warna

// Jika perulangan sudah sampai akhir, kita matikan lampu led terakhir tersebut agar tidak sisa
if (i == strip.numPixels() - 1) {
strip.setPixelColor(i, strip.Color(0, 0, 0));
}
delay(50); // kecepatan running led (jeda sebelum geser)
}
}

Pasti dia akan jalan terus tidak akan berhenti

@jul sekalian penjelesannya ya gan
Animasi led nya berjalan didalam for loop, jadi selama variabel forloop (variabel i) mempunyai nilai dibawah strip.numPixels() (atau jumlah led yang ditetapkan) maka animasinya tetap berjalan, agar animasi berhenti tambahkan baris kode spt berikut pada bagian/waktu yang agan ingin berhenti:

i = strip.numPixels() + 10;

secara otomatis nilai i sudah diatas strip.numPixels() jadi forloop nya udah mati/selesai yg artinya animasinya berhenti

@ badar wildanie
Maaf mas sya pemula...untuk mengabungkan beberapa coding menjadi satu itu gn ya....🙏

@Dk taruh kode yang mau digabungkan diatas simbol } dipaling bawah..
karena kode utama selalu berada didalam loop(){ ini_kumpulan_kodenya }

pak buat tutor jam digital dengan dengan warna pelanggi

ass bang badar widanie
saya minta ilmunya buat arti penjelasan coding ws2811 simbol-simbol nya dan apa pungsinya mohon untuk penjelasan nya semoga ilmu bang badar yang di bagikan terbalas allh swt amin...

biar keatifitas saya sendiri yang menjalankan nya sesuia keinginan kita dengan hasil ilmu penjelasan bang badar wildanie
mohon bantuan nya

Maaf agak lambat jawab..
@unknown: untuk perintah-perintah ws2811/12 sudah saya tulis di atas, pada bagian Sedikit teori [klik disini]

Jika agan masih pemula di pemrograman arduino, saya sarankan untuk mempelajari dasarnya dulu (cek google, cari: "dasar coding arduino"), setelah memahami struktur dan penulisannya, barulah agan bisa nyoba perintah ws2811/12 ini dengan mudah.

allhamdulillah bang badar wildane
trimakasih atas sarannya
saya mau tanya abang. yang mereka kerjakan coding di ws2811 yg banyak mode lebih jelasnya pake code cara yg bagaimana mohon sedikit cara pengetahuan nya

ada yg bisa dihubungi nomor abang
yang di atas gk bisa di hubungi

@Unknown untuk membuat banyak mode, cara kodingnya sama saja. mereka membuat kode animasi bervariasi satu persatu yang kemudian di masukkan kedalam fungsi (dijelaskan pada dasar-dasar pemrogramannya).
Kemudian pada fungsi utama arduino loop() tinggal memanggil fungsi-fungsi tersebut entah berdasarkan durasi / delay(), ataupun masukkan tegangan dari pin input (seperti tombol / sensor) yang dimana itu terserah si pembuat/programmer.

Pemrograman bisa sangat sulit gan kalau ingin hasil yang cepat tanpa mempelajari dasar pemrogramannya, namun sekali paham dengan dasarnya agan bisa mempelajari hampir semua jenis pemrograman dengan mudah. mungkin saya perlu buatkan artikel untuk dasarnya.

sementara hpku rusak gan, tapi bisa dm via IG

Mas badar mau nanya untuk menggabungkan program atau animasi selanjutnya setelah void loop pertama dan untuk mode selanjutnya gimana apa cuma void 1 void 2 dan seterusnya untuk animasi selanjutnya terimakasih.

This comment has been removed by the author.

@Dita Electro Iya gan, WA sementara belum bisa
pindah ke DM Instagram dulu ya..
IG : @badar.wildanie

assalamualaikum bang badar widanie
saya minta pendapat abang lw pelangi jalan di tengah ke samping bersamaan ko gk jalan2 ya bang.mohon minta penjelasan nya

#include
Adafruit_NeoPixel strip = Adafruit_NeoPixel(28, 11, NEO_GRB + NEO_KHZ800);
void setup() {
strip.begin(); // mengaktifkan led strip
strip.show(); // menampilkan tampilan strip (karena belum ada settingan apapun jadi mati semua)
}

void loop() {
for(int8_t shift = 0; shift <= 450 / 2 ; shift++) {
for(int8_t led = 0; led < strip.numPixels() / 2 ; led++) {
strip.setPixelColor(led, strip.ColorHSV((led*1000 + (shift*500))));
}
delay(10); // kecepatan scrolling
strip.show();
}
}

This comment has been removed by the author.

Mau tanya led strip keyboard mati, di led lama ada 4 pin vcc, clk, data, gnd. Ane cari2 yg 4 pin ga ada, kalo pasang yg 3 pin vcc, data, gnd (tanpa clk) apa masih bisa

Ada nomer WA yang bisa dihubungin ngk gan?

Andai dalam 1 strip ada 30 chip LED.
Biasanya kita akan memasukan jumlah chip tsb pada script di bawah ini.
Misalkan mengganti angka 20 jadi 30
Adafruit_NeoPixel strip = Adafruit_NeoPixel(20, 6, NEO_GRB + NEO_KHZ800);

Pertanyaan saya....
Adakah coding yg bisa mengetahui jumlah aktual chip yg digunakan saat itu tanpa kita menghitung manual dahulu?

Bang mau tanya kalau program les strip 300 led(5meter) pakai arduino nano bisa ga bang?

@CHR24: Tidak ada, Led strip biasa seperti WS2812 tidak memiliki fitur 'smart' seperti itu

@Unknown : Bisa, 300 LED membutuhkan RAM sebesar 900 Byte atau 0.9 KB dan ditambah sketchnya yang sekitar 80Byte-an jadi sekitar 1 KB RAM. Sementara Arduino nano memiliki RAM 8KB, jadi bisa digunakan.

Bang bisa minta link toko yg jual led stripnya..

@Hairul Anam S
Saya biasa ngambil di Mitra abadi via tokopedia, cek aja di etalase tokonya..
dan ini linknya
https://www.tokopedia.com/mitra-abadi/led-strip-rgb-smd-5050-ws-2812-b-arduino-30-led-meter-dc-5v-ip33

mantap ilmunya.. trimakasih boskuuu

kalo mau nambah efek tulisan (teks) gima gan caranya

kalo mau nambah efek tulisan (teks) gima gan caranya

om cara menghentikan led yang terakhir tapi keadaan nyala apakah ada coding tambahan,,


for (int i = 0; i < strip.numPixels(); i++) {
strip.setPixelColor(i, strip.Color(0, 255, 0)); // Mensetting lampu urutan ke - i menjadi hijau
strip.setPixelColor(i - 1, strip.Color(0, 0, 0)); // Mematikan lampu pada urutan sebelumnya
strip.show(); // menampilkan hasil pengaturan warna

// Jika perulangan sudah sampai akhir, kita matikan lampu led terakhir tersebut agar tidak sisa
if (i == strip.numPixels() - 1)
{
strip.setPixelColor(i, strip.Color(0, 0, 0));}
delay(100); // kecepatan running led (jeda sebelum geser)
}

Kalau untuk program seperti bus malam gimana mas?

@Ekhsan: untuk seperti bus malam yg banyak animasi/modenya sekarang masih dalam penulisan sketch gan, karena banyak juga yang request. Setelah selesai nanti saya publikasikan di blog ini lengkap dengan dokumentasi, cara pakai dan penjelasannya.

Ka mau tanya klo mau mnghidupkan lampu led dari tengah ke samping kanan kiri gmna contoh koding nya ka

saya masih menunggu yang mode random mas....yg contoh di atas sdh saya coba jos.... tak gabung 3mode jos jg...trims ilmunya

Iya gan terimakasih, untuk yang banyak animasi kompleks masih saya usahakan gan, karena lumayan rumit juga codingnya.
masalahnya mesin tidak bisa melakukan instruksi yang random, jadi kita harus buat manual sesuai dengan pemodelan matematika yg ada. (matematika tidak bisa random kan, wkwk)

Mohon ijin bertanya, saya menggunakan Led Strip WS2811 dengan arduino uno.
saya mencoba codingnya tidak bisa2
bisa minta arahannya? Terima kasih banyak Mas

Kalau pakai WS2811 ganti KHZ_800 menjadi KHZ_400

Bang untuk data led strobo ws2811
Arduino uno ada datanya bang.trimaksi bang sukses selalu

Mau bertanya bang, kalau komponen2 yang diperlukan apa saja ya, lalu adakah gambar rangkaian arduino yang sudah disusun? terima kasih

bang mau tanya ini kok tiba-tiba berhenti waktu delaynya semakin cepat...

#include
#define NUM_LEDS 14
#define DATA_PIN 5
// Define the array of leds
CRGB leds[NUM_LEDS];
static uint8_t hue = 0;
int s = 40;
int u= 70;
void setup() {

FastLED.addLeds(leds, NUM_LEDS);
}


void loop() {
s=s-5;
u=u-10;
for(int i=0;i<NUM_LEDS/2;i++){
leds[i]=CRGB::Red;
leds[NUM_LEDS-1-i]=CRGB::Red;
FastLED.show();
delay(u);
}
for (int i = 0; i <= 3; i++) {
leds[6]=CRGB::Red;
leds[7]=CRGB::Red;
FastLED.show();
delay(s);

FastLED.clear ();
delay(s);

FastLED.show();
delay(s);
}
for(int i=0;i<7;i++){
leds[i]=CRGB::Green;
leds[NUM_LEDS-1-i]=CRGB::Green;
FastLED.show();
delay(u);
}
for (int i = 0; i <= 3; i++) {
leds[5]=CRGB::Green;
leds[6]=CRGB::Green;
leds[7]=CRGB::Green;
leds[8]=CRGB::Green;
FastLED.show();
delay(s);

FastLED.clear ();
delay(s);

FastLED.show();
delay(s);
}
for(int i=0;i<7;i++){
leds[i]=CRGB::Blue;
leds[NUM_LEDS-1-i]=CRGB::Blue;
FastLED.show();
delay(u);
}
for (int i = 0; i <= 3; i++) {
leds[4]=CRGB::Blue;
leds[5]=CRGB::Blue;
leds[6]=CRGB::Blue;
leds[7]=CRGB::Blue;
leds[8]=CRGB::Blue;
leds[9]=CRGB::Blue;
FastLED.show();
delay(s);

FastLED.clear ();
delay(s);

FastLED.show();
delay(s);
}
for(int i=0;i<7;i++){
leds[i]=CRGB::Magenta;
leds[NUM_LEDS-1-i]=CRGB::Magenta;
FastLED.show();
delay(u);
}
for (int i = 0; i <= 3; i++) {
leds[3]=CRGB::Magenta;
leds[4]=CRGB::Magenta;
leds[5]=CRGB::Magenta;
leds[6]=CRGB::Magenta;
leds[7]=CRGB::Magenta;
leds[8]=CRGB::Magenta;
leds[9]=CRGB::Magenta;
leds[10]=CRGB::Magenta;
FastLED.show();
delay(s);

FastLED.clear ();
delay(s);

FastLED.show();
delay(s);
}
for(int i=0;i<7;i++){
leds[i]=CRGB::Yellow;
leds[NUM_LEDS-1-i]=CRGB::Yellow;
FastLED.show();
delay(u);
}
for (int i = 0; i <= 3; i++) {
leds[2]=CRGB::Yellow;
leds[3]=CRGB::Yellow;
leds[4]=CRGB::Yellow;
leds[5]=CRGB::Yellow;
leds[6]=CRGB::Yellow;
leds[7]=CRGB::Yellow;
leds[8]=CRGB::Yellow;
leds[9]=CRGB::Yellow;
leds[10]=CRGB::Yellow;
leds[11]=CRGB::Yellow;
FastLED.show();
delay(s);

FastLED.clear ();
delay(s);

FastLED.show();
delay(s);
}
for(int i=0;i<7;i++){
leds[i]=CRGB::Aqua;
leds[NUM_LEDS-1-i]=CRGB::Aqua;
FastLED.show();
delay(u);
}
for (int i = 0; i <= 3; i++) {
leds[1]=CRGB::Aqua;
leds[2]=CRGB::Aqua;
leds[3]=CRGB::Aqua;
leds[4]=CRGB::Aqua;
leds[5]=CRGB::Aqua;
leds[6]=CRGB::Aqua;
leds[7]=CRGB::Aqua;
leds[8]=CRGB::Aqua;
leds[9]=CRGB::Aqua;
leds[10]=CRGB::Aqua;
leds[11]=CRGB::Aqua;
leds[12]=CRGB::Aqua;
FastLED.show();
delay(s);

FastLED.clear ();
delay(s);

FastLED.show();
delay(s);
}
for(int i=0;i<7;i++){
leds[i]=CRGB::LawnGreen;
leds[NUM_LEDS-1-i]=CRGB::LawnGreen;
FastLED.show();
delay(u);
}
for (int i = 0; i <= 3; i++) {
leds[0]=CRGB::LawnGreen;
leds[1]=CRGB::LawnGreen;
leds[2]=CRGB::LawnGreen;
leds[3]=CRGB::LawnGreen;
leds[4]=CRGB::LawnGreen;
leds[5]=CRGB::LawnGreen;
leds[6]=CRGB::LawnGreen;
leds[7]=CRGB::LawnGreen;
leds[8]=CRGB::LawnGreen;
leds[9]=CRGB::LawnGreen;
leds[10]=CRGB::LawnGreen;
leds[11]=CRGB::LawnGreen;
leds[12]=CRGB::LawnGreen;
leds[13]=CRGB::LawnGreen;
FastLED.show();
delay(s);

FastLED.clear ();
delay(s);

FastLED.show();
delay(s);
}
if(s<=0){
delay(s);
s=40;
}
if(u<=0){
delay(u);
s=70;
}
}

mau nanya mas...,kalau mau buat jalan bersamaan kiri kanan,mulai dari tengah gimana mas?mohon pencerahannya

Anonymous bikin perulangan aja
Contoh pake FastLED.h jumlah 20 led
Ini kalo running dari tengah kedua arah.

void loop(){
For (int i=0;i<20;i++){
Leds[9-i/2]=CRGB::Red;. //led dari 9 ke 0
leds[10+i/2]=CRGB::Red;. //led dari 10 ke 19

FastLED.show();
delay(50);
}
}

mas mau nanya. Di pcb saya kan ada 4 pin tambahan buat rgb, tapi saya liat di pcb gaada bacaan buat GND, DI, sama 5v+. Adanya DD sama VE, kira-kira DD sama VE itu apa ya mas? Apa VE itu mencakup gnd, di, sama 5v+. Sedangkan DD ga perlu dipake buat adresable rgb?

Mz kalo animasi pertama dan seterus nya berulang2 3-5x gerakan sebelum ganti animasi selanjut nya gmn kode nya yaA...
Trimakasih... 😁

Tanya mas, untuk coding ws2811 sama kyak yg di contohkan samean tidak?

@Syahriza Indra: Bisa di informasikan PCB apa yang dimaksud gan?, apa itu motherboard komputer atau lainnya?

@Unknown: Untuk tutorial animasi yang kompleks dan cara pengkombinasian setiap animasi, saya tuliskan di tutorial selanjutnya ya gan.. coming soon

@Anonymous: Kurang lebih sama gan, tapi di bagian deklarasi object stripnya
rubah KHZ800 menjadi KHZ400.

Ass mas slm knl sy dari bngkulu. Minat untuk pemula sprti sy yg kpgen bljr buat ranning text nyA mas.

Salam gan...saya mau tanya untuk LED ws2812 ada maksimal ampere PSU nya gak gan ..soalnya saya bikin jam sevseg...baru setengah hari langsung mati semua LED nya...saya pakai adaptor 2 ampere.jumlah LED yg saya gunakan ada 60 biji.
Terima kasih gan...

@Unknown: ya, silahkan.
@mamah chyntia: Ya gan, jadi LED WS2812 dengan WS2812b itu tidak sama. LED WS2812b lebih irit daya dan didesain untuk tegangan supply 3,5-5,3v sementara WS2812 bisa sampai 5-8v. Jadi jangan dikasih tegangan yang bukan seharusnya.
Untuk Arus Ampere maksimal itu tergantung dari berapa LED yang dipakai. kalau WS2812b tiap led bisa makan 50mA di kecerahan maksimum sedangkan WS2812/WS2812a hanya maksimal di 35mA (tapi tegangan supply bisa tinggi)
Jadi jika memakai 60LED ws2812b, supply yang dibutuhkan sekitar 5V@3A minimum. Lalu perhatikan juga semakin panjang led, tegangan bisa hilang di tengah jalan. Jadi pastikan utk memberikan supply lagi di setiap 1 meter led strip.

Gimana kalau led strip nya sudah ditempel didindin, sudah didekor sedemikian rupa. Saya mau memprogram 5 skenario di arduino itu, pertanyaan saya, bagaimana cara mengganti skenario 1, 2, 3, 4, 5 tanpa mengcompile ulang lagi melalui software arduino uno? jadi, kita cukup menekan seperti remot tv ?

Terima kasih

@Januar Riski: Ndak bisa gan. Untuk memprogram ulang, arduinonya harus di tancapkan ke komputer. Satu-satunya cara adalah menambahkan skenario animasi pakai kode yang harus di upload ulang ke arduino.
Atau bisa juga IC arduinonya di atas dilepas lalu di program ulang menggunakan arduino lain dibawah.

Kalau mau membuat efek nyala seperti api gmn yaa ? Pakai ws2812

izin bertanya min semoga dijawab ,cara menggabungkan 2 mode itu gimana yah min

Kalau led strip 5630 untuk 3 tingkat kecerahan gmna ya gan? Mohon bimbingannya 🙏✨

@Wildan @Iza: untuk itu, saya akan posting di artikel berikutnya ya gan, karena itu udah beda cerita lagi dan bakal panjang jika saya tulis di komentar. Sekarang saya lagi ngerjakan sketch yang punya animasi banyak untuk led strip yang didukung neopixel ini. Jadi tunggu aja ya..

@Zeehsa: Untuk LED Strip 5630 itu tidak menggunakan data serial dari arduino sama sekali, jadi untuk 3 tingkat kecerahan harus mengurangi supply tegangan untuk led stripnya

PANTAU TERUS, SEMOGA BAROKAH MAS ILMUNYA

Iya gan terimakasih, untuk yang banyak animasi kompleks masih saya usahakan gan, karena lumayan rumit juga codingnya.*****

//smoga sukses selalu.....
di tunggu codingnya mas....makasih dah banyak bagi2 ilmu....

 

Daftar isi artikel