Paolo Zenzerović rođen je 1988. godine u Puli. Osnovnu i srednju Tehničku školu završio je u rodnom gradu nakon čega je pohađao studij elektrotehnike na Tehničkom fakultetu Sveučilišta u Rijeci. Zadnju godinu studija proveo je na Politehničkom fakultetu u Torinu te na Tehničkom fakultetu u Beču razvijajući diplomski rad. Magistrirao je u području automatike sa radom temeljenim na primjeni mikrokontrolera u edukaciji. Osnivač je i predsjednik Hrvatskog društva za edukacijsku tehnologiju.
Paolo Zenzerović
O autoru
Više o autoru pogledajte na: www.paolozenzerovic.info.
ARDUINO
kroz jednostavne primjere
ARDUINO kroz jednostavne primjere
HRVATSKA ZAJEDNICA TEHNIČKE KULTURE
ARDUINO KROZ JEDNOSTAVNE PRIMJERE PAOLO ZENZEROVIĆ
ZAGREB, 2014.
ARDUINO KROZ JEDNOSTAVNE PRIMJERE Paolo Zenzerović, mag. ing. el. Glavni i odgovorni urednik Zoran Kušan, ing. stroj. Nakladnik
Hrvatska zajednica tehničke kulture Dalmatinska 12, Zagreb Za nakladnika
Zdenka Terek, dipl. oec. Recenzenti
mr. sc. Vladimir Mitrović Hrvoje Vrhovski, prof. Đula Nađ, prof.
Stručni suradnik Željko Krnjajić Lektorica
Davorka Mijajlović, prof.
Grafički urednik i priprema za tisak Zoran Kušan, ing. stroj. Tisak
Denona d.o.o., Getaldićeva 2, Zagreb
CIP zapis dostupan u računalnome katalogu Nacionalne i sveučilišne knjižnice u Zagrebu pod brojem 895068. ISBN 978-953-6091-40-9
Mojoj djevojci, zaručnici i budućoj ženi Dori
Sadržaj
Predgovor . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11 UVOD . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13 Što očekivati? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .13 Mikrokontroler – što je to? . . . . . . . . . . . . . . . . . . . . . . . . . . . . .13 Arduino . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14 Korišteni programski alati . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15
PRORADI . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16 Preuzimanje, instalacija i podešavanje . . . . . . . . . . . . . . . . . . . . . . 16 Osnovna znanja . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .20 Prvi program . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .21
UKLJUČI – ISKLJUČI . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25 Svjetleće (LED) diode . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .25 Blinkanje svjetleće diode . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .26 Blinkanje dvije svjetleće diode . . . . . . . . . . . . . . . . . . . . . . . . . . .29 Naizmjenično blinkanje dvije svjetleće diode . . . . . . . . . . . . . . . . . . .31 Trčeće svjetlo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32 Trčeća tama . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .34 Semafor za automobile . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .35 Semafor za automobile i pješake . . . . . . . . . . . . . . . . . . . . . . . . . 37 Igra sa svjetlima . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .40 RGB diode . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .42 Promjena boja . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .43 Miješanje dviju boja . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45 Semafor za automobile s RGB diodom . . . . . . . . . . . . . . . . . . . . . . 46 Sedam segmentni ekrani . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .47 Trčanje segmenata . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49 Brojimo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .52
JE - NIJE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 54 Tipkala . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .54 Osnovni rad tipkala . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .55
Inverzni rad tipkala . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .57 Uključi – isključi s dva tipkala . . . . . . . . . . . . . . . . . . . . . . . . . . . 58 Trčeće svjetlo – lijevo desno . . . . . . . . . . . . . . . . . . . . . . . . . . . .60 Sklopke . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .62 Osnovni rad sklopke . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 63 Logičke funkcije . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .65 Logička funkcija “I” . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .65 Logička funkcija “ILI” . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .67 Invertiraj . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .69 Reed sklopke . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .71 Automatsko gašenje klima-uređaja . . . . . . . . . . . . . . . . . . . . . . . .72
MALI PROJEKTI . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 74 Elektronička kockica . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 74 Gdje je dizalo? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .79
POJAČAJ – SMANJI . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 82 Svjetleće diode . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 82 Stalna vrijednost . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 84 Pojačavanje . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 86 Pojačavanje i smanjivanje . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 88 Pojačavanje i smanjivanje – dvije svjetleće diode . . . . . . . . . . . . . . . . 89 Ručno upravljanje jačinom svjetlosti . . . . . . . . . . . . . . . . . . . . . . . 91 RGB diode . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .93 Stalna vrijednost . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 93 Ručno upravljanje promjenom boja . . . . . . . . . . . . . . . . . . . . . . . .95 Zujalice . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .98 Generiranje zvuka . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .99 Električni klavir . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 101
PRIČAJMO . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 103 Serijska komunikacija s računalom . . . . . . . . . . . . . . . . . . . . . . . 103 Reci “VOLIM ARDUINO!” . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 104 Pošalji stanje tipkala . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 106 Brojač proizvoda na proizvodnoj traci . . . . . . . . . . . . . . . . . . . . . . 108
PUNO – MALO . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 111 Potenciometri . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 111 Očitanje stanja analognog ulaza . . . . . . . . . . . . . . . . . . . . . . . . . 113 Pojačavanje i smanjivanje svjetlosti . . . . . . . . . . . . . . . . . . . . . . . 115 Promjena boje RGB diode . . . . . . . . . . . . . . . . . . . . . . . . . . . . 117 Upravljanje brzinom trčećeg svjetla . . . . . . . . . . . . . . . . . . . . . . . 119 Jednostavan voltmetar . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 121 Fotootpornici . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 124 Očitanje stanja fotootpornika . . . . . . . . . . . . . . . . . . . . . . . . . . 125 Detektor tame . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 127 Pojačavanje i smanjivanje svjetlosti . . . . . . . . . . . . . . . . . . . . . . . 129
VELIKI PROJEKTI . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 130 Napredni semafor . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 130 Svjetlosni instrument . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 134
ZA KRAJ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 139
Predgovor Volite li elektroniku i volite li programiranje, poigrajte se mikrokontrolerima! Uvjeren sam da ćete proučavajući sklopove i programe koje su drugi osmislili, a zatim i upuštajući se u realizaciju vlastitih projekata, uz njih provesti puno zabavnih sati.
Samo, kako započeti? Odgovor se čini lakim: ta danas su nam sva znanja nadohvat ruke! Uključimo računalo, pokrenemo tražilicu, poneki klik mišem i eto mnoštva dokumenata, slika i filmića koji se nude ne bi li nam odgovorili na postavljeni upit. Mlađi čitaoci će to možda teže razumjeti, ali nije uvijek tako bilo. Još ne tako davno, do novih smo spoznaja dolazili proučavajući knjige i stručne časopise. I ja pripadam toj generaciji koja je učila čitajući, većinu svojih znanja sam pokupio iz knjiga i zbog toga znam cijeniti vrijednost dobre knjige.
A jedna takva vam je upravo u rukama! Njena je osnovna namjena da nam olakša ulazak u taj zanimljiv i intrigantan svijet - svijet mikrokontrolera - i za to koristi megapopularnu Arduino platformu. U uvodnom dijelu knjige upoznajemo glavne protagoniste, mikrokontroler ATmega328, Arduino pločicu i Arduino programsko sučelje, a tek nekoliko stranica kasnije već smo napisali svoj prvi program. I ne samo to: program smo uspješno prenijeli u mikrokontroler i time ga podučili kako naizmjenično paliti i gasiti svjetleću diodu. Slijede složeniji zadatci, s mikrokontrolerom treba povezati sve više komponenti, a autor nas uči kako se te komponente koriste i kako napisati programe koji će znati upravljati njihovim radom. Nema tu puno filozofije: jednostavne upute, sjajni crteži i zabavni zadatci vuku nas da prije spavanja otvorimo još jedno poglavlje. Učimo programirati, a toliko je zabavno da toga uopće nismo svjesni. Može li biti bolje od toga!? Naravno, mogućnosti koje nude mikrokontroleri, bili korišteni na Arduino platformi ili drukčije, puno su veće od opsega ove knjige. No, njena namjena niti nije da nas nauči svemu - ona samo pruža dobru podlogu, kako bismo sami mogli nastaviti istraživati i učiti. Tada će nam ona tražilica iz uvodnog dijela biti i te kako korisna. Barem dok autor ne osmisli neku jednako zabavnu knjigu za naprednije korisnike. Do tada, želim vam puno zanimljivih trenutaka uz Arduino kroz jednostavne primjere!
mr. sc. Vladimir Mitrović, dipl. ing.
13
UVOD Što očekivati? Dragi čitatelju, dobrodošao u svijet mikrokontrolera.
Ova knjiga namijenjena je svima koji žele naučiti ponešto o elektronici, mikrokontrolerima i programiranju. Knjiga će Vas kroz jednostavne primjere voditi korak po korak kroz to što su mikrokontroleri, kako rade, kako ih možemo programirati te što s njima možemo učiniti.
Knjigu možete koristiti na dva načina. Ako ste potpuni početnik preporučam Vam da knjigu čitate od početka do kraja, poglavlje po poglavlje, rješavajući zadatak po zadatak i na taj način upoznate način rada mikrokontrolera, programiranje i načine spajanja određenih elektroničkih komponenti na mikrokontroler. Ukoliko ste već radili s mikokontrolerima ili imate neko predzanje, knjigu možete koristiti kao zbirku zadataka za vježbu ili možete pročitati pojedino poglavlje kako biste se upoznali s načinom korištenja elektroničke komponente koja se u tom poglavlju pojavljuje. Kako biste lakše učili i rješavali praktične zadatke preporučam Vam, da ukoliko već nemate, nabavite neku od Arduino pločica, a najbolje Arduino UNO pločicu ili još bolje osnovni komplet elemenata koji često možete naći u takozvanim starter paketima – eksperimentalnu pločicu, nekoliko raznobojnih svjetlećih dioda i otpornike za njih, nekoliko tipkala, spojne žice i slično. Svi programi za mikrokontroler, kao i sve sheme koje se nalaze u ovoj knjizi dostupni su besplatno za preuzimanje u elektroničkom obliku na web-stranici www.izradi.com.hr.
Mikrokontroler – što je to?
Već smo nekoliko puta spomenuli mikrokontrolere, a zapravo nismo pojasnili što su to mikrokontroleri. Postoje razne definicije, ali najjednostavnije rečeno mikrokontroler je računalo u malom. Mikrokontroleri su mala računala smještena na jedan integrirani sklop. Na sljedećoj slici prikazan je mikrokontroler s kojim ćemo mi raditi u ovoj knjizi – njegov naziv je ATMEGA328 a proizvodi ga tvrtka ATMEL.
14 Unutar tog integriranog sklopa nalaze se razni sastavni dijelovi mikrokontrolera, kao što su procesor, radna memorija, programska memorija, ulazne i izlazne jedinice itd. Za početak možete mikrokontroler zamisliti kao crnu kutiju s desetak izvoda. Izvodi mikrokontrolera služe kako bismo na njega mogli spajati neke elektroničke elemente i s njima upravljati pomoću mikrokontrolera. Da bi mikrokontroler znao što zapravo treba raditi i kako da upravlja s onime što smo na njega spojili za njega moramo napisati program a potom taj program moramo učitati u mikrokontroler.
Kako bi cijeli taj postupak korištenja mikrokontrolera – spajanja elektroničkih komponenti na njega, njegovog programiranja te korištenja bio što jednostavniji osmišljeni su razni alati koji nam olakšavaju njihovo korištenje. Jedan od najpoznatijih alata koji se u svijetu najviše koristi upravo za učenje i početak rada s mikokotrolerima je Arduino, pa ćemo tako i mi, kroz ovu knjigu i njezine primjere savladati mikrokontrolere upravo pomoću Arduina.
Arduino
Arduino je kao platforma za učenje programiranja i korištenja mikrokontrolera nastao prije desetak godina. Njegovi stvoritelji kažu da je Arduino open-source platforma za kreiranje elektroničkih prototipova bazirana na sklopovlju i programskom paketu koji je fleksibilan i jednostavan za korištenje. Arduino je namijenjen umjetnicima, dizajnerima, hobistima, elektroničarima i svima koji su zainteresirani za stvaranje interaktivnih objekata ili okruženja (preuzeto sa www.arduino.cc).
Jednostavnije, Arduino platforma je skup elektroničkih i programskih dijelova koji se mogu jednostavno povezivati u složenije cjeline s ciljem izrade zabavnih i poučnih elektroničkih sklopova.
Kao što vidite, Arduino je namijenjen svima, velikima i malima, elektroničarima, tehničarima ali i umjetnicima i kreativcima da lakše i brže ostvare svoje ideje. Cijela Arduino platforma napravljena je i objavljena kao otvoreni sustav – to znači da su sve sheme i izvorni kôd programa kojega ćemo korititi za programiranje Arduina besplatno dostupni svima za preuzimanje i modificiranje sa službene stranice Arduino platforme – www.arduino.cc. Mi ćemo u ovoj knjizi koristiti jednu od Arduino pločica pod nazivom – Arduino UNO. Pločica je prikazana na sljedećoj slici.
15
Srce Arduino UNO pločice je upravo ATMEGA328 mikrokontroler. Sklopovlje koje se nalazi oko njega služi kako bi se mikrokontroler mogao pokrenuti i kako bismo u njega mogli ubaciti program koji pišemo na računalu. Komunikacija Arduino UNO pločice i računala odvija se preko USB priključka.
Korišteni programski alati
U knjizi se koristi nekoliko računalnih alata. Za programiranje mikrokontrolera koristit ćemo Arduino IDE programsko sučelje. Više o njemu u sljedećem poglavlju. Za prikaz spajanja Arduino UNO pločice i elektroničkih elemenata na eksperimentalnoj pločici, te shematske prikaze spajanja korišten je besplatni program pod nazivom Fritzing. Više informacija o tom programu možete pronaći na www.fritzing.org. Njega ne morate nužno preuzimati i instalirati, ali bi Vam mogao dobro doći u budućnosti za dokumentiranje Vaših projekata s mikrokontrolerima. Također, sve sheme u knjizi dostupne su za preuzimanje u Fritzing formatu na web-stranici www.izradi.com.hr.
16
PRORADI Preuzimanje, instalacija i podešavanje Kako bi započeli s radom, moramo preuzeti i instalirati Arduino IDE – program za pisanje programa za Arduino mikrokontrolere. Program možete besplatno preuzeti na web-adresi www.arduino.cc. U vrijeme pisanja ove knjige aktualna verzija programa je 1.0.6 i svi će primjeri biti pisani u toj verziji programa. Nakon preuzimanja programa pokrenite instalaciju. Nakon nekoliko pritisaka na tipku next uspješno ste instalirali Arduino IDE. Postupak instalacije prikazan je korak po porak na sljedećim slikama.
17 Kada ste instalirali program, pokrenite ga i pogledajte što vam je dostupno na osnovnom prikazu. Prikaz programa možemo podijeliti na nekoliko osnovnih dijelova, kako je prikazano na sljedećoj slici.
Gornji dio programa čini alatna traka sa standardnim izbornikom te dodatnim gumbima za brzi dolazak do često korištenih opcija. Srednji dio programa rezerviran je za pisanje kôda, dok je u donjem dijelu smještena konzola. Konzola služi za prikaz statusa programa te za poruke uspješnosti prijenosa napisanog programa u mikrokontroler ili za poruke o detektiranim greškama u napisanom programu. Na sljedećoj slici prikazan je izbornik s prečacima.
18 Prije početka rada bitno je podesiti neke od parametara Arduino IDE programa. Moramo odabrati koju Arduino pločicu koristimo, na koji je priključak računala ona spojena te na koji način želimo slati programe na mikrokontroler. Ova je podešenja dovoljno napraviti jednom ako ne mijenjate pločicu ili korišteni priključak računala. Za odabir pločice klikite na Tools u gornjem izborniku, potom na Board i odaberite Arduino UNO.
Za odabir priključka računala kliknite na Tools u gornjem izborniku, potom na Serial port te odaberite serijski priključak na kojem je spojena Vaša pločica.
19 Ukoliko je prikazano više serijskih priključaka ili ne znate koji priključak odabrati na upravljačkoj ploči Vašeg računala možete pronaći odgovor. Kliknite na Start u Windows alatnoj traci te pokrenite upravljačku ploču (Control panel). Potom odaberite upravitelj uređaja (Device manager) i pronađite Arduino UNO pločicu. Kraj nje stoji oznaka s nazivom serijskog priključka Vaše Arduino pločice. Unutar Arduino IDE programa odaberite taj serijski priključak.
Naposljetku je potrebno odabrati programator koji koristimo. Za taj odabir kliknite na Tools unutar Arduino IDE programa, potom na Programmer te odaberite Arduino as ISP.
Sad kad smo sve uspješno podesili krenimo s radom.
20 Osnovna znanja Nakon što smo instalirali i upoznali Arduino IDE program vrijeme je da malo bolje upoznamo mikrokontrolere.
Kao što smo već rekli, mikrokontroler za početak možemo zamisliti kao crnu kutiju koja ima određen broj izvoda kojima je moguće upravljati pomoću programa kojeg korisnik napiše na računalu i koji se onda izvodi na samom mikrokontroleru.
Izvodi mikrokontrolera su na Arduino UNO pločici spojeni na crne konektore na samom rubu pločice. Svaki izvod ima svoje jedinstveno ime koje je napisano kraj njega. Tako na konektoru s gornje strane imamo izvode 0,1,2,3 itd. do 13. Sa donje strane Arduino UNO pločice dodatno nalazimo izvode koji se nazivaju A0, A1, A2 itd. do A5. Dodatno u donjem dijelu pločice postoje i VCC (+5 V) i GND izvodi. Osim ovih izvoda na pločici su označeni i drugi izvodi ali nam oni za sada nisu važni.
Izvodi mikrokontrolera služe za povezivanje mikrokontrolera s elektroničkim elementima, sklopovima i uređajima koji se nalaze izvan Arduino pločice. Mogu se koristiti za upravljanje svjetlećim diodama, motorima itd. ili za očitavanje stanja s različitih senzora (tipkala, sklopke, senzori temperature itd.). Tako kažemo da izvodi mogu imati dva načina rada – izlazni i ulazni.
Također, izvode možemo podijeliti na digitalne i analogne. Digitalni izvodi mogu biti u samo jednom od dva moguća stanja – nisko logičko stanje i visoko logičko stanje. Kod niskog stanja na izvodu je napon od 0 V, a kod visokog logičkog stanja na izvodu je napon od 5 V. Kod analognih izvoda moguće je očitavati ili regulirati napon bilo koje vrijednosti između 0 V i 5 V. Ako niste sve baš sve od ovoga zapamtili, ne brinite, sve će Vam postati jasno kroz primjere koji slijede.
21 Prvi program Jedna od velikih prednosti Arduino platforme je što postoji vrlo velik broj već gotovih primjera koje možemo iskoristiti za učenje i stvaranje vlastitih uređaja. Kako bi na samom početku mogli vidjeti radi li naša Arduino UNO pločica i kako bi naučili kako učitati program s računala u mikrokontroler iskoristit ćemo jednostavan program iz primjera u Arduino IDE programu. Klikom na izbornik File i odabirom kategorije Examples pojavljuju se kategorije dostupnih primjera. Pod kategorijom Basics nalazi se program Blink.
Otvorimo ga i pogledajmo.
22 Cilj ovoga programa je uključivati i isključivati svjetleću (LED) diodu koja se nalazi na samoj Arduino UNO pločici. Naime, kako bi mi kao korisnici pločice odmah nakon instalacije mogli isprobati njezinu funkcionalnost na samu je pločicu, na izvod broj 13, spojena jedna svjetleća dioda. Kako biste učitali napisani program u mikrokontroler možete iskoristiti drugu ikonu u traci s prečacima – Upload ikonu. Učitajmo program u mikrokontroler i pogledajmo što se događa. Svjetleća dioda se naizmjenično uključuje i isključuje – blinka. Proučimo program da vidimo kako je to postignuto.
/* Blink Turns on 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 and Leonardo, it is attached to digital pin 13. If you›re unsure what pin the on-board LED is connected to on your Arduino model, check the documentation at http://arduino.cc This example code is in the public domain. modified 8 May 2014 by Scott Fitzgerald */
// the setup function runs once when you press reset or power the board void setup() { // initialize digital pin 13 as an output. pinMode(13, OUTPUT); } // the loop function runs over and over again forever void loop() { digitalWrite(13, HIGH); // turn the LED on (HIGH is the voltage level) delay(1000); // wait for a second digitalWrite(13, LOW); // turn the LED off by making the voltage LOW delay(1000); // wait for a second }
Svaki od Arduino programa (engleski naziv sketch) sastoji se od tri osnovna dijela. U prvom dijelu programa govorimo mikrokontroleru na koji smo izvod što spojili odnosno definiramo varijable, u drugom dijelu programa govorimo na koji način koristimo pojedine izvode te piše-
23 mo onaj dio kôda koji se izvodi samo jednom na početku, pri pokretanju mikrokontrolera, a u trećem dijelu programa pišemo što zapravo mikrokontroler mora raditi.
U ovome primjeru u prvom dijelu, koji seže do setup dijela programa, nemamo ništa osim komentara. Komentari su u Arduino IDE programu prikazani sivom bojom i služe samo za prijenos informacija korisnicima, kao način da autor pojasni korisnicima koji koriste ovaj program što program radi. Komentari se često koriste kako bi se pojasnile funkcije i pojedine naredbe u programu. U ovoj knjizi svaka će linija kôda u zadatcima biti komentirana kako biste točno znali što koja naredba radi. /* Blink Turns on 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 and Leonardo, it is attached to digital pin 13. If you›re unsure what pin the on-board LED is connected to on your Arduino model, check the documentation at http://arduino.cc This example code is in the public domain. modified 8 May 2014 by Scott Fitzgerald */
Kao što vidite, komentari moraju započeti znakovima /* i završiti znakovima */ kako bi Arduino IDE program znao da je to komentar. Kada komentari stanu u jednu liniju moguće je komentar započeti sa // kao što vidite u sljedećem programskom odlomku. Tada se sav tekst od znakova // do kraja linije smatra komentarom.
Unutar drugog dijela – kojeg nazivamo setup dijelom rekli smo mikrokontroleru da je izvod broj 13, na kojem je spojena svjetleća dioda izlaznog tipa. To znači da mikrokontroler upravlja uključivanjem i isključivanjem svjetleće diode. // the setup function runs once when you press reset or power the board void setup() { // initialize digital pin 13 as an output. pinMode(13, OUTPUT); }
Kao što vidimo za postavljanje načina rada pojedinog izvoda koristimo naredbu pinMode(nazivizvoda, načinrada). Ova naredba ima dva argumenta (argumenti su podatci koje upisujemo u zagrade kod naredbi) – nazivizvoda definira na koji se izvod odnosi naredba a načinrada definira je li taj izvod ulaznog ili izlaznog tipa. Kako mi želimo upravljati svjetlećom diodom onda postavljamo izvod u izlazni način rada koristeći ključnu riječ OUTPUT.
24 U trećem dijelu programa – takozvanom loop dijelu koji se stalno ponavlja dok mikrokontroler radi napisali smo dio kôda koji uključuje diodu, nakon toga čeka jednu sekundu, pa isključuje diodu te ponovno čeka jednu sekundu. // the loop function runs over and over again forever void loop() { digitalWrite(13, HIGH); // turn the LED on (HIGH is the voltage level) delay(1000); // wait for a second digitalWrite(13, LOW); // turn the LED off by making the voltage LOW delay(1000); // wait for a second }
Za uključivanje i isključivanje svjetleće diode koristimo naredbu digitalWrite. Ova naredba također ima dva argumenta digitalWrite(nazivizvoda, stanje). Argument nazivizvoda definira na koji se izvod odnosi naredba a stanje definira postavljamo li izvod u visoko ili nisko stanje. Kada se izvod nalazi u stanju visoko svjetleća je dioda uključena, a kada je stanje nisko svjetleća je dioda isključena.
Naredba delay(vrijeme) koristi se za zaustavljanje rada odnosno čekanje određenog vremenskog perioda. Argument vrijeme govori nam koliko dugo treba zaustaviti rad i izražava se u milisekundama. Naredba delay(1000) će zaustaviti rad na 1000 milisekundi tj. jednu sekundu.
Budući da se dio kôda koji uključuje i isključuje svjetleću diodu nalazi unutar loop dijela programa koji se stalno ponavlja dobivamo efekt blinkanja svjetleće diode.
25
UKLJUČI – ISKLJUČI U ovome ćemo poglavlju naučiti spajati elektroničke komponente na mikrokontroler – svjetleće diode, RGB diode i sedam segmentne pokazivače, te pisati programe za upravljanje njihovim radom.
Svjetleće (LED) diode
U ovoj temi upoznat ćemo svjetleće diode i način njihovog spajanja na mikrokontroler. Naziv LED diode dolazi iz engleskog i kratica je za Light Emitting Diode što u doslovnom prijevodu znači dioda koja emitira svjetlost. Hrvatski naziv za LED diodu je svjetleća dioda. Na sljedećoj slici prikazana je svjetleća dioda – njezin izgled i shematski simbol u Fritzing programu.
Kao što vidite svjetleće diode imaju dvije nožice. Duža nožica zove se anoda, dok se kraća nožica zove katoda. Kako bi svjetleća dioda zasvijetlila potrebno ju je priključiti na napon od oko 2 V. Anoda se uvijek priključuje na plus stranu, a katoda na minus stranu izvora napona. Osim po duljini nožice katodu je moguće prepoznati jer je na kućištu kraj nje napravljen zarez – u tom dijelu kućište nije zaobljeno već je ravno.
Kako bi svjetleću diodu mogli uključivati i isključivati pomoću mikrokontrolera potrebno ju je spojiti na neki od digitalnih izvoda – 0,1,2,3 itd. do 13. Izvode 0 i 1 nećemo koristiti jer se oni koriste za komunikaciju s računalom. Kako smo već rekli u uvodnom dijelu svi digitalni izvodi mogu biti u dva stanja – uključeni ili isključeni odnosno u stanju visoko ili nisko. Kada je pojedini izvod uključen odnosno u stanju visoko na njemu se pojavljuje napon od 5 V prema GND izvodu mikrokontrolera. Kako svjetleća dioda radi na otprilike 2 V potrebno je dodati predotpornik za spajanje na mikrokontroler. Način spajanja prikazan je na sljedećoj slici.
Najčešće se za spajanje svjetleće diode na mikrokontroler koristi otpornik vrijednosti 330 Ohma.
26 Blinkanje svjetleće diode Krenimo odmah na naš prvi jednostavan zadatak.
Z1: Na mikrokontroler spojite jednu svjetleću diodu. Napišite program koji će diodu uključivati i isključivati u intervalima od pola sekunde kako biste postigli efekt blinkanja.
Ovaj je zadatak zapravo isti kao i onaj u temi Prvi program u prethodnom poglavlju knjige. Jedina razlika je što ovdje nećemo koristiti svjetleću diodu koja se nalazi na samoj Arduino UNO pločici već ćemo spojiti dodatnu svjetleću diodu na mikrokontroler. Na sljedećim slikama prikazana je električna shema te način spajanja svjetleće diode na eksperimentalnoj pločici:
27 Iz gornje sheme i prikaza spajanja vidljivo je da smo odabrali izvod broj 2 za spajanje svjetleće diode. Ovo je naravno naš odabir, ništa nas ne obvezuje da koristimo upravo taj izvod – mogli smo iskoristiti bilo koji drugi digitalni izvod. Ukoliko do sada niste radili sa eksperimentalnom pločicom pogledajte sljedeću sliku na kojoj su prikazani unutarnji spojevi na eksperimentalnoj pločici.
Eksperimentalna pločica služi za jednostavno spajanje elektroničkih sklopova. Pločica se sastoji od mnoštva rupica u koje utaknemo nožice elektroničkih komponenata kako bismo ih međusobno spojili. Na eksperimentalnoj pločici razlikujemo dva osnovna područja – rubno područje i središnje područje. Rubno područje nalazi se s gornje i donje strane i sastoji se od dva retka rupica. Sve rupice u pojedinom retku međusobno su povezane kako je na gornjoj slici prikazano plavim i crvenim linijama. Središnje područje sastoji se od gornjeg i donjeg dijela. Svaki od tih dijelova čine grupe od pet rupica koje se nalaze u stupcima. Tih pet rupica u svakoj grupi spojene su zajedno, kako je na slici prikazano zelenim linijama. Kada želimo dva izvoda nekih elektroničkih elemenata spojiti zajedno dovoljno je da ih utaknemo u istu grupu rupica – u isti stupac u središnjem dijelu ili u isti redak u rubnom dijelu eksperimentalne pločice.
Kada smo uspješno spojili svjetleću diodu na mikrokontroler možemo započeti s programiranjem. int led = 2; //definiraj led = 2 void setup() { pinMode(led, OUTPUT); digitalWrite(led, LOW); }
//postavi led kao izlazni //isključi LED diodu - početno stanje
void loop() { digitalWrite(led, HIGH); //uključi LED diodu delay(500); //čekaj 500 ms - pola sekunde digitalWrite(led, LOW); //isključi LED diodu delay(500); //čekaj 500 ms - pola sekunde }
28 Predhodni programski kôd je rješenje prvoga zadatka.
U prvom dijelu programa definirali smo da je svjetleća dioda spojena na izvod broj 2. Za to smo iskoristili varijablu koju smo nazvali led. Varijable su zapravo memorijske lokacije na koje možemo upisati neku vrijednost koja se može mijenjati tijekom izvođenja programa. Svaka varijabla ima svoj naziv i svoju vrijednost. U ovom slučaju naziv varijeble je led a njezina vrijednost je 2. Korištenjem ove varijable olakšali smo si pisanje i čitanje kôda jer možemo korisititi njezin naziv umjesto broja izvoda pri radu sa izvodom.
Nakon toga, u setup dijelu pomoću naredbe pinMode postavili smo izvod koji nazivamo led – odnosno izvod broj 2 kao izlazni jer pomoću njega želimo upravljati svjetlećom diodom. Odmah nakon toga iskoristili smo naredbu digitalWrite kako bismo isključili svjetleću diodu. U ovome slučaju ovo nije nužno ali je dobra praksa na kraju setup dijela postaviti sva početna stanja svih izvoda s kojima nečime upravljamo, kako bi točno znali u kojem će nam stanju biti ti izvodi.
Unutar loop dijela programa uključujemo i isključujemo svjetleću diodu svakih 500 milisekundi odnosno pola sekunde.
Učitajte program u mikrokontroler i provjerite radi li zaista svjetleća dioda onako kako smo zamislili.
29 Blinkanje dvije svjetleće diode Drugi zadatak je zapravo dogradnja na prethodni.
Z2: Na mikrokontroler spojite dvije svjetleće diode. Napišite program koji će svjetleće diode uključivati i isključivati u intervalima od pola sekunde kako biste postigli efekt da obje diode zajedno blinkaju.
Na električnu shemu i prikaz spajanja na eksperimentalnoj pločici iz prvog zadatka nadodali smo još jednu svjetleću diodu.
Dodatnu svjetleću diodu spojili smo na izvod broj 3. Također, na programski kôd iz prvog zadatka potrebno je nadodati nekoliko linija kôda kako bi mikrokontroler upravljao i drugom diodom.
30 int led1 = 2; //definiraj led1 = 2 int led2 = 3; //definiraj led2 = 3 void setup() { pinMode(led1, OUTPUT); pinMode(led2, OUTPUT); digitalWrite(led1, LOW); digitalWrite(led2, LOW); }
//postavi led1 kao izlazni //postavi led2 kao izlazni //isključi LED diodu 1 - početno stanje //isključi LED diodu 2 - početno stanje
void loop() { digitalWrite(led1, HIGH); //uključi LED diodu 1 digitalWrite(led2, HIGH); //uključi LED diodu 2 delay(500); //čekaj 500 ms - pola sekunde digitalWrite(led1, LOW); //isključi LED diodu 1 digitalWrite(led2, LOW); //isključi LED diodu 2 delay(500); //čekaj 500 ms - pola sekunde }
Za svaku korištenu svjetleću diodu potrebno je posebno definirati gdje je spojena, postaviti izvod u izlazni način rada te postaviti početno stanje svjetleće diode.
Zbog toga smo u prvom dijelu programa dodali jednu novu varijablu – led2 i postavili njezinu vrijednost na 3, jer je druga svjetleća dioda spojena na izvod 3. U drugom dijelu programa dodali smo još jednu pinMode naredbu kako bi i izvod na kojem je spojena druga svjetleća dioda postavili u izlazni način rada, te jednu digitalWrite naredbu kako bi i drugu svjetleću diodu isključili na početku programa.
Također, unutar loop dijela programa potrebo je dodati digitalWrite naredbe za uključivanje i isključivanje druge svjetleće diode.
Vrlo je bitno znati da se program u mikrokontroleru odvija slijedno, naredbu po naredbu. Mikrokontroler vrlo brzo izvršava naredbe. Cilj ovoga zadatka bio je da istovremeno blinkaju obje svjetleće diode. Upravo zbog činjenice da mikrokontroler vrlo brzo izvršava naredbe mi možemo uključiti prvu svjetleću diodu, a nakon toga u sljedećoj naredbi uključiti drugu svjetleću diodu. Svjetleće diode zapravo nisu uključene istovremeno, već je druga uključena kratko nakon prve, ali to se odvija tolikom brzinom da je okom to nemoguće primijetiti.
74
MALI PROJEKTI U ovom poglavlju ćemo kroz dva projekta kombinirati dosad stečena znanja.
Elektronička kockica
Jeste li ikada igrali “Čovječe ne ljuti se” ili neku sličnu igru? Ako jeste, sigurno ste puno puta bacili kockicu i nadali se dobitku broja 6. U ovome ćemo projektu izraditi elektroničku kockicu kako bi igre na sreću postale još zabavnije. Z23: Na mikrokontroler spojite sedam svjetlećih dioda i jedno tipkalo. Svjetleće diode spojite tako da izgledaju kao točkice na kockici za igre na sreću. Napišite program koji će na svjetlećim diodama prikazivati brojeve od 1 do 6 kako su oni inače prikazani na kockici. Promjena i nasumičnost brojeva postiže se na način da dok korisnik drži tipkalo program odbrojava od 1 do 6 velikom brzinom i prikazuje to na svjetlećim diodama. Kada korisnik otpusti tipkalo brojanje se zaustavlja i posljednji broj ostaje prikazan na svjetlećim diodama. Sljedeća slika prikazuje moguće kombinacije dobivenih brojeva.
Prazni kružići prikazuju isključenu svjetleću diodu, dok crveni kružići prikazuju uključenu svjetleću diodu. Nazivi dioda u programu i na shemi prikazani su na sljedećoj slici.
75 Slijedi prikaz spajanja:
76 Programski kôd rješenja: int led1 = 2; //definiraj led1 = 2 int led2 = 3; //definiraj led2 = 3 int led3 = 4; //definiraj led3 = 4 int led4 = 5; //definiraj led4 = 5 int led5 = 6; //definiraj led5 = 6 int led6 = 7; //definiraj led6 = 7 int led7 = 8; //definiraj led7 = 8 int tipkalo = 9; //definiraj tipkalo = 9 int brojac = 0; //definiraj brojač = 0 void setup() { pinMode(led1, OUTPUT); //postavi izvod led1 kao izlazni pinMode(led2, OUTPUT); //postavi izvod led2 kao izlazni pinMode(led3, OUTPUT); //postavi izvod led3 kao izlazni pinMode(led4, OUTPUT); //postavi izvod led1 kao izlazni pinMode(led5, OUTPUT); //postavi izvod led2 kao izlazni pinMode(led6, OUTPUT); //postavi izvod led3 kao izlazni pinMode(led7, OUTPUT); //postavi izvod led3 kao izlazni pinMode(tipkalo, INPUT_PULLUP);//postavi izvod tipkalo kao ulazni } void iskljucisveled() { digitalWrite(led1, LOW); digitalWrite(led2, LOW); digitalWrite(led3, LOW); digitalWrite(led4, LOW); digitalWrite(led5, LOW); digitalWrite(led6, LOW); digitalWrite(led7, LOW); }
//isključi LED diodu 1 //isključi LED diodu 2 //isključi LED diodu 3 //isključi LED diodu 4 //isključi LED diodu 5 //isključi LED diodu 6 //isključi LED diodu 7
void loop() { if (digitalRead(tipkalo)==LOW) {//ukoliko je tipkalo pritisnuto brojac=brojac+1; //dodaj 1 na brojač if (brojac>6) { //ako je brojač veći od 6 brojac=1; //vrati brojač na 1 } } if (brojac==1) { //ukoliko je brojač = 1
77 iskljucisveled(); //isključi sve LED diode digitalWrite(led4, HIGH); //prikaz broja 1 } elseif (brojac==2) { //ukoliko je brojač = 2 iskljucisveled(); //isključi sve LED diode digitalWrite(led1, HIGH); //prikaz broja 2 digitalWrite(led7, HIGH); //prikaz broja 2 } elseif (brojac==3) { //ukoliko je brojač = 3 iskljucisveled(); //isključi sve LED diode digitalWrite(led3, HIGH); //prikaz broja 3 digitalWrite(led4, HIGH); //prikaz broja 3 digitalWrite(led5, HIGH); //prikaz broja 3 } elseif (brojac==4) { //ukoliko je brojač = 4 iskljucisveled(); //isključi sve LED diode digitalWrite(led1, HIGH); //prikaz broja 4 digitalWrite(led3, HIGH); //prikaz broja 4 digitalWrite(led5, HIGH); //prikaz broja 4 digitalWrite(led7, HIGH); //prikaz broja 4 } elseif (brojac==5) { //ukoliko je brojač = 5 iskljucisveled(); //isključi sve LED diode digitalWrite(led1, HIGH); //prikaz broja 5 digitalWrite(led3, HIGH); //prikaz broja 5 digitalWrite(led4, HIGH); //prikaz broja 5 digitalWrite(led5, HIGH); //prikaz broja 5 digitalWrite(led7, HIGH); //prikaz broja 5 } elseif (brojac==6) { //ukoliko je brojač = 6 iskljucisveled(); //isključi sve LED diode digitalWrite(led1, HIGH); //prikaz broja 6 digitalWrite(led2, HIGH); //prikaz broja 6 digitalWrite(led3, HIGH); //prikaz broja 6 digitalWrite(led5, HIGH); //prikaz broja 6 digitalWrite(led6, HIGH); //prikaz broja 6 digitalWrite(led7, HIGH); //prikaz broja 6 } else { //ukoliko je brojač = 0 (početno stanje) iskljucisveled(); //isključi sve LED diode } }
Logika programa je vrlo jednostavna. Unutar loop dijela programa očitavamo stanje tipkala. Dok je tipkalo pritisnutno povećavamo stanje varijable brojac za 1. Ukoliko brojač prijeđe vrijednost 6 vraćamo ga na vrijednost 1. Nakon toga, unutar loop dijela, pomoću nekoliko if else if naredbi provjeravamo stanje varijable brojac te s obzirom na trenutnu vrijednost uključujemo određene svjetleće diode. Kako je vidljivo iz slika i sheme nakon zadatka, za prikaz broja 1 uključujemo svjetleću diodu broj 4, za prikaz broja 2 uključujemo svjetleće diode 1 i 7 itd.
78 Kako bismo skratili program izradili smo novu proceduru koju smo nazvali iskljucisveled. Naime, pri promjeni iz prikaza jednog broja u drugi potrebno je isključiti sve svjetleće diode koje su bile uključene na prethodnom broju kako bismo novim uključivanjem određenih dioda mogli ispravno prikazati novi broj. Kako se ova operacija ponavlja pri prikazu svakog novog broja, svaki put je možemo svesti na istu radnju – isključivanje svih svjetlećih dioda – napisali smo proceduru koja će tu radnju obavljati. Pisanje procedura je vrlo jednostavno. Procedure se najčešće pišu neposredno prije setup dijela programa, koji je zapravo i sam procedura. Struktura pisanja procedure prikazana je u sljedećem programskom odlomku: void nazivprocedure() { popis svih naredbi u proceduri }
Ovo je procedura koju smo sami napisali za ovaj primjer: void iskljucisveled() { digitalWrite(led1, LOW); digitalWrite(led2, LOW); digitalWrite(led3, LOW); digitalWrite(led4, LOW); digitalWrite(led5, LOW); digitalWrite(led6, LOW); digitalWrite(led7, LOW); }
//isključi LED diodu 1 //isključi LED diodu 2 //isključi LED diodu 3 //isključi LED diodu 4 //isključi LED diodu 5 //isključi LED diodu 6 //isključi LED diodu 7
Kada želimo da se procedura izvrši dovoljno ju je samo pozvati tako da u programu napišemo naredbu nazivprocedure();. Kako se ovaj program vrlo brzo izvodi brojevi koji se prikazuju na svjetlećim diodama dok je tipkalo pritisnuto ne prikazuju se dovoljno dugo kako bi ih mogli razlikovati golim okom, pa je na taj način postignuta nasumičnost. Kada korisnik otpusti tipkalo na svjetlećim diodama ostaje prikazana posljednja vrijednost varijable brojac.
Kako biste provjerili jeste li program dobro napisali i prikazuju li se svi brojevi na kockici na ispravan način možete na kraju loop dijela programa dodati naredbu delay(1000) koja će znatno usporiti izvođenje programa pa ćete moći vidjeti prikaze svih brojeva dok držite tipkalo pritisnuto.
Jesmo li ovaj program mogli napisati kraće? Možda samo s jednim pozivom na proceduru iskljucisveled? Razmislite o poboljšanjima programa.
79 Gdje je dizalo? U ovome projektu izradit ćemo uređaj za prikaz na kojem se katu nalazi dizalo, kakve često vidimo u novijim sustavima dizala. Naš će sustav raditi na način da se na dizalu nalazi magnet, a na svakom katu se nalazi jedna reed sklopka. Kada dizalo dođe na pojedini kat zatvara se reed sklopka na tom katu i mikrokontroler prepoznaje gdje se nalazi dizalo. Z24: Na mikrokontroler spojite sedam segmentni pokazivač i tri reed sklopke. Napišite program koji će očitavati na kojem se katu nalazi dizalo. Kada je zatvorena sklopka 1 dizalo se nalazi na prizemlju i na sedam segmentnom pokazivaču se ispisuje “P”, kada je sklopka 2 zatvorena dizalo se nalazi na prvom katu i na sedam segmentnom pokazivaču se ispisuje broj jedan, a kada je sklopka 3 zatvorena dizalo se nalazi na drugom katu i na sedam segmentnom pokazivaču se ispisuje broj dva.
Slijedi prikaz spajanja:
80 Programski kôd rješenja:
int segA = 2; int segB = 3; int segC = 4; int segD = 5; int segE = 6; int segF = 7; int segG = 8; int reed1 = 9; int reed2 = 10; int reed3 = 11;
//definiraj segA = 2 //definiraj segB = 3 //definiraj segC = 4 //definiraj segD = 5 //definiraj segE = 6 //definiraj segF = 7 //definiraj segG = 8 //definiraj reed1 = 9 //definiraj reed2 = 10 //definiraj reed3 = 11
void iskljucisvesegmente(){ digitalWrite(segA, LOW); digitalWrite(segB, LOW); digitalWrite(segC, LOW); digitalWrite(segD, LOW); digitalWrite(segE, LOW); digitalWrite(segF, LOW); digitalWrite(segG, LOW); }
//isključi a segment-početno stanje //isključi b segment-početno stanje //isključi c segment-početno stanje //isključi d segment-početno stanje //isključi e segment-početno stanje //isključi f segment-početno stanje //isključi g segment-početno stanje
void setup() { pinMode(segA, OUTPUT); pinMode(segB, OUTPUT); pinMode(segC, OUTPUT); pinMode(segD, OUTPUT); pinMode(segE, OUTPUT); pinMode(segF, OUTPUT); pinMode(segG, OUTPUT); pinMode(reed1, INPUT_PULLUP); pinMode(reed2, INPUT_PULLUP); pinMode(reed3, INPUT_PULLUP); digitalWrite(segA, LOW); digitalWrite(segB, LOW); digitalWrite(segC, LOW); digitalWrite(segD, LOW); digitalWrite(segE, LOW); digitalWrite(segF, LOW); digitalWrite(segG, LOW); }
//postavi izvod segA kao izlazni //postavi izvod segB kao izlazni //postavi izvod segC kao izlazni //postavi izvod segD kao izlazni //postavi izvod segE kao izlazni //postavi izvod segF kao izlazni //postavi izvod segG kao izlazni //postavi izvod reed1 kao ulazni //postavi izvod reed2 kao ulazni //postavi izvod reed3 kao ulazni //isključi a segment-početno stanje //isključi b segment-početno stanje //isključi c segment-početno stanje //isključi d segment-početno stanje //isključi e segment-početno stanje //isključi f segment-početno stanje //isključi g segment-početno stanje
81 void loop() { if (digitalRead(reed1)==LOW){ digitalWrite(segA,HIGH); digitalWrite(segB,HIGH); digitalWrite(segE,HIGH); digitalWrite(segF,HIGH); digitalWrite(segG,HIGH); } elseif (digitalRead(reed2)==LOW){ digitalWrite(segB,HIGH); digitalWrite(segC,HIGH); } elseif (digitalRead(reed3)==LOW){ digitalWrite(segA,HIGH); digitalWrite(segB,HIGH); digitalWrite(segE,HIGH); digitalWrite(segD,HIGH); digitalWrite(segG,HIGH); } }
//ukoliko je dizalo na prizemlju //prikaz slova P //prikaz slova P //prikaz slova P //prikaz slova P //prikaz slova P //ukoliko je dizalo na prvom katu //prikaz broja 1 //prikaz broja 1 //ukoliko je dizalo na drugom katu //prikaz broja 2 //prikaz broja 2 //prikaz broja 2 //prikaz broja 2 //prikaz broja 2
Programski kôd za rješenje ovoga zadatka vrlo je jednostavan. Potrebno je unutar loop dijela programa provjeravati koja je od reed sklopki zatvorena te s obzirom na dobiveni podatak prikazati jedan od znakova na sedam segmentnom ekranu.
Paolo Zenzerović rođen je 1988. godine u Puli. Osnovnu i srednju Tehničku školu završio je u rodnom gradu nakon čega je pohađao studij elektrotehnike na Tehničkom fakultetu Sveučilišta u Rijeci. Zadnju godinu studija proveo je na Politehničkom fakultetu u Torinu te na Tehničkom fakultetu u Beču razvijajući diplomski rad. Magistrirao je u području automatike sa radom temeljenim na primjeni mikrokontrolera u edukaciji. Osnivač je i predsjednik Hrvatskog društva za edukacijsku tehnologiju.
Paolo Zenzerović
O autoru
Više o autoru pogledajte na: www.paolozenzerovic.info.
ARDUINO
kroz jednostavne primjere
ARDUINO kroz jednostavne primjere