You are on page 1of 4

INTERNET STVARI

Rešenja laboratorijske vežbe 3


Serijska komunikacija

2020

Predmetni profesor: prof. dr Marko Tanasković


Predmetni asistent: Uroš Dragović
Vežba I – Serijski terminal
Za serijsku komunikaciju potrebno je samo 2 pina – Rx (Receive) i Tx (Transmit). Arduino
pinovi za serijsku komunikaciju su 0 (Rx) i 1 (Tx), koji su takođe povezani sa USB data
pinovima. Prilikom podešavanja serijske komunikacije potrebno je da brzina prenosa bude
usaglašena na obe strane, prijemnoj i predajnoj. Brzina se definiše kao argument funkcije
Serial.begin() koja inicijalizuje komunikaciju.

Za ispis na serijski monitor koristimo funkciju Serial.prinltn(), kojoj prosleđujemo željeni tekst
kao argument. Na slici je prikazano kako otvoriti serijski terminal:

Programski kod:
void setup(){
Serial.begin(9600);
}

void loop(){
Serial.println("Univerzitet Singidunum");
delay(2000);
}
Vežba II – Komunikacija dva Arduino-a
Potrebno je proveravati da li pristiže neki podatak na serijskom portu, to postižemo proverom if
(Serial.available()>0). Postoje različite funkcije za čitanje podataka, u zavisnosti šta nam je
potrebno, read(), readBytes(), readBytesUntil(), readString(), readStringUntil(). U ovom zadatku
koristi se funkcija readString(), s obzirom da očekujemo tekstualnu poruku.

Programski kod predajna strana:


void setup(){
Serial.begin(9600);
}

void loop(){
Serial.println("Dobar dan, kako ste?");
delay(2000);
}

Programski kod prijemna strana:


String incomingmsg;

void setup(){
Serial.begin(9600);
}

void loop(){
if (Serial.available() > 0){
incomingmsg = Serial.readString();
if(incomingmsg == "Dobar dan, kako ste?")
Serial.println("Dobro hvala");
}
}

Vežba III – Paljenje dioda tasterima preko


serijske komunikacije
Programski kod :
const int ledPin = 2;
const int dugme = 3;
int state = 1;
int incomingByte;
int stanje = HIGH;

void setup(){
Serial.begin(9600);
pinMode(ledPin,OUTPUT);
pinMode(dugme,INPUT);
digitalWrite(ledPin,LOW);
}

void loop(){
if (Serial.available() > 0){
incomingByte = Serial.read();
}
if (incomingByte == 'P'){
digitalWrite(ledPin,(state) ? HIGH : LOW);
state = !state;
}
stanje = digitalRead(dugme);
if ((stanje == LOW) && (staro_stanje == HIGH)){
Serial.println('P');
delay(500);
}
staro_stanje = stanje;
delay(200);
}

You might also like