Arduino 5. nodarbība – PWM, LED spilgtums un RGB LED

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

  1. Arduino kontrolieris (piem. Uno, Nano) ar USB kabeli
  2. Bredbords 400 punktu Half+
  3. Savienošanas vadi 10cm male-male 5 gab
  4. LED gaismas diode 1 gab.
  5. 3-krāsu LED gaismas diode ar kopēju katodu(-) 1 gab.
  6. 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