Mundarija:

Arduino RGB LED chiziqli boshqaruv: 4 qadam
Arduino RGB LED chiziqli boshqaruv: 4 qadam

Video: Arduino RGB LED chiziqli boshqaruv: 4 qadam

Video: Arduino RGB LED chiziqli boshqaruv: 4 qadam
Video: Arduino Tutorial 34 - Color gradient with RGB LED and Knob | SunFounder's ESP32 IoT Learnig kit 2024, Noyabr
Anonim
Arduino RGB LED chiziqli boshqaruv paneli
Arduino RGB LED chiziqli boshqaruv paneli

Ko'pincha odamlar RGB LED tasmasini Arduino yordamida boshqarishni xohlashganda, qizil, yashil va ko'k ranglarni aralashtirish uchun uchta potentsiometr ishlatiladi. Bu ishlaydi va sizning ehtiyojlaringiz uchun juda yaxshi bo'lishi mumkin, lekin men rang g'ildiragi kabi yanada sezgirroq narsa qilishni xohlardim.

Bu loyiha aylanuvchi kodlovchi uchun mukammal dastur bo'lib tuyuladi. Bu o'z milining harakatini raqamli chiqishga o'zgartiradigan qurilma. Mil aylantirilganda, kodlovchi Arduino tomonidan o'lchanadigan signal (puls) yuboradi. Aylanadigan kodlovchi haqida ko'proq ma'lumot olish uchun siz uni batafsilroq tushuntirib beradigan ushbu videoni ko'rishingiz mumkin.

Bu yo'riqnomada men sizga aylanadigan enkoder yordamida Arduino RGB LED tasmasini qanday boshqarishni ko'rsataman. Bu yo'riqnoma non taxtasida sxemani qurishni o'z ichiga oladi. Arduino qalqoni yaratish uchun siz o'zingizning tenglikni ishlab chiqarishingiz mumkin!

1 -qadam: qismlar

Qismlar
Qismlar
Qismlar
Qismlar

RGB LED tasmasini boshqarish moslamasi uchun sizga quyidagi materiallar kerak bo'ladi.

  • 1 marta Arduino Nano
  • 3x IRLB8721PBF, har qanday N-kanalli MOSFET mantiqiy darajasi, agar u kamida 12 V ga baholangan bo'lsa va LED tasmasi iste'mol qilsa, bajaradi.
  • 1x aylanadigan kodlovchi
  • 1x 12V 2A quvvat manbai, elektr ta'minoti oqimi ishlatilgan LED chizig'ining uzunligiga bog'liq bo'lishi mumkin.
  • 16x Erkak -erkak o'tish simlari
  • 1x lehimsiz non paneli, har qanday non paneli etarlicha katta bo'lsagina bajariladi.

2 -qadam: O'chirish

O'chirish
O'chirish
O'chirish
O'chirish

Arduino -ni non panelidagi 12V va GND rayiga ulang. Keyin boshqa qismlarni quyidagicha ulang:

Aylanadigan kodlovchi

Pin A - D4

Pin B - D3

GND - GND

MOSFET qizil

Darvoza - GND

Drenaj - qizil chiziqli LED chiziq

Manba - D11

MOSFET GreenGate - GND

Drenaj - yashil chiziqli LED chiziq

Manba - D9

MOSFET BlueGate - GND

Drenaj - ko'k chiziqli LED chiziq

Manba - D6

3 -qadam: kod

// Arduino PWM pinlari

int redPin = 11; int greenPin = 6; int bluePin = 9; // Arduino kodlovchi pinlari int encoderPinA = 3; int kodlovchiPinB = 4; // Rang o'zgaruvchilari int colorVal; int redVal; int greenVal; int blueVal; // Encoder o'zgaruvchilari int encoderPos; int kodlovchiPinACurrent; int encoderPinALast = HIGH; // Boshqa int hisoblagich; void setup () {pinMode (encoderPinA, INPUT_PULLUP); pinMod (kodlovchiPinB, INPUT_PULLUP); } void loop () {readEncoder (); encoder2rgb (hisoblagich); 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; } boshqa {encoderPos = encoderPos + 1; }} encoderPinALast = encoderPinACurrent; hisoblagich = encoderPos*8; agar (hisoblagich 1535) {hisoblagich = 0; } qaytish hisoblagichi; } int encoder2rgb (int counterVal) {// Qizildan sariq ranggacha, agar (counterVal <= 255) {colorVal = counterVal; redVal = 255; yashilVal = rangVal; blueVal = 0; } // Sariqdan yashilgacha, agar boshqa (counterVal <= 511) {colorVal = counterVal - 256; redVal = 255 - colorVal; greenVal = 255; blueVal = 0; } // Yashildan ko'k ranggacha, agar boshqa (counterVal <= 767) {colorVal = counterVal - 512; redVal = 0; greenVal = 255; ko'kVal = rangVal; } // Ko'k rangdan ko'k ranggacha boshqa if (counterVal <= 1023) {colorVal = counterVal - 768; redVal = 0; greenVal = 255 - colorVal; blueVal = 255; } // Moviydan to'q qizil ranggacha, agar boshqa (counterVal <= 1279) {colorVal = counterVal - 1024; qizilVal = rangVal; greenVal = 0; blueVal = 255; } // Qizil rangdan qizil ranggacha {colorVal = counterVal - 1280; redVal = 255; greenVal = 0; blueVal = 255 - colorVal; } redVal, greenVal, blueVal qaytarish; }

Tavsiya: