Daftar Isi:

Arduino RGB LED Strip Controller: 4 Langkah
Arduino RGB LED Strip Controller: 4 Langkah

Video: Arduino RGB LED Strip Controller: 4 Langkah

Video: Arduino RGB LED Strip Controller: 4 Langkah
Video: Beginner's Guide to Using LED Strips with Arduino 2024, Juli
Anonim
Pengontrol Strip LED RGB Arduino
Pengontrol Strip LED RGB Arduino

Seringkali ketika orang ingin mengontrol strip LED RGB mereka dengan Arduino, tiga potensiometer digunakan untuk mencampur warna merah, hijau dan biru. Ini berfungsi dan bisa sangat baik untuk kebutuhan Anda, tetapi saya ingin membuat sesuatu yang lebih intuitif, seperti roda warna.

Proyek ini tampaknya menjadi aplikasi yang sempurna untuk encoder putar. Ini adalah perangkat yang mengubah gerakan porosnya menjadi output digital. Ketika poros diputar, encoder mengirimkan sinyal (pulsa) yang dapat diukur oleh Arduino. Untuk lebih lanjut tentang rotary encoder, Anda dapat menonton video ini yang menjelaskannya lebih mendalam.

Dalam Instruksi ini saya akan menunjukkan kepada Anda cara membuat pengontrol strip LED RGB Arduino dengan menggunakan rotary encoder. Instruksi ini mencakup konstruksi sirkuit pada papan tempat memotong roti. Namun Anda dapat membuat PCB Anda sendiri untuk membuat perisai Arduino!

Langkah 1: Bagian

Bagian
Bagian
Bagian
Bagian

Untuk pengontrol strip LED RGB, Anda membutuhkan bahan-bahan berikut:

  • 1x Arduino Nano
  • 3x IRLB8721PBF, setiap level logika N-channel MOSFET akan berfungsi selama diberi peringkat minimal 12V dan arus yang dikonsumsi strip LED Anda.
  • 1x Rotary encoder
  • Catu daya 1x 12V 2A, arus yang harus disalurkan catu daya mungkin bergantung pada panjang strip LED yang digunakan.
  • 16x Kabel jumper pria ke pria
  • 1x Papan tempat memotong roti tanpa solder, papan tempat memotong roti apa pun bisa digunakan asalkan cukup besar.

Langkah 2: Sirkuit

sirkuit
sirkuit
sirkuit
sirkuit

Hubungkan Arduino ke rel 12V dan GND dari papan tempat memotong roti. Kemudian hubungkan bagian lain sebagai berikut:

Enkoder putar

Pin A - D4

Pin B - D3

GND - GND

MOSFET Merah

Gerbang - GND

Tiriskan - strip LED kabel merah

Sumber - D11

MOSFET GreenGate - GND

Tiriskan - kabel hijau strip LED

Sumber - D9

MOSFET BlueGate - GND

Tiriskan - strip LED kabel biru

Sumber - D6

Langkah 3: Kode

// Pin Arduino PWM

int pin merah = 11; int pin hijau = 6; int pin biru = 9; // pin encoder Arduino int encoderPinA = 3; int encoderPinB = 4; // Variabel warna int colorVal; int redVal; int greenVal; int blueVal; // Variabel encoder int encoderPos; int encoderPinACSaat ini; int encoderPinALast = TINGGI; // penghitung int lainnya; void setup(){ pinMode(encoderPinA, INPUT_PULLUP); pinMode(encoderPinB, INPUT_PULLUP); } void loop(){ readEncoder(); encoder2rgb (penghitung); analogWrite(redPin, redVal); analogWrite(greenPin, greenVal); analogWrite(bluePin, blueVal); } int readEncoder(){ encoderPinACurrent = digitalRead(encoderPinA); if ((encoderPinALast == LOW) && (encoderPinACurrent == HIGH)){ if (digitalRead(encoderPinB) == LOW){ encoderPos = encoderPos - 1; } else { encoderPos = encoderPos + 1; } } encoderPinALast = encoderPinACurrent; penghitung = encoderPos*8; if (penghitung 1535){ penghitung = 0; } penghitung kembali; } int encoder2rgb(int counterVal){ // Merah menjadi kuning jika (counterVal <= 255){ colorVal = counterVal; redVal = 255; greenVal = warnaVal; blueVal = 0; } // Kuning menjadi hijau else if (counterVal <= 511){ colorVal = counterVal - 256; redVal = 255 - colorVal; greenVal = 255; blueVal = 0; } // Hijau ke cyan else if (counterVal <= 767){ colorVal = counterVal - 512; redVal = 0; greenVal = 255; blueVal = warnaVal; } // Cyan menjadi biru else if (counterVal <= 1023){ colorVal = counterVal - 768; redVal = 0; greenVal = 255 - colorVal; blueVal = 255; } // Biru ke magenta else if (counterVal <= 1279){ colorVal = counterVal - 1024; redVal = warnaVal; nilai hijau = 0; blueVal = 255; } // Magenta menjadi merah lain{ colorVal = counterVal - 1280; redVal = 255; nilai hijau = 0; blueVal = 255 - colorVal; } kembalikan redVal, greenVal, blueVal; }

Direkomendasikan: