Arduino 2. nodarbība – LED gaismas diodes un rezistori

Arduino – LED gaismas diodes un rezistori. Poga. Luksofors.

Šajā nodarbībā iemācīsimies kā saslēgt LED gaismas diodes, aprēķināt tām nepieciešamos rezistorus un ieslēgt tās ar Arduino programmu.

Nepieciešamie komponenti

  1. Arduino plate NANO (vai UNO ) ar atbilstošu USB kabeli
  2. Bredbords 400 punktu Half+
  3. Savienošanas vadi 10cm male-male 8 gab
  4. LED gaismas diodes 6 gab.
  5. Rezistori 10KΩ 1 gab. un 330Ω 6 gab. (der jebkuri ar pretestību 200Ω-470Ω)

Bredboda shēma


Bredbordā katri 5 kontakti rindā ir savienoti savā starpā. Tāpat abās malās savā starpā ir savienoti visi + un – kontakti.

Rezistoru pretestības aprēķināšana LED gaismas diodēm

Pēc Oma likuma:
Pretestība Ω = (Spriegums V – Sprieguma kritums V) / Strāvas stiprums A

LED strāvas stiprums (forward current): Ja nav norādīts, tad lieto 20mA = 0.02A.

LED sprieguma kritums (forward voltage): Ja nav norādīts, tad lieto – IR 1.5V, sarkana un oranža 2.0V, dzeltena 2.1V, zaļa 2.2V, tumši zaļa, zila un balta 3.3V, UV 3.3V, zila (430 nm) 4.6V.
(Zaļās, zilās un baltās diodes nedarbosies ar 3V spriegumu, jo nepieciešams lielāks spriegums, nekā ir sprieguma kritums)

Minimālā rezistora aprēķins LED gaismas diodēm pie 5V sprieguma:
   Sarkana (5V – 2V) / 0.02A = 150Ω
   Dzeltena (5V – 2.1V) / 0.02A = 145Ω
   Zaļa, zila, balta (5V – 3.3V) / 0.02A = 85Ω
Sarkanam un dzeltenam izvēlamies jebkuru rezistoru 200Ω – 470Ω, bet zaļam, zilam un baltam 100Ω – 330Ω.

Pievienojot lielāku rezistoru, LED gaismas diode degs vājāk. Pievienojot rezistoru par mazu, tā degs spožāk vai sadegs!

Arduino mikrokontroliera digitālajiem piniem nedrīkst pieslēgt lielāku patērētāju par 40mA (0.04A), kas ir 0.2W pie 5V. Piemēram, ne vairāk kā 2 LED gaismas diodes pie viena pina.

Slēgums

Pieslēdzam strāvu bredbordam. 5V savienojam ar sarkano joslu (+) un GND savienojam ar zilo joslu (-). Bredborda vidusdaļā 5 punkti katrā rindā ir savā starpā savienoti un visi punkti gar līnijām (+ un -) ir savā starpā savienoti.

Pieslēdzam rezistorus – vienu kāju pie (-) un pretī otrai kājai LED gaismas diožu īsāko kāju (-). Shēmā LED saliektā kāja ir garākā (+), bet taisnā īsākā (-).

LED no garākās kājas (+) savienojam vadu ar sarkano joslu (+).

Ja pievienojot ar USB kabeli datoram, LED deg – viss ir pareizi. Tai pienāk 5V strāva.

Atvienojam USB kabeli. Iespraužam vēl vienu LED un rezistoru.

Abu LED garākās kājas (+) savienojam attiecīgi ar Arduino digitālajiem piniem 3 un 4.

Programma

Kā pieslēgt Arduino un kā lietot Arduino IDE programmu skatiet 1.nodarbībā

/*
* Mirgo 2 LED
*/
int dzel1 = 3; // dzeltenā LED digitālā pina nr.
int sark1 = 4; // sarkanā LED digitālā pina nr.
void setup() {
 pinMode(dzel1, OUTPUT); //uzstāda pinu kā izejošo
 pinMode(sark1, OUTPUT); //uzstāda pinu kā izejošo
}
void loop() {
 digitalWrite(dzel1, HIGH); // iededz dzelteno
 delay(1000); // gaida 1 sekundi
 digitalWrite(dzel1, LOW); // izslēdz dzelteno
 digitalWrite(sark1, HIGH); // iededz sarkano
 delay(1000); // gaida 1 sekundi
 digitalWrite(sark1, LOW); // izslēdz sarkano
}

