Sisukord:
2025 Autor: John Day | [email protected]. Viimati modifitseeritud: 2025-01-13 06:57
Sageli, kui inimesed soovivad oma RGB LED -riba Arduino abil juhtida, kasutatakse punase, rohelise ja sinise värvi segamiseks kolme potentsiomeetrit. See töötab ja võib teie vajadustele täiesti sobida, kuid ma tahtsin teha midagi intuitiivsemat, näiteks värviratast.
See projekt näib olevat ideaalne rakendus pöördkodeerija jaoks. See on seade, mis teisendab oma võlli liikumise digitaalseks väljundiks. Kui võlli pööratakse, saadab kodeerija välja signaali (impulsi), mida saab mõõta Arduino abil. Pöördkodeerijate kohta lisateabe saamiseks vaadake seda videot, mis selgitab seda põhjalikumalt.
Selles juhendis näitan teile, kuidas teha Arduino RGB LED -ribakontrollerit, kasutades pöörlevat kodeerijat. See juhend sisaldab vooluringi ehitust leivaplaadil. Arduino kilbi loomiseks võite siiski ise PCB toota!
Samm: osad
RGB LED -ribakontrolleri jaoks vajate järgmisi materjale:
- 1x Arduino Nano
- 3x IRLB8721PBF, mis tahes N-kanaliga loogikataseme MOSFET töötab seni, kuni selle võimsus on vähemalt 12 V ja teie LED-riba tarbib voolu.
- 1x pöörlev kodeerija
- 1x 12V 2A toiteallikas, toiteploki tarnitav vool võib sõltuda kasutatud LED -riba pikkusest.
- 16x Meeste -isade hüppajajuhtmed
- 1x jootevaba leivaplaat, mis tahes leivaplaat sobib seni, kuni see on piisavalt suur.
2. samm: ahel
Ühendage Arduino leivalaua 12V ja GND rööpaga. Seejärel ühendage ülejäänud osad järgmiselt:
Pöörlev kodeerija
Tihvt A - D4
Tihvt B - D3
GND - GND
MOSFET Punane
Värav - GND
Drenaaž - LED -riba punane traat
Allikas - D11
MOSFET GreenGate - GND
Drenaaž - LED -riba roheline traat
Allikas - D9
MOSFET BlueGate - GND
Drenaaž - LED -riba sinine juhe
Allikas - D6
3. samm: kood
// Arduino PWM tihvtid
int redPin = 11; int rohelinePin = 6; int sininePin = 9; // Arduino kodeerija tihvtid int encoderPinA = 3; int kodeerijaPinB = 4; // Värvimuutujad int colorVal; int redVal; int greenVal; int blueVal; // Kodeerija muutujad int encoderPos; int encoderPinACurrent; int encoderPinALast = HIGH; // muu int loendur; void setup () {pinMode (encoderPinA, INPUT_PULLUP); pinMode (kodeerijaPinB, INPUT_PULLUP); } void loop () {readEncoder (); kodeerija2rgb (loendur); analogWrite (redPin, redVal); analogWrite (rohelinePin, rohelineVal); 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; loendur = kodeerijaPos*8; kui (loendur 1535) {loendur = 0; } tagastusloendur; } int encoder2rgb (int counterVal) {// Punane kuni kollane, kui (counterVal <= 255) {colorVal = counterVal; redVal = 255; greenVal = colorVal; blueVal = 0; } // kollasest roheliseks muidu, kui (counterVal <= 511) {colorVal = counterVal - 256; redVal = 255 - colorVal; rohelineVal = 255; blueVal = 0; } // Roheline kuni sinine, kui (counterVal <= 767) {colorVal = counterVal - 512; redVal = 0; rohelineVal = 255; blueVal = colorVal; } // tsüaanist siniseks muidu, kui (counterVal <= 1023) {colorVal = counterVal - 768; redVal = 0; greenVal = 255 - colorVal; blueVal = 255; } // Sinine kuni magenta muuni if (counterVal <= 1279) {colorVal = counterVal - 1024; redVal = colorVal; rohelineVal = 0; blueVal = 255; } // Magenta kuni punane else {colorVal = counterVal - 1280; redVal = 255; rohelineVal = 0; blueVal = 255 - colorVal; } return redVal, greenVal, blueVal; }