Komunikasi serial pada arduino

KOMUNIKASI SERIAL
A. TUJUAN :
Mahasiswa dapat menggunakan Universal Asyncronous Syncronous Receiver Transmitter (UASRT) .


B. TEORI SINGKAT
Universal Asyncronous Syncronous Receiver Transmitter (UASRT) port serial yang standar dan selalu ada pada semua produk mikrokontroler. Pada Arduino penggunaan Port Serial dipermudah dengan adanya pustaka fungsi. Format data UASRT adalah sebagai berikut:


dimana:
STR= bit Start (low)
D0-D7 = Data
STP = bit STOP
Pin Port Serial
Pin port Serial pada Arduino UNO adalah D0 untuk Rx dan D1 untuk Tx. Jika sedang dipakai untuk port Serial pin D0 dan D1 tidak dapat digunakan untuk I/O digital.


Pin Port Serial
Pin port Serial pada Arduino UNO adalah D0 untuk Rx dan D1 untuk Tx. Jika sedang dipakai untuk port Serial pin D0 dan D1 tidak dapat digunakan untuk I/O digital.
Fungsi-fungsi yang berhubungan dengan komunikasi serial.
  • begin()
digunakan untuk menginisialisasi kecepatan. Fungsi begin membutuhkan parameter bit rate. Fungsi begin() diletakkan pada fungsi Setup(). Bit rate yang dapat didukung adalah 300, 1200, 2400, 4800, 9600, 14400, 19200, 28800, 38400, 57600, or 115200 bps.
Contoh:
Serial.begin(9600);// menginisialisasi port serial dengan kecepatan 9600 bps
  • available()
digunakan untuk mengetahui jumlah karakter yang ada di buffer. Parameter tidak ada dan nilai baliknya jumlah karakter yang ada di buffer.
Contoh:
if (serial.available()>2)
  • read()
digunakan untuk membaca byte pada buffer yang dapat pertama kali. Data di buffer digeser sehingga data yang pertama akan keluar dari buffer dan data kedua menjadi berada di awal.
Contoh:
if(serial.availabel==2) {
Data1=serial.read();
Data2=serial.read(); }
  • write()
digunakan untuk mengirim ke port serial. Fungsi write() mempunyai 3 bentuk:
write(val)
write(str)
write(buf,leng)
dimana:
val= data tipe byte
str= string
buf= larik byte
leng= panjang larik
Contoh:
Serial.write(20);
Serial.write(“Selamat datang”);
Seial.write(bufer,12);
  • print()
digunakan untuk mengirimkan via port serial. Fungsi print() mempunyai beberapa bentuk sbb:
· Serial.print(78) akan tercetak "78"
· Serial.print(1.23456) akan tercetak"1.23"
· Serial.print('N') akan tercetak "N"
· Serial.print("Hello world.") akan tercetak "Hello world."
bentuk lain:
· Serial.print(78, BIN) akan tercetak "1001110"
· Serial.print(78, OCT) akan tercetak "116"
· Serial.print(78, DEC) akan tercetak "78"
· Serial.print(78, HEX) akan tercetak "4E"
· Serial.println(1.23456, 0) akan tercetak "1"
· Serial.println(1.23456, 2) akan tercetak "1.23"
· Serial.println(1.23456, 4) akan tercetak "1.2346"
Bahan dan Alat
  • Breadboard
  • Board Arduino UNO
  • LED 2 buah
  • resistor 220 Ohm
  • microswitch 2 buah

C. PEMBAHASAN PRAKTIK:
Pada praktikum kali ini kita akan belajar untuk menjalankan program sederhana pada arduino menggunakan masukan digital berupa microswitch serta mengamati hasilnya berupa Keluaran Analog menggunakan lampu LED pada board Arduino.
 Berikut adalah penjelasan scribtnya :
