Obsah:
2025 Autor: John Day | [email protected]. Naposledy změněno: 2025-01-13 06:57
Často, když lidé chtějí ovládat svůj RGB LED pásek pomocí Arduina, se používají tři potenciometry pro smíchání červené, zelené a modré barvy. To funguje a pro vaše potřeby by to mohlo být naprosto v pořádku, ale chtěl jsem udělat něco intuitivnějšího, něco jako barevné kolečko.
Tento projekt se zdá být perfektní aplikací pro rotační kodér. Jedná se o zařízení, které převádí pohyb svého hřídele na digitální výstup. Když je hřídel otočena, kodér vyšle signál (puls), který lze měřit Arduinem. Další informace o rotačních kodérech můžete sledovat v tomto videu, které to vysvětluje podrobněji.
V tomto Instructable vám ukážu, jak vytvořit Arduino RGB LED páskový ovladač pomocí rotačního kodéru. Tento Instructable pokrývá konstrukci obvodu na prkénku. Můžete si však vyrobit vlastní desku plošných spojů za účelem vytvoření štítu Arduino!
Krok 1: Díly
Pro ovladač RGB LED pásků budete potřebovat následující materiály:
- 1x Arduino Nano
- 3x IRLB8721PBF, jakýkoli N-kanálový logický stupeň MOSFET bude fungovat, pokud je dimenzován minimálně na 12V a proud, který spotřebuje váš LED pás.
- 1x rotační kodér
- 1x napájecí zdroj 12V 2A, proud, který má napájecí zdroj dodat, může záviset na délce použitého LED pásku.
- 16x propojovací vodiče mezi mužem a mužem
- 1x pájecí deska bez pájení, jakákoli prkénka bude fungovat, pokud je dostatečně velká.
Krok 2: Okruh
Připojte Arduino k liště 12V a GND prkénka. Poté připojte ostatní části následujícím způsobem:
Rotační kodér
Kolík A - D4
Kolík B - D3
GND - GND
MOSFET červený
Brána - GND
Drain - LED pásek červený vodič
Zdroj - D11
MOSFET GreenGate - GND
Drain - zelený LED pásek
Zdroj - D9
MOSFET BlueGate - GND
Drain - LED pásek modrý drát
Zdroj - D6
Krok 3: Kód
// Piny Arduino PWM
int redPin = 11; int greenPin = 6; int bluePin = 9; // Piny kodéru Arduino int kodérPinA = 3; int kodérPinB = 4; // Barevné proměnné int colorVal; int redVal; int greenVal; int blueVal; // Proměnné kodéru int encoderPos; int kodérPinACurrent; int encoderPinALast = HIGH; // Jiné int počítadlo; neplatné nastavení () {pinMode (encoderPinA, INPUT_PULLUP); pinMode (encoderPinB, INPUT_PULLUP); } void loop () {readEncoder (); encoder2rgb (čítač); 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; čítač = encoderPos*8; if (čítač 1535) {counter = 0; } počítadlo vrácení; } int encoder2rgb (int counterVal) {// Červená až žlutá if (counterVal <= 255) {colorVal = counterVal; redVal = 255; greenVal = colorVal; blueVal = 0; } // Žlutá až zelená else if (counterVal <= 511) {colorVal = counterVal - 256; redVal = 255 - colorVal; greenVal = 255; blueVal = 0; } // Zelená až azurová jinak if (counterVal <= 767) {colorVal = counterVal - 512; redVal = 0; greenVal = 255; blueVal = colorVal; } // Azurová až modrá jinak if (counterVal <= 1023) {colorVal = counterVal - 768; redVal = 0; greenVal = 255 - colorVal; blueVal = 255; } // Modrá až purpurová else if (counterVal <= 1279) {colorVal = counterVal - 1024; redVal = colorVal; greenVal = 0; blueVal = 255; } // Purpurová až červená jinak {colorVal = counterVal - 1280; redVal = 255; greenVal = 0; blueVal = 255 - colorVal; } vrátit redVal, greenVal, blueVal; }