Internet of Things - Arduino
UvodPrvi program – blinkajuća svjetleća dioda
Što ćemo naučiti:
– Gdje pronaći gotove primjere programa
– Od čega se sastoje programi pisani za Arduino
– Čemu služe setup i loop dio programa
– Naredbe pinMode, digitalWrite i delay
Kako bi napisati naš prvi program bilo što jednostavnije i kako bi se upoznali s time od čega se programi za Arduino uopće sastoje prvi ćemo program zapravo „prepisati“. U samom programskom okruženju postoji niz gotovih primjera programa, koje možete pronaći kroz File izbornik.
Za početak ćemo otvoriti osnovni primjer, koji upravlja LED diodom koja je ugrađena na našu Arduino MKR1000 pločicu. Kako bi početak rada bio jednostavniji i kako bi mogli isprobati svoj Arduino a da na njega ne moramo spajati nikakvu dodatnu elektroniku, na samoj je pločici ugrađena jedna svjetleća dioda kojom možemo programski upravljati. Ova dioda je spojena na izvod broj 6 mikrokontrolera, a u sljedeći program će uključivati i isključivati diodu u jednakim interbvalima – ona će „blinkati“.
Za otvaranje primjera kliknite na File, potom odaberite Examples, pa Basics i odaberite primjer Blink, kako je prikazano na sljedećoj slici.
U dijelu za pisanje koda pojavljuje se sljedeći program:
/* Blink Turns an LED on for one second, then off for one second, repeatedly. Most Arduinos have an on-board LED you can control. On the UNO, MEGA and ZERO it is attached to digital pin 13, on MKR1000 on pin 6. LED_BUILTIN is set to the correct LED pin independent of which board is used. If you want to know what pin the on-board LED is connected to on your Arduino model, check the Technical Specs of your board at: https://www.arduino.cc/en/Main/Products modified 8 May 2014 by Scott Fitzgerald modified 2 Sep 2016 by Arturo Guadalupi modified 8 Sep 2016 by Colby Newman This example code is in the public domain. http://www.arduino.cc/en/Tutorial/Blink */ // the setup function runs once when you press reset or power the board void setup() { // initialize digital pin LED_BUILTIN as an output. pinMode(LED_BUILTIN, OUTPUT); } // the loop function runs over and over again forever void loop() { digitalWrite(LED_BUILTIN, HIGH); // turn the LED on (HIGH is the voltage level) delay(1000); // wait for a second digitalWrite(LED_BUILTIN, LOW); // turn the LED off by making the voltage LOW delay(1000); // wait for a second }
Ovaj programski kod sastoji se od 3 osnovna dijela – komentari, setup dio koda i loop dio koda.
Sivi tekst na početku su komentari. Oni služe kako bi autor programa pojasnio korisniku što ovaj program radi i/ili dao komentare o samom programu. Ovaj dio nije nužan za ispravno funkcioniranje mikrokontrolera, ali olakšava korištenje programa krajnjem korisniku. U Arduino programskom okruženju postoje dvije vrste komentara – jednolinijski i višelinijski komentari.
Višelinijski se komentari, kako sam naziv kaže, protežu kroz više linija, a kako bi programsko okruženje znalo raspoznati komentare od naredbi komentari su odvojeni posebnim znakovima.
Višelinijski komentar započinje sa znakovima „/*“ (bez navodnika), nakon čega slijedi komentar, a na kraju komentara mora biti „*/“ (bez navodnika). Sve što se nalazi između ovog para znakova smatra se komentarom. Evo jednog primjera:
Višelinijski komentar započinje sa znakovima „/*“ (bez navodnika), nakon čega slijedi komentar, a na kraju komentara mora biti „*/“ (bez navodnika). Sve što se nalazi između ovog para znakova smatra se komentarom. Evo jednog primjera:
/* Primjer višelinijskog komentara. Ovaj komentar proteže se kroz nekoliko linija. */
Jednolinijski komentar sadržan je u samo jednoj liniji, a na početku linije koja sadrži komentar moraju biti znakovi „//“ (bez navodnika). Sve što se nalazi u redu iza ovog para znakova smatra se komentarom. Evo jednog primjera:
// ovo je jednolinijski komentar
Dio koda koji definira što će naš mikrokontroler raditi nalazi se u setup i loop dijelu koda.
Setup dio koda izvršava se samo jednom, odmah nakon uključivanja mikrokontrolera. Ovaj dio koda služi za inicijalizaciju mikrokontrolera, a ovdje ćemo najčešće pisati naredbe koje definiraju što je na mikrokontroler spojeni i na koji način. Pogledajmo setup dio ovog primjera:
// the setup function runs once when you press reset or power the board void setup() { // initialize digital pin LED_BUILTIN as an output. pinMode(LED_BUILTIN, OUTPUT); }
U prvoj liniji imamo jednolinijski komentar, koji nam govori da će se ovaj dio koda izvršiti kada se stisne tipka reset na Arduino pločici, odnosno kada se pločica priključi na napajanje.
Setup dio započinje riječima void setup(), a sve naredbe koje se nalaze u njemu moraju biti upisane između vitičastih zagrada koje označavaju početak i kraj tog dijela programa. Sve naredbe koje upišemo u setup dio programa izvrđavaju se samo jednom, na početku rada mikrokontrolera, odnosno kada ga prikljuimo na napajanje ili neposredno nakon restarta.
Pojednostavljeno, možemo reći da u setup dijelu programa podešavamo početne postavke za rad mikrokontrolera i definiramo način rada s komponentama koje su spojene na mikrokontroler.
U ovom primjeru jedina naredba koja se nalazi u setup dijelu je pinMode naredba. Ova naredba služi za definiranje je li pojedini izvod mikrokontrolera ulaznog ili izlaznog tipa. Obzirom da mi želimo upravljati svjetlećom diodom na jednom izvodu koristiti ćemo izlazni režim rada izvoda.
U pinMode naredbu moramo upisati dva argumeta. Argumente naredbe upisujemo u zagradu nakon naziva naredbe. U prvom argumentu definiramo za koji izvod želimo postaviti režim rada, a drugi u koji režim rada želimo postaviti izvod. Svjetleća dioda na Arduino MKR1000 pločici spojena je na izvod broj 6, ali on ima i dodatni naziv na ovoj pločici – možemo ga obilježavati s LED_BUILTIN. Izvod ćemo postaviti u izlazni režim rada jer želimo da mikrokontroler upravlja radom svjetleće diode. Znači, koristimo naredbu pinMode(LED_BUILTIN, OUTPUT), kao što piše u programu. Isto bi postigli i da smo umjesto LED_BUILTIN pisali 6, odnosno da je naredba pinMode(6, OUTPUT).
Odmah nakon izvršenja setup dijela izvršava se loop dio programa. Sve naredbe koje upišemo u loop dio ponavljaju se sve dok ne restartamo mikrokontroler.
Kao i kod setup dijela programa i loop dio započinje ključnom rječju loop, a a sve naredbe koje se nalaze u njemu moraju biti upisane između vitičastih zagrada koje označavaju početak i kraj tog dijela programa. Unutar loop dijela nailazimo na dvije nove naredbe – digitalWrite i delay.
Naredba digitalWrite služi za uključivanje i isključivanje pojedinog izvoda. Ova naredba ima dva argumenta – izvod i stanje izvoda. Stanje izvoda može biti LOW ili HIGH. Stanje LOW isključuje izvod, odnosno na izvodu će biti napon od 0V, a stanje HIGH uključuje izvod, odnosno na njemu će biti napon od 3.3V. Naredba digitalWrite(LED_BUILTIN, HIGH) će uključiti svjetleću diodu na MKR1000 pločici, a digitalWrite(LED_BUILTIN, LOW) će ju isključiti.
Naredba delay služi za zaustavljanje izvršavanja programa na određano vrijeme. Ova naredba ima samo jedan argument koji definira trajanje zaustavljanja u milisekundama. Npr. delay(1000) će zaustaviti izvođenje programa na 1000 milisekundi odnosno na jednu sekundu.
Ukoliko promjenimo iznos argumenta delay naredbe možemo ubrzati ili usporiti blinkanje. Pokušajte promjeniti na 500 milisekundi, kako slijedi:
// the loop function runs over and over again forever void loop() { digitalWrite(LED_BUILTIN, HIGH); // turn the LED on (HIGH is the voltage level) delay(500); // wait for a second digitalWrite(LED_BUILTIN, LOW); // turn the LED off by making the voltage LOW delay(500); // wait for a second }
Kako bi se program počeo izvoditi na mikrokontroleru potrebno je prebaciti program na njega. To možete učiniti koristeći drugu ikonu iz trake s prečacima (okrugla ikona sa strelicom u desno) ili odabirom Uplad opcije iz Sketch izbornika.
Nakon prijenosa programa u statusnoj traci će pisati poruka „Uploading done“ a mikrokontroler će krenuti sa izvršavanjem napisanog programa! Čestiam, napisali ste svoj prvi program ?
verzija 1