50
Programabilni uređaji i objektno orjentisano programiranje Uvod

Programabilni uređaji i objektno orjentisano programiranje · Jezik se može proširiti preko C ++ biblioteka, a ljudi koji žele da razumiju tehničke detalje mogu napraviti skok

  • Upload
    others

  • View
    1

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Programabilni uređaji i objektno orjentisano programiranje · Jezik se može proširiti preko C ++ biblioteka, a ljudi koji žele da razumiju tehničke detalje mogu napraviti skok

Programabilni uređaji i objektno orjentisano programiranje

Uvod

Page 2: Programabilni uređaji i objektno orjentisano programiranje · Jezik se može proširiti preko C ++ biblioteka, a ljudi koji žele da razumiju tehničke detalje mogu napraviti skok

Programabilni uređaji i objektno orjentisano programiranje

• Predmetni nastavnik:

– Prof. dr Vesna Popović-Bugarin – kabinet 322

• Konsultacije četvrtkom od 13:00-15:00h

• Za kraće konsultacije koristiti e-mail: [email protected]

• Saradnici

– mr Miloš Brajović Računske vježbe + Lab.

– mr Nikola Bulatović Računske vježbe + Lab

Page 3: Programabilni uređaji i objektno orjentisano programiranje · Jezik se može proširiti preko C ++ biblioteka, a ljudi koji žele da razumiju tehničke detalje mogu napraviti skok

CILJEVI PREDMETA • Upoznavanje i ovladavanje programabilnim uređajima;

• objektno-orjentisanim programiranjem;

• vizuelnim programskim alatima.

Kroz polaganje ovog ispita student će da: • Ovlada programabilnim platformama tipa Arduino (Raspberry),

komunikacijom sa njima, programiranjem, upravljanjem. • Ovlada objektno orjentisanim programiranjem, pojmom klase,

klasinim interfejsom, metodima klase, prijateljskim funkcijama i klasama, zajedničkim podacima i funkcijama za klasu, nasljeđivanjem i obradom izuzetaka.

ISHODI UČENJA

Page 4: Programabilni uređaji i objektno orjentisano programiranje · Jezik se može proširiti preko C ++ biblioteka, a ljudi koji žele da razumiju tehničke detalje mogu napraviti skok

STRUKTURA KURSA (I dio)

I nedjelja Uvod. Osnovne karakteristike i mogućnosti programabilnih platformi. Hardverski interfejsi.

II nedjelja Struktura programa na platformama, jednostavne aplikacije. Rad sa portovima, komunikacija sa periferijerima i drugim uređajima.

III nedjelja

Dizajniranje jednostavnih kolaborativnih rješenja u sistemima sa programabilnim platformama. Povezivanje sistema sa bazama podataka, udaljenim čvorovima, koncept upravljanja.

IV nedjelja Uvod u objektno orjentisano programiranje (OOP) Koncepti OOP. Razlike C i C++.

V nedjelja Odbrana i prezentacija mini projekata. (21. mart 2019.)

Page 5: Programabilni uređaji i objektno orjentisano programiranje · Jezik se može proširiti preko C ++ biblioteka, a ljudi koji žele da razumiju tehničke detalje mogu napraviti skok

STRUKTURA KURSA (II dio)

VI nedjelja Klasa i klasin interfejs. Konstruktor, inspektori i mutatori.

VII nedjelja Metodi članovi klase, statički djelovi interfejsa klase. Konstruktor kopije

VIII nedjelja Prijateljske funkcije i klase. Pokazivači na članove klase.

IX nedjelja Preklapanje operatora (osnovni binarni i unarni operatori).

X nedjelja Preklapanje operatora (napredne opcije);

XI nedjelja II kolokvijum (09. maj 2019.)

XII nedjelja Nasljeđivanje.

XIII nedjelja Šabloni

Page 6: Programabilni uređaji i objektno orjentisano programiranje · Jezik se može proširiti preko C ++ biblioteka, a ljudi koji žele da razumiju tehničke detalje mogu napraviti skok

STRUKTURA KURSA (III dio)

XV nedjelja Obrada izuzetaka Popravni kolokvijum (30. maj 2019.)

Završni ispit (po posebnom rasporedu)

Page 7: Programabilni uređaji i objektno orjentisano programiranje · Jezik se može proširiti preko C ++ biblioteka, a ljudi koji žele da razumiju tehničke detalje mogu napraviti skok

Opterećenje studenata

• Nedjeljno opterećenje studenata: 6 kredita x 40/30 = 8 sati

• Struktura: – 2 časa predavanja – 1 čas računskih vježbi – 2 časa laboratorijskih vježbi – 3 sata samostalnog rada

• Osnovna literatura: – D. Milićev: "Objektno orjentisano programiranje na

programskom jeziku C++", Mikro knjiga 1998. – dodatni materijali u vidu prezentacija, koji će biti dostupni

studentima preko sajta ETF-a.

Page 8: Programabilni uređaji i objektno orjentisano programiranje · Jezik se može proširiti preko C ++ biblioteka, a ljudi koji žele da razumiju tehničke detalje mogu napraviti skok

Provjera znanja

• Načini provjeravanja znanja:

– Miniprojekat: 25 poena

– Laboratorijske vježbe: 10 poena

– Kolokvijum: 20 poena

– Završni ispit: 45 poena – radi se u računarskoj sali

• Ispit je položen sa 50 i više poena u ukupnom zbiru.

Page 9: Programabilni uređaji i objektno orjentisano programiranje · Jezik se može proširiti preko C ++ biblioteka, a ljudi koji žele da razumiju tehničke detalje mogu napraviti skok

Programabilne platforme - potreba • Ne tako davno, rad na hardveru je značio sastavljanje

električnih kola od nule, korišćenjem stotine različitih komponenti poput otpornika, kondenzatora, kalemova, tranzistora ...

• Svako električno kolo je bilo povezano „žicama“ kako bi se osposobilo za određenu vrlo specifičnu namjenu.

• Promjene su zahtevale sječu „žica“ (provodnika), spojeva za lemljenje i još mnogo toga.

• Sa pojavom digitalnih tehnologija i mikroprocesora, ove funkcionalnosti, koje su nekada bile implementirane žicama, zamijenjene su programima.

• Softver je lakše modifikovati od hardvera. Sa nekoliko pritisaka na tipke, možete radikalno promeniti logiku uređaja i isprobati dve ili tri verzije u isto toliko vremena koliko bi vam trebalo da spajate par otpornika.

Page 10: Programabilni uređaji i objektno orjentisano programiranje · Jezik se može proširiti preko C ++ biblioteka, a ljudi koji žele da razumiju tehničke detalje mogu napraviti skok

Breadboard – štampana ploča

Page 11: Programabilni uređaji i objektno orjentisano programiranje · Jezik se može proširiti preko C ++ biblioteka, a ljudi koji žele da razumiju tehničke detalje mogu napraviti skok

Breadboard

Page 12: Programabilni uređaji i objektno orjentisano programiranje · Jezik se može proširiti preko C ++ biblioteka, a ljudi koji žele da razumiju tehničke detalje mogu napraviti skok

Breadboards 1960-tih

Page 13: Programabilni uređaji i objektno orjentisano programiranje · Jezik se može proširiti preko C ++ biblioteka, a ljudi koji žele da razumiju tehničke detalje mogu napraviti skok

Improvizovani breadboard

Page 14: Programabilni uređaji i objektno orjentisano programiranje · Jezik se može proširiti preko C ++ biblioteka, a ljudi koji žele da razumiju tehničke detalje mogu napraviti skok

Alat za pravljenje prototipova

Page 15: Programabilni uređaji i objektno orjentisano programiranje · Jezik se može proširiti preko C ++ biblioteka, a ljudi koji žele da razumiju tehničke detalje mogu napraviti skok

Integrisana Kola

Page 16: Programabilni uređaji i objektno orjentisano programiranje · Jezik se može proširiti preko C ++ biblioteka, a ljudi koji žele da razumiju tehničke detalje mogu napraviti skok

Šta znači akronim "DIY"? • Do It Yourself - umjesto da angažujete profesionalca da uradi

određeni zadatak ili da kupite gotov proizvod –uređaj odaberite da sami riješite problem ili da kreirate željeni proizvod bez direktne pomoći eksperta.

• Najpopularnije platforme za DIY su Arduino and Raspberry Pi.

Arduino Raspberry Pi

Page 17: Programabilni uređaji i objektno orjentisano programiranje · Jezik se može proširiti preko C ++ biblioteka, a ljudi koji žele da razumiju tehničke detalje mogu napraviti skok

Raspberry Pi • Raspberri Pi je samostalni mikro-računar. Ima ugrađenu RAM,

CPU, USB i Ethernet portove, standardne opcije izlaza, prikaza i još mnogo toga.

• Pokreće operativni sistem, najčešće LINUX i može se koristiti za kreiranje softverskih aplikacija sa terminalnog nivoa, do programskih jezika visokog nivoa kao što su Pithon i Scratch.

• Ogroman je broja aplikacija koje se mogu napraviti Raspberri Pi platformom bez povezivanja bilo čega osim napajanja, tastature / miša i ekrana.

• Savršen je za učenje programiranja na različitim jezicima, kao i za interakciju sa tradicionalnim kompjuterima.

• Ima mnogo više snage od bilo kog Arduina, ali sve što se na njemu radi je na softverskom nivou.

• Mnogo je komplikovaniji softver za povezivanje i upravljanje senzorima i spoljašnjim kolima.

Page 18: Programabilni uređaji i objektno orjentisano programiranje · Jezik se može proširiti preko C ++ biblioteka, a ljudi koji žele da razumiju tehničke detalje mogu napraviti skok

ARDUINO • Platforma dizajnirana za početnike!

• ARDUINO je najomiljenija platforma mikrokontrolera na svetu sa razlogom.

• Kombinuje mikrokontrolere i direktnu interakciju sa hardverom sa intuitivnim Open Source okruženjem uz pomoć kojeg se može dizajnirati gotovo sve.

• Kontrolisanjem mikrokontrolera se dobija željena funkcionalnost – ni manje ni više.

• Ne postoji softver koji treba da prođe i možete biti sigurni da će uraditi ono što ste mu rekli, bez brige o drugom sloju apstrakcije softvera.

• Platforma izbora za povezivanje senzore i drugog hardvera kako bi se stupilo u direktnu interakciju sa spoljnim svetom.

Page 19: Programabilni uređaji i objektno orjentisano programiranje · Jezik se može proširiti preko C ++ biblioteka, a ljudi koji žele da razumiju tehničke detalje mogu napraviti skok

ARDUINO VS RASPBERRY PI ARDUINO RASPBERRY PI

Arduino je mikrokontoler – čip koji se može koristiti uz malo pomoćnih sklopova.

Ima više različitih čipova na ploči, uključujući mikroprocesor, kako bi se kreirao funkcionalni kompjuter.

Sensori i ostali hardver se mogu kontrolisati direktno kroz I/O pinove.

Da bi se kontrolisali I/O pinovi za senzore, motore i slično, mora se na njemu pisati kod koji bi kontrolisao softver nižeg nivoa.

Ne pokreće operativni sistem već prolazi kroz kod koji mu se prosleđuje.

Ponaša se kao samostalni računar i može se kodirati u njemu.

Dizajniran je za hardver nižeg nivoa i direktno programiranje

Dizajniran je za interakciju softvera i hardvera višeg nivoa.

Page 20: Programabilni uređaji i objektno orjentisano programiranje · Jezik se može proširiti preko C ++ biblioteka, a ljudi koji žele da razumiju tehničke detalje mogu napraviti skok

Šta je mikrokontroler?

• Mali računar na jednom čipu • Sadrži procesor, memoriju i I/O

• Tipično je "ugrađen" unutar nekog uređaja koji kontroliše. • Male je veličine i niske cijene.

www.mikroe.com/chapters/view/1

Page 21: Programabilni uređaji i objektno orjentisano programiranje · Jezik se može proširiti preko C ++ biblioteka, a ljudi koji žele da razumiju tehničke detalje mogu napraviti skok

Šta je breadboard

• Štampana pločica dizajnirana da olakša rad sa određenim mikrokontrolerom.

Arduino UNO

Page 22: Programabilni uređaji i objektno orjentisano programiranje · Jezik se može proširiti preko C ++ biblioteka, a ljudi koji žele da razumiju tehničke detalje mogu napraviti skok

Arduino Uno

Pin D13 LED

Power pins

Page 23: Programabilni uređaji i objektno orjentisano programiranje · Jezik se može proširiti preko C ++ biblioteka, a ljudi koji žele da razumiju tehničke detalje mogu napraviti skok

Mikrokontroler Mozak Arduina

Page 24: Programabilni uređaji i objektno orjentisano programiranje · Jezik se može proširiti preko C ++ biblioteka, a ljudi koji žele da razumiju tehničke detalje mogu napraviti skok

Prednosti • Niska cijena

• Cross-platform - Arduino Softver (IDE) se može pokrenuti na Windows, Macintosh OSX i Linux operativnim sistemima.

• Jednostavno, jasno okruženje za programiranje - Arduino Softvare (IDE) je jednostavan za upotrebu za početnike, ali dovoljno fleksibilan za napredne korisnike.

• Open source i jednostavan za nadogradnju softvera i hardvera. Jezik se može proširiti preko C ++ biblioteka, a ljudi koji žele da razumiju tehničke detalje mogu napraviti skok od Arduina do AVR C programskog jezika na kojem se zasniva. Slično tome, može se po želji dodati AVR-C kod direktno u Arduino program.

Page 25: Programabilni uređaji i objektno orjentisano programiranje · Jezik se može proširiti preko C ++ biblioteka, a ljudi koji žele da razumiju tehničke detalje mogu napraviti skok

Šta ćemo koristiti?

Arduino razvojno okruženje

Arduino Uno

Senzori

Page 26: Programabilni uređaji i objektno orjentisano programiranje · Jezik se može proširiti preko C ++ biblioteka, a ljudi koji žele da razumiju tehničke detalje mogu napraviti skok

Povezuje se sa računarom preko USB porta

Kontrolna

dioda kratko

zasvijetli

Dioda napajanja ostaje

aktivna

Page 27: Programabilni uređaji i objektno orjentisano programiranje · Jezik se može proširiti preko C ++ biblioteka, a ljudi koji žele da razumiju tehničke detalje mogu napraviti skok

ARDUINO RAZVOJNO OKRUŽENJE • Poseban program koji omogucava pisanje koda – skica (engl.

sketches) za Arduino ploču na jednostavnom jeziku

modeliranom po uzoru na Processing jezik

(vvv.processing.org).

• Pritiskom na samo jedno dugme skica se šalje na ploču.

• Kod se prevodi na C programski jezik i prosleđuje open source

kompajleru avr-gcc.

Page 28: Programabilni uređaji i objektno orjentisano programiranje · Jezik se može proširiti preko C ++ biblioteka, a ljudi koji žele da razumiju tehničke detalje mogu napraviti skok

Počnimo sa radom • http://arduino.cc/en/Guide/HomePage

• www.arduino.cc/en/Guide/Windows

1. Preuzeti i instalirati Arduino razvojno okruženje (IDE);

https://www.arduino.cc/en/Main/Software

2. Povezati ploču sa računarom preko USB kabla;

3. Ukoliko je potrebno, instalirati drajvere; , ArduinoUNO.inf iz Drivers foldera Arduino Software download-a, za slučaj preuzimanja zip fajla;

4. Pokrenuti Arduino IDE;

5. Odabrati odgovarajuću ploču;

6. Odabrati odgovarajući serijski port;

7. Otvoriti primjer sa diodom koja blinka

file/sketchbook/examples/digital/blink

8. Upload-ovati program

Page 29: Programabilni uređaji i objektno orjentisano programiranje · Jezik se može proširiti preko C ++ biblioteka, a ljudi koji žele da razumiju tehničke detalje mogu napraviti skok

Odabrati tip ploče (board) Tools - Board - Arduino/Genuino Uno

Page 30: Programabilni uređaji i objektno orjentisano programiranje · Jezik se može proširiti preko C ++ biblioteka, a ljudi koji žele da razumiju tehničke detalje mogu napraviti skok

