Projektas #2: Valdykite RGB LED diod?

Sukurkite ir suprogramuokite grandin?, skirt? valdyti LED spalvoms ir švietimo ryškumui. RGB LED yra LED, kuris gali šviesti bet kokios spalvos švies?, priklausomai nuo raudonos, žalios ir m?lynos spalvos (RGB) derinio.

J?s naudosite 3 potenciometrus, po vien? kiekvienai LED spalvai. Galite sukurti bet koki? spalv? pagal kiekvienos spalvos ryškum?.

SUD?TINGUMO LYGIS: Pradedantiesiems.

PRATIMO TRUKM?:  30 min.

MEDŽIAGOS:

  • 3 220? rezistoriai
  • 3 potenciometrai (10 k?)
  • 1 „Build & Code UNO“
  • 1 bandomoji plokšt?
  • 1 RGB LED

Kas yra RGB LED?

RGB LED yra sud?tinis LED iš 3 pagrindini? spalv? (raudonos, žalios ir m?lynos). Kitaip tariant, tai yra kiekvienos iš trij? pagrindini? spalv? LED (raudonos, žalios ir m?lynos) derinys vienoje detal?je. Priklausomai nuo ?tampos, tiekiamos kiekvienam LED kontaktui, jis gali šviesti bet kuria norima spalva.

Prieš kiekvien? RGB LED kontakt? turite sumontuoti tinkamos vert?s rezistori?, kad LED neperdegt?. Šiuo atveju naudosite 220 om? rezistori?.

Kas yra potenciometras?

Potenciometras yra prietaisas, kuris leidžia rankiniu b?du keisti jo varž?. Galite j? keisti tarp minimalios vert?s Rmin (paprastai 0 om?) ir maksimalios vert?s Rmax (paprastai: 5k, 10k arba 20k om?).

Sukant potenciometr? tarp minimalios ir maksimalios vert?s, proporcingai kei?iate vidin?s varžos vert?.

Paprastai potenciometras turi 3 kontaktus. 1 kontaktas viename gale yra skirtas minimaliai varžai Rmin, kitas kontaktas kitame gale yra skirtas maksimaliai varžai Rmax. 3-iasis kontaktas yra skirtas kintamos vert?s varžai, ši vert? yra potenciometro pad?ties rezultatas, ir priklauso nuo to ar jis yra pasuktas ar?iau Rmin ar Rmax.

Abu LED kontaktai turi b?ti prijungti prie „Build&Code UNO“ 5V ir GND, o tre?iasis kontaktas (kurio vert? priklauso nuo potenciometro jud?jimo) turi b?ti prijungtas prie „Build & Code UNO“ analogini? kontakt?.

Kaip ir visi analoginiai jutikliai, potenciometras siun?ia informacij? ? analogin? ?vest?. Informacijos vert?s gali b?ti nuo 0 iki 1023. Kai potenciometro vert? yra mažiausia, jis si?s 0, kai vert? yra maksimali, jis si?s 1023, o jei vert? bus vidutin?, jis si?s 516.

JUNGTYS:

  1. Bandomoji plokšt? gaus elektros srov? iš „Build & Code UNO“ 5V kontakto, tada srov? sugr?š ? bandom?j? plokšt? iš „Build & Code UNO“ ?žeminimo kontakto. Visi grandin?s ?žeminimo kontaktai turi b?ti sujungti tarpusavyje, kad tur?t? t? pa?i? GND vert?. Paveiksle GND yra pavaizduotas juodu kabeliu, visi jo komponentai yra sujungti tarpusavyje ir prijungti prie GND plokšt?s. Geltonas kabelis atitinka 5V kontakt?, kuris tiekia srov? visiems potenciometrams.
  2. Prijunkite kiekvieno potenciometro centrin? kontakt? prie skirtingo analoginio kontakto, nes potenciometras yra analoginis jutiklis. Iliustracijoje galite matyti 3 pilkus kabelius, jungian?ius potenciometro centrinius kontaktus su 3 analogin?mis ?vestimis.
  3. Kiekvienas RGB LED kontaktas turi b?ti prijungtas prie PWM skaitmeninio kontakto, kuris ?jungs kiekvien? LED spalv? stipresniu ar silpnesniu ryškumu, kad b?t? sukurta bet kokia spalva, atsižvelgiant ? jutiklio rodmenis. Iliustracijoje galite matyti 3 m?lynus kabelius, jungian?ius RGB LED su 3 skaitmenin?mis išvestimis, kurios veikia kaip PWM (Nr. 9, Nr. 10 ir Nr. 11).

