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) unvoid 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.
- Atver tinkercad.com un izvēlies "Designs" -> "Create" -> "Circuit".
- Ievelc darba laukumā komponenti "Arduino Uno R3".
- Ievelc blakus komponenti "Breadboard Small".
- Novelc vadu no Arduino
5Vpina uz maketo plates sarkano (+) līniju un iekrāso to sarkanu. - Novelc vadu no Arduino
GNDpina 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.
- Ievelc maketo plates vidū LED tā, lai katra kāja ir savā vertikālajā kolonnā.
- Ievelc Resistor un iestati tā pretestību uz
220 Ω. - Savieno rezistora vienu galu ar LED garo kāju (Anods), otru galu ar Arduino
pin 13. - Novelc melnu vadu no LED īsās kājas (Katods) uz maketo plates
GNDlīniju. - Pārslēdz redaktoru uz Text režīmu un funkcijā
setup()sagatavo pinu:void setup() { pinMode(13, OUTPUT); } - Ieraksti funkcijā
loop()vienu rindu, kas iededz diodi:void loop() { digitalWrite(13, HIGH); } - Nospied pogu Start Simulation.
- Pārbaudi, ja diode nedeg: garajai kājai jāiet caur rezistoru uz
pin 13, īsajai uzGND, bet kodāpinModejābūtOUTPUT.
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.
- Pievieno aiz rindas
digitalWrite(13, HIGH);jaunu rindudelay(1000);. - Pievieno zem tās rindu
digitalWrite(13, LOW);, kas izslēdz diodi. - Pievieno pēdējo rindu
delay(1000);. - Pārbaudi, vai katras rindas beigās ir semikols
;. - Nospied Start Simulation un skaties, cik ilgi diode deg.
- Nomaini abus skaitļus no 1000 uz 200 un palaid vēlreiz.
- 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.
- Ievelc maketo platē zilu LED un rezistoru un savieno tos ar Arduino
pin 12. - Ieraksti koda augšā virs
void setup()rinduint atrums = 200;. - Pievieno funkcijā
setup()rindupinMode(12, OUTPUT);. - Nomaini visus
delay(1000);uzdelay(atrums);. - Uzraksti ciklu tā, lai pārmaiņus iedegas 13. un 12. pins.
- Nomaini tikai skaitli
atrumsun 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ārakstadigitalWrite(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
}
13 kodā ar pina numuru, kurā tiešām iesprausts vads - visbiežāk tieši tur ir kļūda.