2025 Autorius: John Day | [email protected]. Paskutinį kartą keistas: 2025-01-13 06:57
Dažnai, kai žmonės nori valdyti savo RGB LED juostą su „Arduino“, trys potenciometrai naudojami raudonai, žaliai ir mėlynai spalvoms sumaišyti. Tai puikiai tinka jūsų poreikiams, tačiau norėjau padaryti kažką intuityvesnio, kažką panašaus į spalvų ratą.
Atrodo, kad šis projektas puikiai tinka sukamajam koduotuvui. Tai prietaisas, kuris savo veleno judesį paverčia skaitmenine išvestimi. Kai velenas pasukamas, kodavimo įrenginys siunčia signalą (impulsą), kurį gali išmatuoti „Arduino“. Norėdami sužinoti daugiau apie sukamuosius kodavimo įrenginius, galite žiūrėti šį vaizdo įrašą, kuriame išsamiau paaiškinta.
Šioje instrukcijoje aš jums parodysiu, kaip padaryti „Arduino RGB LED“juostos valdiklį naudojant sukamąjį kodavimo įrenginį. Ši instrukcija apima grandinės konstrukciją ant duonos lentos. Tačiau galite sukurti savo PCB, kad sukurtumėte „Arduino“skydą!
1 žingsnis: dalys
RGB LED juostos valdikliui jums reikės šių medžiagų:
- 1x „Arduino Nano“
- 3x IRLB8721PBF, bet koks N-kanalų loginio lygio MOSFET veiks tol, kol bus įvertintas mažiausiai 12 V įtampa ir srovė, kurią sunaudoja jūsų LED juostelė.
- 1x sukamasis kodavimo įrenginys
- 1x 12V 2A maitinimo šaltinis, srovė, kurią turi tiekti maitinimo šaltinis, gali priklausyti nuo naudojamos LED juostos ilgio.
- 16x jungiamieji laidai nuo vyrų iki vyrų
- 1x „Ledmetalinė“duonos lenta, bet kokia duonos lentelė veiks tol, kol bus pakankamai didelė.
2 žingsnis: grandinė
Prijunkite „Arduino“prie duonos lentos 12V ir GND bėgelio. Tada prijunkite kitas dalis taip:
Rotacinis kodavimo įrenginys
Smeigtukas A - D4
Smeigtukas B - D3
GND - GND
MOSFET Raudona
Vartai - GND
Drenas - LED juostelė raudona viela
Šaltinis - D11
„MOSFET GreenGate“- GND
Drenas - LED juostelės žalia viela
Šaltinis - D9
„MOSFET BlueGate“- GND
Drenas - LED juostelė mėlyna viela
Šaltinis - D6
3 žingsnis: kodas
// „Arduino PWM“kaiščiai
int redPin = 11; int greenPin = 6; int bluePin = 9; // „Arduino“kodavimo smeigtukai int encoderPinA = 3; int koderisPinB = 4; // Spalvų kintamieji int colorVal; int redVal; int greenVal; int blueVal; // Kodavimo kintamieji int encoderPos; int encoderPinACurrent; int encoderPinALast = AUKŠTAS; // Kitas int skaitiklis; void setup () {pinMode (encoderPinA, INPUT_PULLUP); pinMode (kodavimo priemonėPinB, INPUT_PULLUP); } void loop () {readEncoder (); encoder2rgb (skaitiklis); analogWrite (redPin, redVal); analogWrite (žaliasPin, žaliasVal); 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; skaitiklis = koderisPos*8; jei (skaitiklis 1535) {skaitiklis = 0; } grąžinimo skaitiklis; } int encoder2rgb (int counterVal) {// Raudona iki geltona, jei (counterVal <= 255) {colorVal = counterVal; redVal = 255; greenVal = spalvaVal; blueVal = 0; } // nuo geltonos iki žalios spalvos, jei (counterVal <= 511) {colorVal = counterVal - 256; redVal = 255 - colorVal; žaliaVal = 255; blueVal = 0; } // Žalia iki žydros spalvos, jei (counterVal <= 767) {colorVal = counterVal - 512; redVal = 0; žaliaVal = 255; blueVal = spalvaVal; } // Žalsvai mėlyna iki mėlynos spalvos, jei (counterVal <= 1023) {colorVal = counterVal - 768; redVal = 0; greenVal = 255 - colorVal; blueVal = 255; } // Mėlyna iki rausvai raudonos spalvos if (counterVal <= 1279) {colorVal = counterVal - 1024; redVal = colorVal; žaliaVal = 0; blueVal = 255; } // Rausvai raudona į raudoną else {colorVal = counterVal - 1280; redVal = 255; žaliaVal = 0; blueVal = 255 - colorVal; } return redVal, greenVal, blueVal; }