PROGRAMOS KODAS

Galite atlikti š? projekt? naudodami „Arduino“ program? arba suderinam? vaizdin? programavimo programin? ?rang?, naudojan?i? blokus. Toliau pateikiamas reikiamas kodas.

„Arduino“ kodas

J?s parašysite kod?, kuris nuolat nuskaitys potenciometr? informacij?. Priklausomai nuo kiekvieno jutiklio rodmen?, kiekvien? LED spalv? švies stipriau arba silpniau.

Priklausomai nuo to, kiek j? pasukote, kiekvienas potenciometras rodys rodmenis nuo 0 iki 1023.

Skaitmeninis PWM kontaktas veiks kaip išvesties kontaktas, ta?iau jis si?s ne nuolatin? aukšt? arba žem? vert?, o matuos ir pateiks vidutines vertes. Tokiu b?du šviesos diodas gali tur?ti skirtingus švietimo stiprumo lygius.

Pvz., jei šviesos diodas ?sijungia ir išsijungia 100 kart? per 1 sekund?, ir 50% laiko yra ?jungtas, o likusius 50% laiko yra išjungtas, tai reiškia, kad žmogaus akys stebi 50% švietimo stiprumo. Ta?iau jei didži?j? laiko dal? šviesos diodas yra išjungtas (pavyzdžiui, 75% laiko išjungtas ir 25% laiko ?jungtas), žmogaus akys stebi silpnesn? švietimo stiprum?.

PWM turi 256 raiškos b?senas. Jos kinta nuo 0 iki 255. Jei ?rašysite 15, jo švietimo stiprumas bus labai silpnas; jei ?rašysite 127, jo švietimo stiprumas bus 50%; jei ?rašysite 255, jo švietimo stiprumas bus 100%.

Tam, kad susietum?te potenciometr? su PWM skaitmeniniu kontaktu, turite padalinti dvi maksimalias vertes:

Tai reiškia, kad jei padalinsite jutiklio vertes iš 4, nustatysite tiesin? santyk? tarp potenciometro sukimo ir šviesos diodo švietimo ryškumo.

Ši diagrama yra labai naudinga norint žinoti, kaip sukurti bet koki? spalv? derinant 3 RGB spalvas (raudon?, žali? ir m?lyn?).

  1. Parsisi?skite ir ?diekite „Arduino IDE“ program?.. Ji si?loma „Windows“, „Mac OS“ ir „Linux“.
  2. Paleiskite „Arduino“ program? ir nukopijuokite ? j? toliau pateikt? program?:
    int input0 = A0; // Define the 3 analog inputs: A0, A1, A2
    int input1 = A1;
    int input2 = A2;
    
    int LEDR = 9;  //Define the 3 PWM digital outputs
    int LEDG = 10;
    int LEDB = 11;
    
    int value0=0; // Create the 3 integral value type to store the analog reading values
    int value1=0;
    int value2=0;
    
    void setup ()
    {
    Serial.begin(9600); //Initiate the communication to display on the screen the information received from the board
    pinMode(LEDR,OUTPUT); // the digital pins will be output pins
    pinMode(LEDG,OUTPUT);
    pinMode(LEDB,OUTPUT);
    }
    
    void loop()
    {
    
    int value0 = analogRead(input0); // Reads value of potentiometer number 0
    int value1 = analogRead(input1); // Reads value of potentiometer number 1
    int value2 = analogRead(input2); // Reads value of potentiometer number 2
    
    analogWrite(LEDR, value0/4); // Because the analog inputs have a maximum resolution of 1024 and the PWM has a 256 resolution, you have to divide the value of the analog input by 4 in order to make the analog input reading proportional to the PWM digital output intensity
    
    analogWrite(LEDG, value1/4);
    analogWrite(LEDB, value2/4);
    }
    

Kodas vaizdinio programavimo programinei ?rangai naudojan?iai blokus

  1. Parsisi?skite ir ?diekite program?.
    1. Paleiskite programin? ?rang?
    2. Sukonfig?ruokite program?, kad išsaugotum?te kod? „Build & Code UNO“ plokšt?je. Instrukcijos pateikiamos „Arm Robot“ roboto rankos vadovo pirmuosiuose veiksmuose.
  2. Paleiskite program? ir nukopijuokite toliau pateikt? kod?. Naudokite š? paveiksl?l? kaip vadov?:

PRATIMO REZULTATAS:

RGB LED prijungtas prie „Build&Code UNO“ plokšt?s per bandomosios plokšt?s grandin?, keis savo spalv? priklausomai nuo trij? potenciometr? sukimo.