ebSkola

2.1 Ievads Arduino un Tinkercad

Stundas uzdevums: Izprast maketo plates darbības principus, izveidot savu pirmo elektronisko slēgumu virtuālajā Tinkercad vidē un uzrakstīt C++ kodu, kas kontrolē LED diodes mirgošanu.

Datorika 7. klase (D.7.1.1., D.7.2.1., D.7.6.1.)

70 min plāns: Teorija un paraugs (~10 min) · 1. uzdevums (~15 min) - saliec Tinkercad shēmu ar strāvas padevi · 2. uzdevums (~25 min) - pieslēdz LED un iededz to nepārtraukti · 3. uzdevums (~20 min) - liec diodei mirgot ar delay. Papildu uzdevumu sāc tikai tad, ja pārējie trīs ir gatavi.

Pirms sāc: atver tinkercad.com pārlūkā un pieraksties ar skolas kontu - šajā stundā viss darbs notiek virtuāli, reālas detaļas nevajag.

Teorija: Elektronikas un C++ valodas pamati

Laipni lūgti mehatronikas pasaulē! Arduino nav gatavs robots – tās ir robota "smadzenes" (mikrokontrolieris), kurām mums pašiem fiziski jāpievieno vadi, sensori un motori. Lai nesadedzinātu reālas detaļas, mēs vispirms trenēsimies virtuālā laboratorijā Tinkercad Circuits.

  • Maketo plate (Breadboard): Tā ir plastmasas dēlis ar caurumiem, kas ļauj savienot vadus bez lodēšanas. Sānu līnijas (+ un -) ir savienotas vertikāli (elektrības padevei), bet vidējās līnijas ir savienotas horizontāli (komponenšu savienošanai).
  • LED un Rezistors: LED (gaismas diodei) ir divas kājas: Anods (garākā kāja, +) un Katods (īsākā kāja, - jeb GND). LED diodei OBLIGĀTI jāpievieno rezistors (pretestība), citādi tā no pārāk lielas strāvas sadegs!
  • C++ Koda struktūra: Arduino kods sastāv no divām galvenajām daļām: void setup() (kods, kas izpildās tikai vienu reizi, ieslēdzot ierīci) un void loop() (kods, kas atkārtojas mūžīgi, kā LEGO "forever" cikls).
  • Sintakse: C++ valoda ir ļoti stingra. Katras komandas beigās OBLIGĀTI jāliek semikols ;. Tāpat ir milzīga atšķirība starp lielajiem un mazajiem burtiem!

Vizuālais orientieris: Tinkercad shēmā atrodi Arduino Uno, maketo plati un sliedes, kas savieno 5V, GND un signāla vadus.

Praktiskie uzdevumi

1. uzdevums -

Saliec Tinkercad shēmu ar strāvas padevi

Beigās tavā darba laukumā būs Arduino un maketo plate, savienotas ar sarkanu un melnu vadu.

  1. Atver tinkercad.com un izvēlies "Designs" -> "Create" -> "Circuit".
  2. Ievelc darba laukumā komponenti "Arduino Uno R3".
  3. Ievelc blakus komponenti "Breadboard Small".
  4. Novelc vadu no Arduino 5V pina uz maketo plates sarkano (+) līniju un iekrāso to sarkanu.
  5. Novelc vadu no Arduino GND pina uz melno (-) līniju un iekrāso to melnu.

Gatavs, kad: tavā shēmā ir tieši divi vadi - viens sarkans uz + līnijas, viens melns uz - līnijas.

2. uzdevums -

Pieslēdz LED un iededz to nepārtraukti

Beigās tava diode Tinkercad simulācijā iedegsies un paliks iedegta.

  1. Ievelc maketo plates vidū LED tā, lai katra kāja ir savā vertikālajā kolonnā.
  2. Ievelc Resistor un iestati tā pretestību uz 220 Ω.
  3. Savieno rezistora vienu galu ar LED garo kāju (Anods), otru galu ar Arduino pin 13.
  4. Novelc melnu vadu no LED īsās kājas (Katods) uz maketo plates GND līniju.
  5. Pārslēdz redaktoru uz Text režīmu un funkcijā setup() sagatavo pinu:
    void setup() {
      pinMode(13, OUTPUT);
    }
  6. Ieraksti funkcijā loop() vienu rindu, kas iededz diodi:
    void loop() {
      digitalWrite(13, HIGH);
    }
  7. Nospied pogu Start Simulation.
  8. Pārbaudi, ja diode nedeg: garajai kājai jāiet caur rezistoru uz pin 13, īsajai uz GND, bet kodā pinMode jābūt OUTPUT.