int LED1=11; // merupakan deklarasi variabel yang akan digunakan sebagai keluaran ,dimana
int LED2=10; pin-pin yang akan digunakan sebagai keluaran arduino adalah pin 11 dan 10
int S1=7; //merupakan deklarasi variabel yang akan digunakan sebagai Inputan ,dimana
int S2=6; pin-pin yang akan digunakan sebagai keluaran arduino adalah pin 7 dan 6
byte Data[4];
void setup(){
// Semua kode didalam kurung kurawal akan dijalankan hanya satu kali ketika program Arduino dijalankan untuk pertama kalinya.
pinMode(LED1,OUTPUT);
// inisialisasi variabel LED1 sbg output/keluaran.
pinMode(LED2,OUTPUT);
// inisialisasi variabel LED2 sbg output/keluaran.
pinMode(S1,INPUT_PULLUP);
// inisialisasi variabel S1 sebagai inputan/masukan dimana jika inputan yang diberikan 0 maka akan bernilai high dan sebaliknya jika inputan yang diberikan 1 maka akan bernilai low.
pinMode(S2,INPUT_PULLUP);
// inisialisasi variabel S2 sebagai inputan/masukan dimana jika inputan yang diberikan 0 maka akan bernilai high dan sebaliknya jika inputan yang diberikan 1 maka akan bernilai low.
Serial.begin(9600);} //menginisialisasi port serial dengan kecepatan 9600 bps
void loop(){
//Fungsi ini akan dijalankan setelah setup (fungsi void setup) selesai. Setelah dijalankan satu kali fungsi ini akan dijalankan lagi, dan lagi secara terus menerus sampai catu daya (power) dilepaskan.
int i; //deklarasi variabel i
if(Serial.available()==4) // untuk mengetahui jumlah karakter yang ada di buffer jika sudah diterima 4 byte.
{
for(i=0;i<4;i++){
//statement yang akan dikerjakan jika karakter sudah diterima 4 byte maka akan menjalankan perulangan dari 0 sd 3
Data[i]=Serial.read(); //membaca data dari buffer serial serta memasukkanya kedalam array Data
}
if(Data[0]==':') //jika indeks ke 0 array Data sama dengan ':'
{
if(Data[1]=='L') // jika indeks ke 1 array data sama dengan L=Lampu
{
switch(Data[2])
{
case '1': if(Data[3]=='N') //Penyeleksian untuk LED 1 jika indeks ke 3 array Data sama dengan “N”               
{
digitalWrite(LED1,HIGH);
Serial.println("Lampu Satu nyala");
//statement yang akan dikerjakan jika bernilai true dimana pin 11 akan mempunyai outputan high serta pada serial monitor akan menampilkan tulisan "Lampu Satu nyala"
}
else if(Data[3]=='F') //jika indeks ke 3 array Data sama dengan “F”
{
digitalWrite(LED1,LOW);
Serial.println("Lampu Satu padam");
//statement yang akan dikerjakan jika bernilai true dimana pin 11 akan mempunyai outputan LOW serta pada serial monitor akan menampilkan tulisan "Lampu Satu padam"
}
break;
case '2': if(Data[3]=='N')
//penyeleksian untuk LED 2 jika indeks ke 3 array Data sama dengan “N”
{
digitalWrite(LED2,HIGH);
Serial.println("Lampu Dua nyala");
//statement yang akan dikerjakan jika bernilai true dimana pin 10 akan mempunyai outputan high serta pada serial monitor akan menampilkan tulisan "Lampu Dua nyala"
}
else if(Data[3]=='F')
//jika indeks ke 3 array Data sama dengan “F”
{
digitalWrite(LED2,LOW);
Serial.println("Lampu Dua padam");
//statement yang akan dikerjakan jika bernilai true dimana pin 10 akan mempunyai outputan LOW serta pada serial monitor akan menampilkan tulisan "Lampu Dua padam"
}
break;
}} }}}