Odabrati komunikacioni port Tools - Port - COMx (x je broj porta)

Page 31: Programabilni uređaji i objektno orjentisano programiranje · Jezik se može proširiti preko C ++ biblioteka, a ljudi koji žele da razumiju tehničke detalje mogu napraviti skok

Pronaci koji port

je pridružen

vašem Arduinu

Page 32: Programabilni uređaji i objektno orjentisano programiranje · Jezik se može proširiti preko C ++ biblioteka, a ljudi koji žele da razumiju tehničke detalje mogu napraviti skok

Arduino razvojno okruženje

See: http://arduino.cc/en/Guide/Environment for more information

Page 33: Programabilni uređaji i objektno orjentisano programiranje · Jezik se može proširiti preko C ++ biblioteka, a ljudi koji žele da razumiju tehničke detalje mogu napraviti skok

Statusne poruke

todbot.com/blog/bionicarduino

Uspješan prenos podataka

Selektovan je pogrešan serijski port

Selektovana je pogrešna ploča

Veličina zavisi od kompleksnosti programa

Page 34: Programabilni uređaji i objektno orjentisano programiranje · Jezik se može proširiti preko C ++ biblioteka, a ljudi koji žele da razumiju tehničke detalje mogu napraviti skok

Hardver – Digitalni U/I pinovi (D0-D13)

Izlazni digitalni pinovi Ulazni digitalni pin

• Mogu biti ulazni ili izlazni pinovi.

• Mora se definisati softverski u IDE. U suprotnom dolazi

do zabune.

• Očekuju samo 0/1.

Page 35: Programabilni uređaji i objektno orjentisano programiranje · Jezik se može proširiti preko C ++ biblioteka, a ljudi koji žele da razumiju tehničke detalje mogu napraviti skok

DIGITALNI PINOVI – DVA STANJA

DIGITALNA 1

HIGH LEVEL

5 V

DIGITALNA 0

LOW LEVEL

0 V

Page 36: Programabilni uređaji i objektno orjentisano programiranje · Jezik se može proširiti preko C ++ biblioteka, a ljudi koji žele da razumiju tehničke detalje mogu napraviti skok

Hardver – Analogni U pinovi (A0-A5)

• Namjenski analogni ulazni pinovi. • Uzimaju analogne vrijednosti (tj. napon očitavanja sa

senzora) i pretvaraju ih u broj između 0 i 1023.

Ulazni analogni pin

Page 37: Programabilni uređaji i objektno orjentisano programiranje · Jezik se može proširiti preko C ++ biblioteka, a ljudi koji žele da razumiju tehničke detalje mogu napraviti skok

Programirani analogni I pinovi • Pinovi D(3,5,6,9,10,11) – (obratiti pažnju na crticu uz njihov

broj) se mogu reprogramirati u IDE tako da daju analogni izlaz.

Napajanje • Ploča se može napajati preko USB porta nakon povezivanja sa

računarom ili AD adapterom od 9 V (2.1mm). • Ako nema napajanja, napaja se preko USB kabla. Čim se

priključi napajanje, automatski se napaja sa njega.

Page 38: Programabilni uređaji i objektno orjentisano programiranje · Jezik se može proširiti preko C ++ biblioteka, a ljudi koji žele da razumiju tehničke detalje mogu napraviti skok

Interaktivni uređaji

• Sve aplikacije koje će se kreirati korišćenjem Arduino pločice će vršiti komunikaciju sa okruženjem po principu “interaktivnih uređaja”.

• Interaktivni uređaj je elektronski sklop koji je sposoban da: • Osjeti okruženje pomoću senzora (elektronskih

komponenti koje konvertuju mjerenja iz okruženja u električne signale);

• Obrađuje informacije koje dobija od senzora, a koje su implementirane kao softver i donosi odluku o akciji koju treba sprovesti, koju takođe definiše kroz softver.

• Utiče na okruženje pomoću aktuatora (elektronskih komponenti koje pretvaraju električni signal u fizičko djelovanje).