Gatavs, kad: simulācijā diode deg nepārtraukti un nemirgo.

3. uzdevums -

Liec diodei mirgot ar delay

Beigās tava diode degs vienu sekundi un būs tumša vienu sekundi, bez apstājas.

  1. Pievieno aiz rindas digitalWrite(13, HIGH); jaunu rindu delay(1000);.
  2. Pievieno zem tās rindu digitalWrite(13, LOW);, kas izslēdz diodi.
  3. Pievieno pēdējo rindu delay(1000);.
  4. Pārbaudi, vai katras rindas beigās ir semikols ;.
  5. Nospied Start Simulation un skaties, cik ilgi diode deg.
  6. Nomaini abus skaitļus no 1000 uz 200 un palaid vēlreiz.
  7. Pieraksti vienu secinājumu: ko nozīmē skaitlis funkcijā delay().

Gatavs, kad: ar 1000 diode mirgo lēni, bet ar 200 - manāmi ātrāk.

Papildu uzdevums - Policijas bākugunis ar mainīgo

Ja pamatdarbs ir gatavs, pievieno otru diodi un vadi abu ātrumu ar vienu skaitli.

  1. Ievelc maketo platē zilu LED un rezistoru un savieno tos ar Arduino pin 12.
  2. Ieraksti koda augšā virs void setup() rindu int atrums = 200;.
  3. Pievieno funkcijā setup() rindu pinMode(12, OUTPUT);.
  4. Nomaini visus delay(1000); uz delay(atrums);.
  5. Uzraksti ciklu tā, lai pārmaiņus iedegas 13. un 12. pins.
  6. Nomaini tikai skaitli atrums un pārbaudi, ka paātrinās abas gaismas.

Gatavs, kad: nomainot vienu skaitli koda augšā, abas diodes sāk mirgot ātrāk.

Biežākās kļūdas (un kā tās labot):

  • Kods nestrādā, rāda sarkanas kļūdas (Syntax error): Pārbaudi, vai KATRAS komandas beigās ir semikols ;. Pārbaudi arī burtu reģistru - jāraksta digitalWrite (ar mazo 'd' un lielo 'W'), nevis Digitalwrite vai digitalwrite!
  • Simulācija darbojas, bet LED nedeg: Visticamāk, LED ir iesprausts otrādi. Katodam (īsajai kājai) jābūt pie mīnusa (GND), bet Anodam (garajai) caur rezistoru pie Arduino pina. Pārbaudi arī, vai vadi ir pareizajās maketo plates līnijās.
  • LED diode uzsprāgst simulācijā: Tu aizmirsi pievienot rezistoru vai arī tā pretestība ir pārāk maza. Uzklikšķini uz rezistora un pārliecinies, ka vērtība ir 220 un mērvienība ir omi, nevis kiloomi - ar kiloomiem diode nespīdēs vispār.

Koda piemērs (kods pret vadiem - grūtākā daļa)

// Grūtākais šajā stundā nav uzrakstīt kodu, bet saprast,
// ka skaitlis kodā un vads shēmā ir VIENA UN TĀ PATI vieta.
//
//   kodā: 13  <---->  shēmā: Arduino pins ar numuru 13
//                     |
//                     +-- rezistors 220 omi
//                     |
//                     +-- LED gara kaja (Anods, +)
//                         LED isa kaja (Katods, -) --> GND
//
// Ja kodā raksti 13, bet vadu iesprauž pinā 12, kods ir pareizs,
// bet diode nedegs. Vienmēr pārbaudi abus - kodu UN shēmu.

void setup() {
  // Izpildās vienu reizi. Pasaka, ka 13. pins dos strāvu ārā.
  pinMode(13, OUTPUT);
}

void loop() {
  // Atkārtojas bezgalīgi, kamēr darbojas simulācija.
  digitalWrite(13, HIGH);  // ieslēdz strāvu 13. pinā -> LED deg
  delay(1000);             // gaida 1000 ms = 1 sekundi
  digitalWrite(13, LOW);   // atslēdz strāvu -> LED tumša
  delay(1000);             // gaida vēl 1 sekundi
}
Diode deg sekundi un ir tumša sekundi, kamēr vien iet simulācija. Ja diode paliek tumša, salīdzini skaitli 13 kodā ar pina numuru, kurā tiešām iesprausts vads - visbiežāk tieši tur ir kļūda.