D. PEMBAHASAN LATIHAN :
Pada latihan kali ini kita akan menambahkan tombol S1 dan S2 sebagai inputan agar jika ditekan akan mengirimkan data ke komputer dan menampilkan informasi sesuai dengan tombol yang ditekan. Berikut adalah penjelasan dari scribtnya :

 int LED1=11; // merupakan deklarasi variabel yang akan digunakan sebagai keluaran ,dimana
int LED2=10; pin-pin yang akan digunakan sebagai keluaran arduino adalah pin 11 dan 10
 int S1=7; //merupakan deklarasi variabel yang akan digunakan sebagai Inputan ,dimana
int S2=6; pin-pin yang akan digunakan sebagai keluaran arduino adalah pin 7 dan 6
byte Data[4];
void setup()
{
// Semua kode didalam kurung kurawal akan dijalankan hanya satu kali ketika program Arduino dijalankan untuk pertama kalinya.
pinMode(LED1,OUTPUT);
// inisialisasi variabel LED1 sbg output/keluaran.
pinMode(LED2,OUTPUT);
// inisialisasi variabel LED2 sbg output/keluaran.
pinMode(S1,INPUT_PULLUP);
// inisialisasi variabel S1 sebagai inputan/masukan dimana jika inputan yang diberikan 0 maka akan bernilai high dan sebaliknya jika inputan yang diberikan 1 maka akan bernilai low.
pinMode(S2,INPUT_PULLUP);
// inisialisasi variabel S2 sebagai inputan/masukan dimana jika inputan yang diberikan 0 maka akan bernilai high dan sebaliknya jika inputan yang diberikan 1 maka akan bernilai low.
Serial.begin(9600); //menginisialisasi port serial dengan kecepatan 9600 bps
}
void loop(){
//Fungsi ini akan dijalankan setelah setup (fungsi void setup) selesai. Setelah dijalankan satu kali fungsi ini akan dijalankan lagi, dan lagi secara terus menerus sampai catu daya (power) dilepaskan.
if (digitalRead(S1)==0)
//Jika tombol S1 tidak ditekan
{
digitalWrite(LED1,HIGH);
Serial.println("Lampu Satu nyala");
//statement yang akan dikerjakan jika bernilai true dimana pin 11 akan mempunyai outputan high serta pada serial monitor akan menampilkan tulisan "Lampu Satu nyala"
}
if (digitalRead(S1)==1)
//Jika tombol S1 tidak ditekan
{
digitalWrite(LED1,LOW);
Serial.println("Lampu Satu MATI");
//statement yang akan dikerjakan jika bernilai true dimana pin 11 akan mempunyai outputan LOW serta pada serial monitor akan menampilkan tulisan "Lampu Satu padam"
}
else if (digitalRead(S2)==0)
//Jika tombol S2 tidak ditekan
{
digitalWrite(LED2,HIGH);
Serial.println("Lampu Dua nyala");
//statement yang akan dikerjakan jika bernilai true dimana pin 10 akan mempunyai outputan high serta pada serial monitor akan menampilkan tulisan "Lampu Dua nyala"
}
else if (digitalRead(S2)==1)
// jika tombol S2 ditekan
{
digitalWrite(LED2,LOW);
Serial.println("Lampu Dua MATI");
//statement yang akan dikerjakan jika bernilai true dimana pin 10 akan mempunyai outputan LOW serta pada serial monitor akan menampilkan tulisan "Lampu Dua padam"
}}


E. KESIMPULAN :
Dari praktikum tersebut dapat disimpulkan bahwa Komunikasi serial yang dimiliki oleh Arduino bisa kita manfaatkan untuk berkomunikasi dengan Personal Computer, Bluetooth Modul, atau bahkan dengan Arduino yang lain. Yang perlu menjadi catatan utama adalah, jika port dari Arduino Microcontroller sudah difungsikan sebagai sarana komunikasi serial, maka port tersebut tidak dapat difungsikan sebagai port input/output digital.

0 Response to "Komunikasi serial pada arduino"

Post a Comment

Iklan Atas Artikel

Iklan Tengah Artikel 1

Iklan Tengah Artikel 2

Iklan Bawah Artikel