Turinys:

„Arduino RGB“LED juostos valdiklis: 4 žingsniai
„Arduino RGB“LED juostos valdiklis: 4 žingsniai

Video: „Arduino RGB“LED juostos valdiklis: 4 žingsniai

Video: „Arduino RGB“LED juostos valdiklis: 4 žingsniai
Video: RGB LED juostos muzikinis valdiklis, pajungimas, 2024, Liepa
Anonim
Arduino RGB LED juostos valdiklis
Arduino RGB LED juostos valdiklis

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

Dalys
Dalys
Dalys
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ė

Grandinė
Grandinė
Grandinė
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; }

Rekomenduojamas: