1. Pengenalan & Tujuan Proyek
Dalam praktikum teknik elektronika, mikrokontroler dan Internet of Things (IoT), penguasaan antarmuka perangkat WS merupakan salah satu kompetensi inti dalam Kurikulum Merdeka maupun perancangan sistem cerdas modern. Melalui artikel dan modul praktikum interaktif ini, kita akan mempelajari arsitektur antarmuka, protokol komunikasi data, skematik pengkabelan yang presisi, serta implementasi logika pemrograman Arduino C++ yang efisien.
🎯 Target Pembelajaran (Learning Outcomes):
- Memahami prinsip kerja dan arsitektur kelistrikan modul WS.
- Mampu melakukan pengkabelan (wiring) antara mikrokontroler Arduino Uno dengan sensor/aktuator secara benar dan aman.
- Menguasai fungsi pustaka (library) dan penulisan sketch firmware Arduino C++.
- Melakukan simulasi langsung serta debugging real-time di simulator DexMicro Virtual Lab.
2. Kebutuhan Komponen & Alat
Sebelum memulai proses perakitan sirkuit, pastikan semua komponen perangkat keras telah disiapkan atau dimuat dalam canvas DexMicro Virtual Lab:
📦 Daftar Komponen & Alat yang Dibutuhkan
- 1x Unit Arduino Uno R3 (ATmega328P)
- 1x Unit Ws2812b
- 1x Set Kabel Jumper Penghubung (Male-to-Male / Male-to-Female)
- 1x Unit DexMicro Virtual Simulator Engine
3. Skematik & Simulator Interaktif Rangkaian
Berikut adalah simulator rangkaian interaktif langsung dari proyek WS. Anda dapat langsung menguji logika dan melihat respon sirkuit secara real-time dengan menekan tombol ▶ RUN dan ⏹ STOP di bawah ini:
4. Tabel Panduan Pengkabelan (Pinout Connection)
Gunakan tabel referensi koneksi berikut untuk menghubungkan pin-pin modul ke board Arduino Uno secara tepat:
| No | Pin Modul / Komponen | Pin Mikrokontroler Target | Warna Kabel | Tipe Sinyal & Fungsi |
|---|---|---|---|---|
| 1 | Ws2812b → vcc |
5V |
#ef4444 |
⚡ Sumber Daya Positif (Power VCC) |
| 2 | Ws2812b → din |
D13 |
#ef4444 |
🔌 Jalur Sinyal Digital / Analog |
| 3 | Ws2812b → gnd |
GND3 |
#ef4444 |
🔌 Ground Bersama (GND / 0V) |
5. Source Code Program (Firmware Sketch)
Salin atau jalankan source code sketch Arduino C++ di bawah ini. Kode ini telah dioptimalkan dengan penanganan error, inisialisasi pin yang aman, serta dokumentasi baris komentar:
// MicroLab Virtual Laboratory & ControllersTech Tutorial
// WS2812B NeoPixel 8-LED Ring - Animations & Color Effects
#include <Adafruit_NeoPixel.h>
#define LED_PIN 13 // Pin Digital DIN terhubung ke Pin D6 Arduino
#define NUM_LEDS 8 // Jumlah LED NeoPixel pada ring (8 LEDs)
#define BRIGHTNESS 50 // Kecerahan awal (0 - 255)
// Inisialisasi objek strip NeoPixel
Adafruit_NeoPixel strip(NUM_LEDS, LED_PIN, NEO_GRB + NEO_KHZ800);
void setup() {
Serial.begin(115200);
delay(500);
Serial.println(F("🚀 Initializing WS2812B NeoPixel 8-LED Ring..."));
strip.begin(); // Inisialisasi driver NeoPixel
strip.setBrightness(BRIGHTNESS);
strip.show(); // Pastikan semua pixel mati saat awal
Serial.println(F("✓ WS2812B Ready! Menjalankan animasi..."));
}
void loop() {
Serial.println(F("✨ Effect 1: Color Wipe (Merah, Hijau, Biru)"));
colorWipe(strip.Color(255, 0, 0), 50); // Merah
colorWipe(strip.Color(0, 255, 0), 50); // Hijau
colorWipe(strip.Color(0, 0, 255), 50); // Biru
Serial.println(F("🌈 Effect 2: Rainbow Cycle"));
rainbow(20);
Serial.println(F("💡 Effect 3: Theater Chase (Marquee)"));
theaterChase(strip.Color(255, 180, 0), 70); // Oranye/Emas
theaterChase(strip.Color(0, 255, 200), 70); // Cyan
Serial.println(F("💨 Effect 4: Breathing Pulsating Effect"));
breathingEffect(0, 150, 255, 10); // Cyan lembut
delay(500);
}
// 1. Mengisi warna LED satu per satu berurutan
void colorWipe(uint32_t color, int wait) {
for (int i = 0; i < strip.numPixels(); i++) {
strip.setPixelColor(i, color);
strip.show();
delay(wait);
}
}
// 2. Animasi Pelangi Halus (Rainbow Effect)
void rainbow(int wait) {
for (long firstPixelHue = 0; firstPixelHue < 5 * 65536; firstPixelHue += 256) {
strip.rainbow(firstPixelHue);
strip.show();
delay(wait);
}
}
// 3. Efek Theater Chase (Lampu Berjalan / Rotasi)
void theaterChase(uint32_t color, int wait) {
for (int a = 0; a < 10; a++) {
for (int b = 0; b < 3; b++) {
strip.clear();
for (int c = b; c < strip.numPixels(); c += 3) {
strip.setPixelColor(c, color);
}
strip.show();
delay(wait);
}
}
}
// 4. Efek Pernapasan (Breathing Fade In / Fade Out)
void breathingEffect(uint8_t r, uint8_t g, uint8_t b, int wait) {
for (int i = 5; i <= 150; i += 3) {
strip.setBrightness(i);
for (int p = 0; p < strip.numPixels(); p++) {
strip.setPixelColor(p, strip.Color(r, g, b));
}
strip.show();
delay(wait);
}
for (int i = 150; i >= 5; i -= 3) {
strip.setBrightness(i);
for (int p = 0; p < strip.numPixels(); p++) {
strip.setPixelColor(p, strip.Color(r, g, b));
}
strip.show();
delay(wait);
}
strip.setBrightness(BRIGHTNESS); // Kembalikan ke kecerahan normal
}
6. Penjelasan & Analisis Alur Program
Berikut adalah poin-poin krusial dalam struktur program sketch di atas:
- Inisialisasi & Deklarasi Pustaka: Mengikutsertakan header library yang dibutuhkan seperti
<Wire.h>untuk protokol komunikasi I2C dua arah (SDA & SCL) atau header khusus modul terkait. - Fungsi
setup(): Melakukan inisialisasi peripheral dengan menentukan baud rate Serial Monitor (misalnyaSerial.begin(9600)atau115200), mengonfigurasi mode pin I/O (pinMode), dan memanggil fungsibegin()pada modul untuk pengujian perangkat keras. - Fungsi
loop(): Berisi siklus utama pembacaan sinyal input, eksekusi pemrosesan data matematika/logika, dan pembaruan sinyal aktuasi ke layar atau motor secara periodik tanpa lagging.
Coba Langsung di Virtual Lab DexMicro
Buka proyek ini langsung di canvas simulator interaktif untuk merangkai kabel, mengubah baris kode, dan melihat animasi secara real-time tanpa perlu alat fisik.
7. Penerapan di Dunia Nyata & Industri
Konsep dan rangkaian WS ini memiliki aplikasi luas dalam berbagai sektor industri modern, antara lain:
- Sistem Smart Home & Otomasi Gedung: Monitoring parameter lingkungan, suhu, kelembaban, dan display status operasional.
- Robotika & Mesin Otomatis: Antarmuka navigasi robot, pembacaan rintangan, dan kontrol aktuator servo presisi.
- Peralatan Medis & Instrumentasi Laboratorium: Menampilkan pembacaan biometrik dan sinyal vital secara instan dan portabel.
8. Tips & Panduan Troubleshooting
- Layar Tidak Menyala / Blank: Periksa koneksi pin VCC dan GND. Pastikan alamat I2C (biasanya
0x3Cuntuk OLED atau0x27untuk LCD) telah sesuai. - Data Serial Tidak Muncul: Pastikan baud rate pada Serial Monitor sama persis dengan angka di
Serial.begin(). - Tegangan Drop: Jika menggunakan motor stepper atau multi-servo, selalu gunakan sumber daya eksternal (baterai/adaptor) dan hubungkan semua GND bersama (Common Ground).
💬 Diskusi & Tanya Jawab 0 Komentar