Uno vai Nano digitālos pinus programmā rakstām tikai kā ciparu (piem. 3 vai 4, bez D), bet NodeMCU ESP8266 pinus rakstām kā norādīts uz plates (piem., D3 vai D4) vai arī ar atšķirīgo Arduino pina numuru ar vienu ciparu: D0 – 16, D1 – 5, D2 – 4, D3 – 0, D4 – 2 (ESP8266 iebūvētais LED), D5 – 14, D6 – 12, D7 – 13, D8 – 15.

HIGH nozīmē 3V-5V spriegumu, bet LOW – 0V izejošo spriegumu vai 0V – 1.5V ienākošo spriegumu.

Cikls darbojas, kamēr Arduino kontrolierim ir pieslēgta strāva vai ielādēta cita programma. Atjaunojot strāvu, programma automātiski atsāk darboties.

Papildu uzdevums 1

Poga.
Pievienosim slēgumam zaļo LED un pogu ar 10K rezistoru.
Palaižot programmu, nepārtraukti degs zaļā LED, bet nospiežot pogu sāks mirgot sarkanā un dzeltenā.

/*
* Mirgo 2 LED ap pogu
*/
int zals1 = 2;
int dzel1 = 3;
int sark1 = 4;
int poga = 10;
int nospiests = 0;
void setup(){
pinMode(zals1,OUTPUT);
pinMode(dzel1,OUTPUT);
pinMode(sark1,OUTPUT);
pinMode(poga,INPUT);
}

void loop(){
nospiests = digitalRead(poga);

if (nospiests == LOW) { // poga nav nospiesta
digitalWrite(zals1, HIGH);
digitalWrite(dzel1, LOW);
digitalWrite(sark1, LOW);
}

else { // poga ir nospiesta
digitalWrite(zals1, LOW);
digitalWrite(dzel1, LOW);
digitalWrite(sark1, HIGH);
delay(250);
digitalWrite(dzel1, HIGH);
digitalWrite(sark1, LOW);
delay(250);
}
}

Papildu uzdevums 2

Luksofors.
Pārveidot iepriekšējo kodu un izveidot darbojošu auto luksuforu.

/*
* Luksofors
*/
int zals1 = 2;
int dzel1 = 3;
int sark1 = 4;
int sark2 = 5;
int dzel2 = 6;
int zals2 = 7;
void setup() {
pinMode(zals1, OUTPUT);
pinMode(dzel1, OUTPUT);
pinMode(sark1, OUTPUT);
pinMode(sark2, OUTPUT);
pinMode(dzel2, OUTPUT);
pinMode(zals2, OUTPUT);
}
void loop() {
digitalWrite(dzel1, HIGH);
digitalWrite(dzel2, HIGH); // ieslēdz abus dzeltenos
delay(2000); // gaida 2 sekundes
digitalWrite(dzel1, LOW);
digitalWrite(dzel2, LOW); // izlēdz abus dzeltenos
digitalWrite(zals1, HIGH); // ieslēdz zaļo 1
digitalWrite(sark2, HIGH); // ieslēdz sarkano 2
delay(5000); // gaida 5 sekundes
digitalWrite(zals1, LOW); // izlēdz zaļo 1
digitalWrite(sark2, LOW); // izlēdz sarkano 2
digitalWrite(dzel1, HIGH);
digitalWrite(dzel2, HIGH); // ieslēdz abus dzeltenos
delay(2000); // gaida 2 sekundes
digitalWrite(dzel1, LOW);
digitalWrite(dzel2, LOW); // izlēdz abus dzeltenos
digitalWrite(zals2, HIGH); // ieslēdz zaļo 2
digitalWrite(sark1, HIGH); // ieslēdz sarkano 1
delay(5000); // gaida 5 sekundes
digitalWrite(zals2, LOW); // izlēdz zaļo 2
digitalWrite(sark1, LOW); // izlēdz sarkano 1
}

 

Papildu uzdevums 3

Tas pats slēgums.
Kods pielāgots no:
Fails (File) – Piemēri (Examples) – 01.Digital – BlinkWithoutDelay

Šis ir veids kā neizmantot DELAY, jo tas apstādina visu programmu un nekas cits tajā laikā nevar notikt. Mirgos 1 sarkanā LED.

int sark1 = 4;
int ledState = LOW; 
unsigned long previousMillis = 0;
const long interval = 1000;
void setup() {
  pinMode(sark1, OUTPUT); 
}
void loop() {
  unsigned long currentMillis = millis();
  if (currentMillis - previousMillis >= interval) {
    previousMillis = currentMillis;
    if (ledState == LOW) {
      ledState = HIGH;
    } else {
      ledState = LOW;
    }
    digitalWrite(sark1, ledState);
  }
}

<< Iepriekšējā, 1. nodarbība | Nākamā, 3. 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