Page 39: Programabilni uređaji i objektno orjentisano programiranje · Jezik se može proširiti preko C ++ biblioteka, a ljudi koji žele da razumiju tehničke detalje mogu napraviti skok

Light-Emitting Eiode (LED)

• Elektronska komponenta koja emituje svjetlost. • Jedna LED dioda se nalazi na samoj Arduino ploču. Obilježena

je velikim slovom „L“. • Može se povezati i proizvoljna LED dioda. Kraća nožica je

katoda, duža anoda.

Ugrađena LED dioda

Page 40: Programabilni uređaji i objektno orjentisano programiranje · Jezik se može proširiti preko C ++ biblioteka, a ljudi koji žele da razumiju tehničke detalje mogu napraviti skok

Glavne Funkcije void setup() { // pokreće se samo jedan put na početku programa } void loop() { // kod koji se neprekidno izvršava } Arduino ne može da pokrene više programa istovremeno i programi se ne mogu sami prekinuti. Kada se uključi pločica i prenese program na nju, program se pokreće, kada se želi prekinuti izvršavanje programa, isključi se pločica. Kada se kod jednom prenese na Arduino pločicu, ostaje na njoj i nakon njenog isključivanja ili resetovanja (kao na hard disku).

Page 41: Programabilni uređaji i objektno orjentisano programiranje · Jezik se može proširiti preko C ++ biblioteka, a ljudi koji žele da razumiju tehničke detalje mogu napraviti skok

Primjer 1 – LED dioda koja blinka

Page 42: Programabilni uređaji i objektno orjentisano programiranje · Jezik se može proširiti preko C ++ biblioteka, a ljudi koji žele da razumiju tehničke detalje mogu napraviti skok

Primjer 1 – LED dioda koja blinka

//Komentar – skica je zapravo niz instrukcija mikrokontroleru //const int LED_PIN 13 #define LED_PIN 13 void setup() { pinMode(LED_PIN, OUTPUT); } void loop() { digitalWrite(LED_PIN, HIGH); delay(1000); digitalWrite(LED_PIN, LOW); delay(1000); }

Definisanje konstanti

Konfigurisanje digitalnog pina kao izlaznog (output)

5V na LED pin

0V na LED pin

Kašnjenje od 1000ms

Kašnjenje od 1000ms

Predefinisane konstante – OUTPUT/INPUT, HIGH/LOW.

Definisanje makroa

Page 43: Programabilni uređaji i objektno orjentisano programiranje · Jezik se može proširiti preko C ++ biblioteka, a ljudi koji žele da razumiju tehničke detalje mogu napraviti skok

Kod - Definisanje digitalnih pinova makroima

#define NAME NUMBER

#define LED_PIN 7

#define TEMP_PIN 8

#define MOTOR_PIN 9

• pinMode(NAME,MODE)

• Funkcija kojom se vrši konfiguracija pina NAME kao izlaznog pina (pinMode(NAME,OUTPUT)) ili kao ulaznog pina, (pinMode(NAME,INPUT))

Kod – Konfigurisanje digitalnih pinova

Page 44: Programabilni uređaji i objektno orjentisano programiranje · Jezik se može proširiti preko C ++ biblioteka, a ljudi koji žele da razumiju tehničke detalje mogu napraviti skok

Serijska Komunikacija

Serijska komunikacija uspostavljena preko USB porta se može koristiti u programima za slanje podataka računaru i za preuzimanje komandi sa računara.

Page 45: Programabilni uređaji i objektno orjentisano programiranje · Jezik se može proširiti preko C ++ biblioteka, a ljudi koji žele da razumiju tehničke detalje mogu napraviti skok

Serijska komunikacija • Vrši se korišćenjem objekta Serial preko kojeg pristupamo

svim potrebnim funkcijama

Serial.ImeFunkcije(argumenti)

• Serial.begin(brzina) – priprema Arduino za početak primanja i slanja serijskih podataka definišući brzinu njihovog prenosa. Najčešće se koristi brzina komunikacije od 9600 bps sa Arduino IDE serijskim monitorom.

• Serijski monitor je poseban prozor koji se aktivira klikom na krajnju desnu ikonicu Arduino IDE okruženja.

• Arduino pločica mora biti konektovana sa računarom preko USB kabla da bi se mogao aktivirati Serijski monitor.

Page 46: Programabilni uređaji i objektno orjentisano programiranje · Jezik se može proširiti preko C ++ biblioteka, a ljudi koji žele da razumiju tehničke detalje mogu napraviti skok

Serijski monitor • Gornje polje za editovanje služi

za unošenje podataka. Unos se prihvata pritiskom na dugme Send ili Enter sa tastature.

• Veći kvadrat je labela u kojoj se ispisuju podaci koje Arduino šalje.

• Ne dnu su dvije padajuće liste: – Lijevom se definiše „kraj linije“ koji

ce biti poslat na Arduino nakon što se klikne na dugme Send;

– Desnom se postavlja brzina prenosa podataka pri komunikaciji sa Arduino pločom. Mora odgovarati brzini podešenoj u programu za podešavanje parametara sa Serial.begin(brzina).

https://www.instructables.com/id/HOW-TO-use-the-ARDUINO-

SERIAL-MONITOR/

Page 47: Programabilni uređaji i objektno orjentisano programiranje · Jezik se može proširiti preko C ++ biblioteka, a ljudi koji žele da razumiju tehničke detalje mogu napraviti skok

Serijska komunikacija • Serial.print(data,Format) – Šalje podatke serijskom

portu. Format je opcion. Ako se ne specificira, podaci se štampaju kao obični tekst.

• Cijeli brojevi se štampaju koristeći ASCII karakter za svaku cifru.

• Realni brojevi se štampaju na sličan način, kao ASCII cifre, podrazumijevajući dvije decimale. Ukoliko se broj decimala želi promijeniti, isti se specificira Format argumentom.

Serial.print(2.3785,3) štampa “2.378“

• Format može uzeti i vrijednosti (BIN,DEC,OCT,HEX) čime se zadati broj štampa uz pretvaranje u odgovarajući brojni sistem.

• Serial.println(data,Format) – funkcioniše na isti način uz prelazak u novi red nakon štampanja data podataka.

Page 48: Programabilni uređaji i objektno orjentisano programiranje · Jezik se može proširiti preko C ++ biblioteka, a ljudi koji žele da razumiju tehničke detalje mogu napraviti skok

Serijski Monitor

void setup() { Serial.begin(9600); } void loop() { Serial.println(“Hello, World!”); delay(1000); }

Page 49: Programabilni uređaji i objektno orjentisano programiranje · Jezik se može proširiti preko C ++ biblioteka, a ljudi koji žele da razumiju tehničke detalje mogu napraviti skok

Serijska komunikacija • Serial.read() – Preuzima jedan bajt serijskih podataka.

• Serial.available() – Vraća broj nepročitanih bajtova (karaktera) dostupnih u serijskom portu za čitanje preko read() funkcije. Ovo su podaci koji su vec stigli i uskladišteni su u baferu serijskog prijema (koji sadrži 64 bajta).

• Ukoliko je pročitano sve što je dostupno, Serial.available () vraća 0 dok novi podaci ne stignu na serijski port.

• Podaci mogu pristizati preko serijskog porta brže nego što ih program može obraditi. Arduino čuva sve ulazne podatke u baferu serijskog prijema.

• Serial.flush() – Čeka da se završi prenos odlaznih serijskih podataka. (Prije Arduino 1.0, Serial.flush() je uklanjala sve buferovane dolazne serijske podatke).

Page 50: Programabilni uređaji i objektno orjentisano programiranje · Jezik se može proširiti preko C ++ biblioteka, a ljudi koji žele da razumiju tehničke detalje mogu napraviti skok

Povežimo se sa monitorom

void loop(){ if (Serial.available() > 0){ int command = Serial.read(); if (command == '1'){ digitalWrite(LED_PIN, HIGH); Serial.println("LED on"); } else if (command == '2'){ digitalWrite(LED_PIN, LOW); Serial.println("LED off"); } else{ Serial.print("Nepoznata komanda:"); Serial.println(command); } } }

PRIMJER 2 - LED

Čitanje komandi