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 kontrolieris (piem. Uno, Nano) ar 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 ar rezistoru.

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

Programma

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

/*
* Mirgo 2 LED
*/
const int dzel1 = 3; // dzeltenā LED digitālā pina nr.
const 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
}

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
*/
const int zals1 = 2;
const int dzel1 = 3;
const int sark1 = 4;
const int poga = 10;
int nospiests = 0;
void setup(){
pinMode(zals1,OUTPUT);
pinMode(dzelt1,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
*/
const int zals1 = 2;
const int dzel1 = 3;
const int sark1 = 4;
const int sark2 = 5;
const int dzel2 = 6;
const 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.

const 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);
  }
}

Arduino sākumkomplekts nodarbībām 1-10 – 22.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