Serijski port

UVOD:

U ovoj lekciji programirati ćemo Arduino Uno tako da je u mogućnosti slati i primati podatke preko serijskog porta. Arduino će primati podatke sa računala,a zatim upravljati LED diodom sukladno primljenom podacima. Nakon toga Arduino će računalu putem serijskog porta vratiti podatke o trenutnom stanju LED diode.

Pošto je ovo sažeta lekcija, topla preporuka je posjetiti stranicu na adresi: https://www.arduino.cc/en/Reference/Serial i pročitati te shvatiti što se tamo nalazi.

MATERIJAL:

1x Arduino Uno
1x USB kabel
1x LED
1x Otpornik 220 ohma
1x Prototipna pločica
Nekoliko žica za spajanje

Kôd programa:

Shema:

05_serial

Princip rada:

1.Serijski port

Koristi se za komunikaciju između Arduino pločice i računala ili ostalih uređaja. Sve Arduino pločice imaju najmanje jedan serijski port. Serijski port se često naziva i UART (Universal Asynchronous Receiver Transmitter) port ili USART (Universal Synchronous Asynchronous Receiver Transmitter) port. Za komunikaciju koristi se digitalni pin 0 (RX) i pin 1 (TX) i USB port za komunikaciju sa računalom. Za neupućene, USB (Universal Serial Bus) port također koristi serijsku komunikaciju. Prema tome,ako pinove 0 i 1 koristite za serijsku komunikaciju, ne možete ih istovremeno koristiti koristiti kao digitalni ulaz/izlaz.

Za komuniciranje sa Arduino pločicom možemo koristiti Arduino aplikaciju koja ima ugrađeni serijski monitor. Iz izbornika Tools/Alati odaberite Serial Monitor ili na alatnoj traci odaberite ikonu koja se nalazi skroz desno.
Otvoriti će se novi prozor u kojem je potrebno podesiti baud rate korišten za pozivanje funkcije begin().
2. Ključne funkcije

begin()
Postavlja brzinu prijenosa podataka za serijsku komunikaciju u bitovima po sekundi (baud). Za komunikaciju sa računalom, koriste se sljedeće brzine: 300, 1200, 2400, 4800, 9600, 14400, 19200, 28800, 38400, 57600 ili 115200. Ukoliko vam je potrebno možete podesiti i neki drugi bit rate ukoliko vam to projekt zahtijeva.

Sintaksa

Serial.begin(speed)

Parameteri
speed: u bitovima po sekundi (baud)

Returns
ništa

print()
Ispisuje podatke na serijski port kao ASCII tekst razumljiv ljudima. Ova naredba može imati mnogo oblika. Brojevi se također ispisuju kao ASCII znakovi za svaki broj. Operacije sa pomičnim zarezom su ispisane slično ASCII brojevima,ali su defaultno prikazane na dvije decimale.

Evo nekoliko primjera za prikaz:

Serial.print(78) prikazuje “78”
Serial.print(1.23456) prikazuje “1.23”
Serial.print(‘N’) prikazuje “N”
Serial.print(“Hello world.”) prikazuje “Hello world.”

Opcionalni drugi parametar određuje bazu (format) za korištenje; dozvoljene vrijednosti su BIN (binarno, ili baza 2), OCT (oktalno, ili baza 8), DEC (decimalno, ili
baza 10), HEX (heksadecimalno, ili baza 16). Za decimalne brojeve, ovaj parametar određuje broj decimalnih mjesta za korištenje.

Evo nekoliko primjera za prikaz:

Serial.print(78, BIN) prikazuje “1001110”
Serial.print(78, OCT) prikazuje “116”
Serial.print(78, DEC) prikazuje “78”
Serial.print(78, HEX) prikazuje “4E”
Serial.println(1.23456, 0) prikazuje “1”
Serial.println(1.23456, 2) prikazuje “1.23”
Serial.println(1.23456, 4) prikazuje “1.2345”

You can pass flash-memory based strings to Serial.print() by wrapping them
with F(). For example :
Serial.print(F(“Hello World”))
To send a single byte, use Serial.write().

Sintaksa

Serial.print(val)
Serial.print(val, format)

Parametri
val: vrijednost za ispis – bilo koji oblik podataka: određuje broj baze (za integralne vrste podataka) ili broj decimalnih mjesta

Returns
byte print() će vratiti broj zapisanih bajtova, iako je čitanje tog broja opcionalno.

println()

Ispisuje podatke na serijski port kao ASCII tekst razumljiv ljudima, popraćen nosećim povratnim znakom (ASCII 13 ili ‘\r’) ili znakom za novu liniju (ASCII 10, ili ‘\n’). Ova naredba slična je naredbi Serial.print().

Sintaksa
Serial.println(val)
Serial.println(val, format)

Parametri
val: vrijednost za ispis – bilo koji oblik podataka
format: određuje broj baze (za integralne vrste podataka) ili broj decimalnih mjesta

Returns
byte print() će vratiti broj zapisanih bajtova, iako je čitanje tog broja opcionalno.

read()
Čita dolazne serijske podatke.

Sintaksa
Serial.read()

Parameteri
ništa

Returns
prvi dostupni bajt dolaznih podataka preko serijske komunikacije (ili -1 ako nema podataka) – int

 
Sada uploadajte ovaj skeč na Arduino i u serial monitoru upišite broj 1 i pritisnite “Send/Pošalji”. LED-ica bi trebala svijetliti,a kada upišete 0 (ovo je nula, nije slovo O) tada bi se LED-ica trebala ugasiti.
Istovremeno na monitoru bi trebali dobiti poruku o statusu LED-ice.

 

serial_monitor

 

U ovoj lekciji pokazali smo kako računalo može poslati podatke na Arduino UNO putem serijskog porta te na taj način kontrolirati rad LED diode.