Arduino mikrokontrollerid: 11. ja 12. klass, programmeerimise tunnid majanduse ja IT õppesuunal

el_sotsiaalfond_horisontaalne

Õpilugu „Gümnasistide mängud mikrokontrolleritega"
Üllar Kruustik, Valga Gümnaasiumi programmeerimise õpetajaprogetiiger_logo_horisontaal_est_web

Mis on Arduino mikrokontrollerid?

Juba pikemat aega oleme harjunud sellega, et programmeerimist nimetatakse teiseks kirjaoskuseks. Olles sealjuures enamasti kinni teadmises, et antud tegevus on puhtalt arvutitega seotud. Paraku ümbritsevad meid arvutitest sadades kordades suuremas koguses nende „vaesemad” ja „väiksemad” sugulased – elektroonilised mikrokontrollerid, mis on pandud juhtima mustmiljoneid erinevaid seadmeid meie ümber. Alates tavalisest elektroonilisest käekellast erinevate kodu- või tööstusseadmeteni.arduino

Et sellest põnevast maailmast paremini ja käegakatsutavamalt aru saada, soetaski Valga Gümnaasium 15 Arduino mikrokontrollerite komplekti koos erinevate sisend- ja väljundseadmetega, millelt kontroller saab andmeid lugeda (temperatuur, valgus, õhurõhk, heli) ja vajadusel saadud tulemuste põhjal neid kas inimesele arusaadavalt esitada (erinevad displeid, valgusdioodid) või mingeid toimetavaid täiturseadmeid (mitut tüüpi mootorid, releed) liigutada.

Kuna erinevate andurite ja seadmete kontrolleriga „mängimise” puhul on tegu praktilise käelise kogemusega, mitte pelgalt teoreetilise oletusliku „kuiva” programmeerimisega, mida tavaliselt algtasemel arvutiprogrammeerimise õpetus kipub olema, tekitab see ka õpilastes märksa suuremat huvi ja pealehakkamist.

Arduino mikrokontroller ongi oma olemuselt õppetööks ja muidu lihtsaks kasutamiseks käepäraseks tehtud tööstuslikult laialt levinud Atmega mikrokontroller, mille väljund ja sisendviigud on mikrotasemest toodud tavasuuruses pistikupesade abil sellisele tasemele, et tema külge oleks katsetamiseks võimalikult lihtne ühendada erinevaid seadmeid.

Mis on õpiloo eesmärk?

Eesmärgiks on meid ümbritsevates igapäevaasjades olevate ja neid juhtivate elektrooniliste mikrokontrollerite elementaarse tööpõhimõtte ning juhtimise aluste selgitamine kõige parema praktilise kogemuse najal.

Kuidas õpetaja tundi ette valmistas?

Eelnevalt tuli kõik materjal ikkagi ise läbi proovida, valmistada kontrolleri ja väljundseadmete ühendamiseks vajalikud joonised (vt manuses olevat Teremin_bb.pdf) ja välja töötada ning testida ka kontrollerisse konkreetse väljundseadme juhtimiseks programm (vt näidisprogrammi loo lõpus). Loomulikult sai programme tunnis vastavalt õpilaste poolt genereeritud ideedele ka täiendatud.

Mida teevad õpilased selles tunnis?

Õpilaste põhitegevusteks tunnis on teadmiste omandamine mingi mikrokontrolleriga ühendatud konkreetse väljundseadme kohta ning katsetada erinevaid viise, kuidas seda kontrolleriga juhtida vastavalt soovitud tulemuseni. See hõlmab esmalt nii seadmete ühendamist kontrolleriga kui ka programmeerimist.

Mõne õpilase huvi asja vastu oli väiksem ja arvestada tuli vahel erineva taipamistasemega, mis sundis huvitatuid ja kärsitumaid aeglasemate tagant ootama. Aga need olid pisiasjad, suuri probleeme tunnis ette ei tulnud.

Missugune oli õpilaste tagasiside?

Et selline oma käte ja mõtetega koostöös loov tegevus noori huvitab, annab aimu kasvõi juba see, et päris tihti ei ole mitte päästev tunnilõpukell kontrolleritunni lõpetajaks, vaid hoopis need hetked peale vahetunni algust, kus enda poolt kokkupandud ja programmeeritud skeem lõpuks ka toimima hakkab. Loomulikult meeldib õpilastele, kui nad saavad midagi oma kätega valmis teha ja siis pelgalt mõtetest genereeritud tegevuse najal (programmeerimine) seda asja ka elule puhuda suudavad.

Soovitused, nõuanded teistele õpetajatele, kes plaanivad kasutada Arduino mikrokontrollereid?

Internetimaailm kubiseb lisaks ametlikule Arduino kodulehele www.arduino.cc erinevatest lehtedest, mis jagavad kogemusi ning õpetusi, kuidas ja mida nende kontrolleritega teha saab. Ametlikult kodulehelt erinevatele arvutiplatvormidele allalaaditav Arduino arendus- ehk programmeerimiskeskkond on saadaval ka eestikeelsena, hõlbustades tunduvalt tema kasutamist ka nende seas, kes inglise keelt ei valda.

Lisaks on olemas ka tasuta kontrolleri ja muude elektrooniliste ning elektriliste komponentide ühendusjooniste tegemise tarkvara Fritzing (www.fritzing.org), mille abil muuhulgas saab ka joonistada ühendusskeeme mingi konkreetse ülesande lahendamiseks kontrolleri abil. Olgu selleks siis temperatuuri lugemine, heli- või valgussignaalide väljastamine, mootorite ja mootorite juhtskeemide ühendamine jne.

Koodinäidis

// "Teremini" näidisprogramm – fototakistile langeva valgusvoo muutmise abil
// väljastame piiksujasse erineva tonaalsusega helisid.

// muutuja, kus hoida fototakisti väärtust
int sensoriLugem;
// muutuja, kus hoida fototakisti madalaimat väärtust
int sensorMadal = 1023;
// muutuja, kus hoida fototakisti kõrgeimat väärtust
int sensorKorge = 0;

// LED'i jalg
const int ledJalg = 13;

void setup() {
// Muudame LED'i jala väljundiks ja paneme ta põlema
pinMode(ledJalg, OUTPUT);
digitalWrite(ledJalg, HIGH);

// Kalibreerime fototakistit esimesed viis sekundit peale voolu sisselülitamist
while (millis() < 5000) {
// salvestame fototakisti maksimaalse väärtuse
sensoriLugem = analogRead(A0);
if (sensoriLugem > sensorKorge) {
sensorKorge = sensoriLugem;
}
// salvestame fototakisti minimaalse väärtuse
if (sensoriLugem < sensorMadal) {
sensorMadal = sensoriLugem;
}
}
// lülitame LED'i välja märkimaks kalibreerimisaja lõppu
digitalWrite(ledJalg, LOW);
}

void loop() {
//loeme analoogsisendi A0 väärtuse ja salvestame ta muutujasse
sensoriLugem = analogRead(A0);

// skaleerime fototakisti väärtuse helikõrguste skaalaga
int toon = map(sensoriLugem, sensorMadal, sensorKorge, 50, 4000);

// mängime saadud helikõrgust 20 millisekundit 8ndal jalal
tone(8, toon, 20);
analogWrite(ledJalg,map(sensoriLugem, sensorMadal, sensorKorge, 1, 155));
// ootame natuke
delay(10);
}