Arduino – PWM, LED spilgtuma maiņa un RGB LED
Šajā nodarbībā iemācīsimies kā izmantot Arduino digitālos PWM pinus, lai mainītu strāvas spriegumu, tā izmainot gaismas diodes spilgtumu. Iepazīsimies ar 3-krāsu gaismas diodēm (RGB LED).
Digitālā PWM ieeja/izeja
PWM (Pulse Width Modulation) ir Signāla ilguma modulācija, kur mainot 5V un 0V ilguma attiecību, iegūst dažādus strāvas spriegumus no 0V – 5V.
Digitālie PWM pini uz NANO ir D3, D5, D6, D9, D10, D11, bet uz UNO ~3, ~5, ~6, ~9, ~10, ~11.
Nepieciešamie komponenti
- Arduino kontrolieris (piem. Uno, Nano) ar USB kabeli
- Bredbords 400 punktu Half+
- Savienošanas vadi 10cm male-male 5 gab
- LED gaismas diode 1 gab.
- 3-krāsu LED gaismas diode ar kopēju katodu(-) 1 gab.
- Rezistori 330Ω (vai 220Ω) 3 gab.
Slēgums
Gaismas diodes (-) slēdzam caur rezistoru pie – (GND), bet (+) pie digitālā PWM pina 9 (Nano D9 / Uno ~9).
Programma
Kodu var atvērt no:
Fails – Piemēri – 01. Basics – Fade
int led = 9; // PWM pins LED pievienošanai int brightness = 0; // uzstāda led sākuma spilgtumu int fadeAmount = 5; // par cik punktiem mainās spilgtums void setup() { pinMode(led, OUTPUT); // uzstāda led pinu kā izejošo } void loop() { // Sāk ciklu, kas izpildās atkal un atkal analogWrite(led, brightness); // uzstāda led pina spilgtumu brightness = brightness + fadeAmount; // palielina spilgtuma vērtību if (brightness <= 0 || brightness >= 255) { // maina spilgtuma virzienu fadeAmount = -fadeAmount; // samazina spilgtuma vērtību } delay(30); }
Augšupielādējam kodu.
Gaismas diodes spilgtumam ir jāmainās uz gaišāku un tumšāku.
2. uzdevums
3-krāsu gaismas diode (RGB LED)
RGB LED ir gaismas diodes, kuras sastāv no 3 atsevišķām gaismas diodēm – sarkanās (R), zaļās (G) un zilās (B), kurām ir kopējs katods (-) vai anods (+).
Slēgums
Pieslēdzam 3-krāsu gaismas diodes garāko kāju (-) caur rezistoru pie – (GND), bet pārējās 3 kājas pie digitālajiem PWM piniem – 9, 10, 11 (Nano D9, D10, D11/ Uno ~9, ~10, ~11).
Sākumā mēģināsim iegūt pēc kārtas dažādas krāsas pilnā spilgtumā – sarkanu, dzeltenu, zaļu, gaiši zilu, tumši zilu, violetu un baltu. Katru 2 sekundes.
const int ledR = 9; // sarkanās krāsas digitālā pina nr. const int ledG = 10; // zaļās krāsas digitālā pina nr. const int ledB = 11; // zilās krāsas digitālā pina nr. void setup() { pinMode(ledR, OUTPUT); //uzstāda ledR pinu kā izejošo pinMode(ledG, OUTPUT); //uzstāda ledG pinu kā izejošo pinMode(ledB, OUTPUT); //uzstāda ledB pinu kā izejošo } void loop() { digitalWrite(ledR, HIGH); // iededz ledR, sarkans delay(2000); // gaida 2 sekundes digitalWrite(ledG, HIGH); // iededz ledG, kopā dzeltens delay(2000); // gaida 2 sekundes digitalWrite(ledR, LOW); // izslēdz ledR, paliek zaļš delay(2000); // gaida 2 sekundes digitalWrite(ledB, HIGH); // iededz ledB, kopā gaiši zils delay(2000); // gaida 2 sekundes digitalWrite(ledG, LOW); // izslēdz ledR, paliek zils delay(2000); // gaida 2 sekundes digitalWrite(ledR, HIGH); // iededz ledR, kopā violets delay(2000); // gaida 2 sekundes digitalWrite(ledG, HIGH); // iededz ledG un ledB digitalWrite(ledB, HIGH); // kopā balts delay(2000); // gaida 2 sekundes digitalWrite(ledR, LOW); // izslēdz ledR digitalWrite(ledG, LOW); // izslēdz ledG digitalWrite(ledB, LOW); // izslēdz ledB delay(2000); // gaida 2 sekundes }
Papildu uzdevums 1
Tas pats slēgums.
Veidosim krāsas ar PWM. Mainot ciparus no 0 līdz 255, mainīsies spriegums no 0 – 5V un arī attiecīgās krāsas spilgtums.
int redPin= 9; int greenPin = 10; int bluePin = 11; void setup() { pinMode(redPin, OUTPUT); pinMode(greenPin, OUTPUT); pinMode(bluePin, OUTPUT); } void loop() { setColor(255, 0, 0); // Sarkans delay(2000); setColor(0, 255, 0); // Zals delay(2000); setColor(0, 0, 255); // Zils delay(2000); setColor(255, 255, 255); // Balts delay(2000); setColor(170, 0, 255); // Violets delay(2000); } void setColor(int redValue, int greenValue, int blueValue) { analogWrite(redPin, redValue); analogWrite(greenPin, greenValue); analogWrite(bluePin, blueValue); }
Papildu uzdevums 2
Uzdevums – mainīt kodā setColor vērtības, lai iegūtu dažādas 5 savas brīvi izvēlētas krāsas un pierakstīt to nosaukumus.
Piemēram setColor(120, 100, 0), lai iegūtu dzeltenu.
RGB krāsu kodus var atrast šeit: w3schools.com/colors/colors_picker.asp
<< Iepriekšējā, 4. nodarbība | Nākamā, 6. nodarbība >>
Arduino sākumkomplekts 12 nodarbībām – 32.00€
Piegāde ar Latvijas pastu vai pakomātu (Omniva, DPD, PastaStacija) – 3.00€
Pasūtīšana un papildu info pa tālr.: 29216755 vai e-pastu: info[at]orient.lv
-
Arduino sākumkomplekts 12 nodarbībām NANO€45.00
-
Mini USB kabelis 80cm€1.80
-
Savienošanas vadi 10cm/20cm – 20gab.€3.00 – €4.00
-
Bredbords half+ 400-punktu€5.00
-
LED Gaismas diodes€0.10 – €0.15
-
Rezistori (pretestības) 0.25W metāla plēves€0.10
-
NANO 3.0 ATmega328P, Mini USB, CH340G€12.00
-
UNO R3 ATmega328P PrinterUSB CH340G€18.00