Anda di halaman 1dari 20

LAPORAN PRAKTIK MIKROPROSESSOR & INTERFACE

PERCOBAAN 7: SERIAL ASINKRON (UART)

OLEH :
Rina Dwi Yunita Sari
TK-2A/18

PROGRAM STUDI TEKNIK TELEKOMUNIKASI


JURUSAN TEKNIK ELEKTRO
POLITEKNIK NEGERI SEMARANG
2015

PRAKTIK VII
SERIAL ASINKRON (UART)
I. KOMPONEN YANG DIGUNAKAN
1. Modul Arduino
2. Kabel Jumper
3. Protoboard
4. Potensiometer
5. Resistor 330 Ohm
6. LED
7. Arduino IDE
II. RANGKAIAN

Gambar 7.1. Rangkaian untuk Percobaan 7.1 dan 7.2

Gambar 7.2. Rangkaian untuk Percobaan 7.3 Langkah Kerja No.4

Gambar 7.3. Rangkaian untuk Percobaan 7.4

Gambar 7.4. Rangkaian untuk Percobaan 7.5

Gambar 7.5. Rangkaian untuk Percobaan 7.6

III.

PROGRAM

1. Percobaan 7.1
1.1 Dasar Program IO Serial Asinkron
void setup(){
//put your setup code here, to run once:
Serial.begin(9600); //send and receive at 9600 haud
}
int number=0;
void loop(){
// put your main code here, to run repeatedly
Serial.print("The number is");
Serial.println(number); //print the number
delay(500); //delay half second between numbers
number++; //to the next number
}
1.2 Tugas Dasar Program IO Serial Asinkron
void setup(){
//put your setup code here, to run once:
Serial.begin(9600); //send and receive at 9600 haud
}
int r;
void loop(){
// put your main code here, to run repeatedly
for(r=0; r<=100; r++)
{Serial.print("The number is");
Serial.println(r); //print the number
delay(500);} //delay half second between numbers }
2. Percobaan 7.2 Mengirim Data Serial dengan Berbagai Format
1.1 Latihan
/*
* SerialFormatting
*Print values in various formats to the serial port
*/
char chrValue=65; //this are the starting values to print
byte byteValue=65;
int intValue=65;
float floatValue=65.0;
void setup(){
Serial.begin(9600);
}
void loop(){

Serial.println("chrValue: ");
Serial.println(chrValue);
Serial.write(chrValue);
Serial.println();
Serial.println(chrValue,DEC);
Serial.println("byteValue: ");
Serial.println(byteValue);
Serial.write(byteValue);
Serial.println();
Serial.println(byteValue,DEC);
Serial.println("intValue: ");
Serial.println(intValue);
Serial.println(intValue,DEC);
Serial.println(intValue,HEX);
Serial.println(intValue,OCT);
Serial.println(intValue,BIN);
Serial.println("floatValue: ");
Serial.println(floatValue);
delay(1000); //delay a second between numbers
chrValue++; //to the next value
byteValue++;
intValue++;
floatValue+=1;
}
1.2 Tugas Program Mengirim Data Serial dengan Berbagai Format
/*
* SerialFormatting
*Print values in various formats to the serial port
*/
char chrValue=65; //this are the starting values to print
void setup(){
Serial.begin(9600);
}
void loop(){
if(chrValue>=65 && chrValue<=90){
Serial.println("karakter: ");
Serial.println(chrValue);
Serial.println("desimal: ");
Serial.println(chrValue,DEC);
Serial.println("heksadesimal: ");
Serial.println(chrValue,HEX);
Serial.println("biner: ");
Serial.println(chrValue,BIN);
delay(1000); //delay a second between numbers
chrValue++;

}}
3. Percobaan 7.3 Menerima Data Serial
3.1 Latihan
void setup()
{ Serial.begin(9600); // initialize serial port to send and receive at 9600 baud
}
void loop()
{
if (Serial.available()) //check to see if at least one character is avilable
{
char ch=Serial.read();
Serial.write(ch);
}
}
3.2 Program Langkah 4
/*
*Blink the LED at a rate proportional to the received digit value
*/
const int ledPin = 13; //pin the LED is conected to
int blinkRate=0; // blink rate stored in this variable
void setup()
{
Serial.begin(9600); // initialize serial port to send and receive at 9600 baud
pinMode(ledPin, OUTPUT); //setthis pin as output
}
void loop()
{
if (Serial.available()) //check to see if at least one character is available
{ char ch=Serial.read();
if(isDigit(ch)) //is this an ascii digit between 0 and 9?
{ blinkRate=(ch-'0'); //ascii value converted to numeric value
blinkRate=blinkRate*100; // actual rate is 100ms times received digit
}}
blink(); }
// blink the led with the ono anf=d off times determineed by blink rate
void blink()
{ digitalWrite(ledPin, HIGH);
delay(blinkRate); // delay depends on blink rarte value
digitalWrite(ledPin, LOW);
delay(blinkRate);
}
III.3 Tugas Menerima Data Serial
void setup()
{ Serial.begin(9600); // initialize serial port to send and receive at 9600 baud

}
void loop()
{
if (Serial.available()) //check to see if at least one character is avilable
{char ch=Serial.read();
if(ch>=65 && ch<=90)
{char chh;
chh=32+ch;
Serial.write(chh); delay(500);}
else if(ch>=97 && ch<=122)
{char chh;
chh=ch-32;
Serial.write(chh); delay(500);}
else
{
Serial.write(ch);delay(500);
}
}
}
4. Percobaan 7.4 Komunikasi Serial dari Data ADC
4.1 Latihan
int sensorPin = A0; int ledPin=13;
int sensorValue = 0;
void setup(){
Serial.begin(9600);
}
void loop()
{
sensorValue = analogRead(sensorPin);
Serial.println(sensorValue);
delay(2000);
}
4.2 Program Langkah ke 5
int sensorPin = A0;
int ledPin=13;
int sensorValue = 0;
int sensorOlah = 0;
void setup()
{
Serial.begin(9600);
pinMode(ledPin, OUTPUT);
}
void loop()
{

sensorValue = analogRead(sensorPin);
sensorOlah = sensorValue*2;
char ch = Serial.read();
Serial.print("Nilai ADC: ");
Serial.println(sensorValue);
Serial.print("Nilai Olah: ");
Serial.println(sensorOlah);
delay(2000);
}
4.3 Tugas membuat program agar Arduino mampu mengirim data X dan Y secara
berururan. Nilai x adalah hasil pembacaan ADC dan y adalah hasil pengolahan
dengan ketentuan: Y = 0 jika X =<100, Y = X jika 100<X<500, Y = 2X jika
X>=500
int sensorPin = A0;
int ledPin=13;
int sensorValue = 0;
int sensorOlah = 0;
void setup()
{
Serial.begin(9600);
pinMode(ledPin, OUTPUT);
}
void loop()
{
sensorValue = analogRead(sensorPin);
char ch = Serial.read();
if (sensorValue<100)
{sensorOlah = 0;
Serial.print("Nilai X :");
Serial.println(sensorValue);
Serial.print("Nilai Y : ");
Serial.println(sensorOlah);}
else if (sensorValue <=500&&sensorValue>=100)
{ sensorOlah=sensorValue;
Serial.print("Nilai X :");
Serial.println(sensorValue);
Serial.print("Nilai Y : ");
Serial.println(sensorOlah);}
else if (sensorValue > 500)
{ sensorOlah=2*sensorValue;
Serial.print("Nilai X :");
Serial.println(sensorValue);
Serial.print("Nilai Y : ");
Serial.println(sensorOlah);}
delay(2000);

}
5. Percobaan 7.5 Data Serial dikirim ke LCD
5.1 Latihan
#include <LiquidCrystal.h>
LiquidCrystal lcd(12,11,5,4,3,2);
void setup(){
lcd.begin(16,2);
lcd.print("Mikro&Antarmuka");
}
void loop(){
lcd.setCursor(0,1);
if(Serial.available())
{
char ch = Serial.read();
lcd.print(ch);
}
}
5.2 Tugas membuat program agar Arduino mampu menerima data karakter huruf
dari Keyboard PC dan menkonversi menjadi huruf capital atau sebaliknya dan
menampilkan dalam LCD. Jika data bukan huruf, maka data ditampilkan
pada LCD seperti aslinya.
#include <LiquidCrystal.h>
LiquidCrystal lcd(12,11,5,4,3,2);
void setup()
{ lcd.begin(16,2);
Serial.begin(9600); // initialize serial port to send and receive at 9600 baud
}
void loop()
{
if (Serial.available()) //check to see if at least one character is avilable
{char ch=Serial.read();
if(ch>=65 && ch<=90)
{char chh;
chh=32+ch;
lcd.setCursor(0,1);
lcd.print(chh); delay(500);}
else if(ch>=97 && ch<=122)
{char chh;
chh=ch-32;
lcd.setCursor(0,1);
lcd.print(chh); delay(500);}
else
{

lcd.setCursor(0,1);
lcd.print(ch);delay(500);
}
}
}
6. Komunikasi Serial antar Arduino
6.1 Latihan (PC1)
void setup(){
Serial.begin(9600);
Serial1.begin(9600);
}
void loop(){
if(Serial.available())
{
char ch1 = Serial.read();
Serial1.println(ch1);
}
delay(200);
Latihan (PC2)
void setup(){
Serial.begin(9600);
Serial1.begin(9600);
}
void loop(){
if(Serial1.available())
{
char ch = Serial1.read();
Serial.println(ch);
}
delay(200);

IV.

HASIL
Percobaan

Gambar

7.1 Latihan

7.1 Tugas

7.2 Latihan

7.2 Tugas

7.3 Latihan

7.3 Langkah
4

7.3 Tugas

7.4 Latihan

7.4 Langkah
5

7.4 Tugas

7.5 Latihan

7.5 Tugas

7.6 Latihan

7.6 Tugas

V. ANALISA
Dari percobaan diatas dapat dianalisa bahwa:
1. Percobaan 7.1 adalah dasar program input output serial asinkron. Pada percobaan ini
Arduino dipasangkan ke PC melalui USB. USB terhubung ke PC melalui serial port
(COM) yang berfungsi sebagai Universal Asynchronous Receiver Transmitter (UART).
Pada board Arduino terdapat satu port komunikasi serial, yaitu pada pin 0 (menerima
(RX)), dan pin 1 ( mengirim (TX)). Serial monitor pada aplikasi Arduino IDE dapat
digunakan untuk berkomunikasi serial dengan board arduino. Pada program terdapat
fungsi Serial.begin() yang berfungsi untuk menyetting kecepatan data dalam bits per
second (baud) untuk penyampaian data serial. Baud rate yang digunakan disini sebesar
9600

bit

per

second.

Int

number

artinya

angka

dimulai

dari

angka

0.

Serial.print berfungsi untuk untuk menampilkan data berbasis teks dengan satu baris

menyambung secara terus-menerus sehingga teksnya memanjang pada satu baris.


Sedangkan Serial.println berfungsi untuk menampilkan teks pada baris baru secara terusmenerus. Selanjutnya program diberi delay sebesar 500 ms dalam menampilkan antar
angka. Kemudian diberi number++ agar selanjutnya angka bertambah satu. Sehingga
hasil program menampilkan karakter huruf The number is diikuti angka yang berurutan
ke bawah.
2. Selanjutnya pada tugas percobaan 7.1, diminta menampilkan data ketika mencapai 100
kembali ke 0. Programnya hampir sama dengan program sebelumnya, tetapi diberi syntax
for yaitu for(r=0; r<=100; r++) . r =number. Sehingga angka pertama menampilkan
angka 0, kemudian angka akan bertambah satu karena kurang dari 100,begitu seterusnya.
Ketika sampai pada angka 100 maka akan kembali ke angka 0.
3. Pada percobaan 7.2 adalah percobaan mengirim data serial dengan berbagai format.
Format yang dikirim adalah format karakter,byte, decimal, hexadecimal, octadesimal, dan
biner. Semua format yang dikirim dimulai dari 65. 65 merupakan code ASCII dari
karakter A.

Serial.println(chrValue:

),

output

menampilkan

kata

chrValue,

Serial.println(chrValue); output akan menampilkan konversi code ASCII 65 ke huruf A


dari chrValue. Serial.write(chrValue); menampilkan karakter dari nilai chrValue,
Kemudian saat Serial.println(chrValue,DEC), nilai chrValue dicetak dalam format
desimal. Kemudian dengan dalam format byte, byteValue akan menghasilkan 1 Byte = 8
bit bilangan biner dari bilangan ASCII 65. Hasil tersebut akan ditampilkan dalam format
desimal yaitu 65, format heksadesimal yaitu 65, format oktadesimal yaitu 41, format
biner yaitu 01000001. Pada format oktadesimal angka 41 didapat dari pembacaan
bilangan biner 65 yaitu 01000001, 0100 = 4, dan empat bit selanjutnya yaitu 0001 =1,
maka octadesimal dari bilangan 65 adalah 41. Berikut adalah hasil dari program di atas :
Output program akan berlanjut dari A ke B, C, dan
seterusnya. Hasil output satu dengan output selanjutnya
memiliki waktu jeda selama 1 detik.

4. Selanjutnya tugas percobaan 7.2 yaitu mengirim kode ASCII dari huruf A sampai Z
dalam format : char, desimal, hexadecimal, dan biner. Bilangan ASCII 65 di inisialisasi
terlebih dahulu dengan char ch =65. Kemudian untuk dapat mengirim huruf dari A-Z
maka digunakan syntax if
Jika char value bernilai dari 65 sampai 90 maka output akan menampilkan format dalam
char

menggunakan

Serial.println(chrValue),

Serial.println(chrValue,DEC,

dalam

dalam

decimal

hexadecimal

menggunakan
menggunakan

Serial.println(chrValue,HEX), dalam biner menggunakan Serial.println(chrValue,BIN).

Karakter akan bertambah 1 level dari A ke B , B ke C seterusnya sampai Z karena diberi


5.

syntax chrValue++.
Percobaan 7.3 adalah menerima data serial. Pada program ini menggunakan syntax if
(Serial.available() yaitu untuk mengecek apakah data di sudah ada di buffer penerima,
jika data tersedia maka true jika data kosong maka false. Serial.read() untuk membaca
data yg diterima. Kemudian Serial.write(ch) untuk menampilkan karakter yang diterima.
Sehingga programnya adalah jika terdapat karakter pada buffer penerima, maka akan

dibaca oleh Serial.read lalu data yang dikirim ditampilkan oleh Serial.write .
6. Pada percobaan 7.3 program langkah 4 , adalah menerima data serial dengan LED. LED
terambung pada pin 13 arduino, berfungsi sebagai output. Jika terdapat karakter pada
buffer penerima (if (Serial.available()) maka karakter akan dibaca oleh Serial.read,
sebelum ditampilkan, jika karakter tersebut adalah angka 0-9 ( if( isDigit(ch) ) maka
akan angka tersebut akan dikonversi dari nilai ASCII ke nilai bilangan oleh blinkRate =
(ch-0)

kemudian

angka

angka

tersebut

dikalikan

dengan

100ms

oleh

blinkRate=blinkRate*100. Angka pada blinkRate inilah yang akan mengatur kedipan


LED. Dan ketika delay(blinkRate) maka LED akan berkedip dengan lama waktu sesuai
dengan angka pada blinkRate. Jadi saat mengirim angka 5 pada Serial monitor maka
akan, didapat delay atau jeda sebesar 500 ms. Semakin besar data yang dikirim, maka
delay kedip dari indikator LED juga akan besar.

7. Pada tugas percobaan 7.3 yaitu menerima data karakter huruf dari keyboard PC dan
menkonversi menjadi huruf kapital atau sebaliknya. Jika data bukan huruf, maka data
dikirim kembali apa adanya. Untuk huruf A sampai Z kode ASCII nya adalah 65-90
sedangkan untuk huruf a-z kode ASCII nya adalah 97-122. Syntax if (Serial.available()),
akan mengecek ada atau tidaknya data yang diterima. Apabila ada data yang diterima
maka akan dibaca dengan Serial.read(). Jika data yang diterima bernilai antara lebih dari
sama dengan 65 (huruf A) dan kurang dari sama dengan 90 ( huruf Z), maka yang akan
ditampilkan adalah chh. Chh merupakan nilai data ASCII ditambah dengan 32 agar dapat
menampilkan konversi dari huruf besa ke huruf kecil. Kemudian data chh akan dicetak
menggunakan Serial.write(chh). Jika data yang diterima bernilai antara lebih dari sama
dengan 97 (huruf a) dan kurang dari sama dengan 122 (huruf z), maka yang ditampilkan
adalah ch. Ch merupakan nilai data ASCII dikurangi dengan 32 agar dapat menampilkan
konversi huruf kecil ke huruf besar .Kemudian data ch akan dicetak menggunakan
Serial.write(ch). Apabila inputan yang diberikan berupa angka maka hasil outputnya tetap
berupa angka karena pada program tidak diberikan pengaturan khusus.
8. Pada percobaan 7.4 adalah percobaan Komunikasi Serial dari Data ADC, pada percobaan
ini digunakan potensiometer sebagai input Analog dan LED sebagai output. Kaki tengah
potensiometer terhubung pada port Analog 0 pada Arduino. Sedangkan LED terhubung
pada port 13 arduino. SensorValue merupakan nilai hambatan pada potensiometer, int
sensorValue=0 artinya nilai hambatan awal dari potensiometer adalah 0. 12. Untuk
membaca nilai dari sensor (potensiometer) digunakan perintah

sensorValue =

analogRead(sensorPin); Perintah analogRead() berfungsi untuk mengkonversi range


tegangan input analog (0 sampai 5 volt) ke nilai digital sensor yaitu antara 0 sampai 1023.
Perintah tesebut dilakukan oleh rangkaian ADC (Analog to Digital Converter) pada
Arduino. Nilai sensor atau potensiometer yang telah dibaca akan ditampilkan pada serial
monitor dengan perintah Serial.println(sensorValue).
9. Pada percobaan 7.4 langkah 5, rangkaiannya sama seperti pecobaan 7.4 sebelumnya.
Pada program ini sensorValue sama seperti program sebelumnya yaitu nilai dari
hambatan potensiometer. Untuk membaca nilai dari sensor (potensiometer) digunakan
perintah

sensorValue = analogRead(sensorPin); Pada program ini ditambahkan

sensorOlah yang nilainya 2 kali sensorValue. Serial.println(Nilai ADC: ), output akan


mencetak kata Nilai ADC: , kemudian saat Serial.println(sensorValue); akan mencetak

nilai

dari

sensorValue

yang

didapat

dari

hambatan

potensiometer.

Saat

Serial.println(Nilai Olah: ), output akan mencetak kata Nilai Olah: , kemudian saat
Serial.println(sensorOlah); akan mencetak nilai dari sensorOlah yang didapat dari 2x
sensor yang didapat dari potensiometer.
10. Selanjutnya pada tugas percobaan 7.4 output yang diharapkan adalah nilai X merupakan
hasil pembacaan ADC dan nilai Y merupakan hasil pengolahan sesuai dengan ketentuan
berikut : nilai Y= 0, jika X =< 100 ; nilai Y = X, jika 100<X <500 ; nilai Y = 2X, jika
X>=500. Untuk menghasilkan output seseuai dengan ketentuan maka digunakan syntax if
dan else if sebagai looping. SensorValue sebagai nilai X dan sensorOlah sebagai nilai Y.
Jika sensorValue=<100 maka sensorOlah = 0. Kemudian nilai sensorValue dan
sensorOlah

ditampilkan

dengan

perintah

Serial.println(sensorValue)

dan

Serial.println(sensorOlah). Berikut adalah program tugas percobaan 7.4


if (sensorValue<100)
{sensorOlah = 0;
Serial.print("Nilai X :");
Serial.println(sensorValue);
Serial.print("Nilai Y : ");
Serial.println(sensorOlah);}
Selanjutnya, jika sensorValue(X) bernilai antara 100-500 maka nilai sensorOlah(Y)
adalah nilai dari sensorValue itu sendiri. Kemudian nilai sensorValue dan sensorOlah
ditampilkan dengan perintah Serial.println(sensorValue) dan Serial.println(sensorOlah)
else if (sensorValue <=500&&sensorValue>=100)
{ sensorOlah=sensorValue;
Serial.print("Nilai X :");
Serial.println(sensorValue);
Serial.print("Nilai Y : ");
Serial.println(sensorOlah);}
Jika nilai sensorValue(X) lebih dari sama dengan 500 maka nilai sensorOlah adalah 2kali
nilai sensorValue itu sendiri.
Jadi ketika nilai sensorValue (X) bernilai 0-100 maka sensorOlah(Y) akan bernilai 0, jika
sensorValue (X) bernilai 100-500 maka sensorOlah(Y) akan bernilai X itu sendiri,jika
sensorValue (X) bernilai lebih dari 500 maka sensorOlah(Y) akan bernilai 2kali X.
Misalnya nilai X adalah 250 maka Y adalah 250. Sedangkan jika X adalah 750 maka Y
adalah 1500.
11. Pada percobaan 7.5 yaitu Data Serial yang dikirim ke LCD, percobaan ini menggunakan
LCD sebagai outputnya dan Serial Monitor sebagai inputnya. LCD terhubung dengan pin
2,3,4,5,11,13 pada Arduino Leonardo. Pin 2,3,4,5 tersambung dengan pin D7,D6,D5,D4

LCD, dimana pin D7-D0 pada LCD merupakan jalur data untuk mengirim dan menerima
data/instruksi dari mikrokontroller ke LCD. Untuk mengaktifkan LCD yang dipakai
maka digunakan syntax lcd.begin (16,2) yang artinya LCD yang dipakai pada percobaan
ini bisa menampilkan 2x16 karakter. Program harus dapat mengidentifikasi bahwa LCD
yang digunakan adalah LCD 2x16 (2baris 16 kolom) dengan menggunakan syntax
lcd.begin. Selanjutnya menggunakan syntax lcd.print untuk menampilkan karakter.
Syntax led.setCursor(0,1) artinya karakter
terletak pada kolom 0 baris 1.
Syntax if (Serial.available()), akan
mengecek ada atau tidaknya data yang
diterima. Apabila ada data yang diterima (char ch) maka akan dibaca dengan
Serial.read(). Sehingga apabila pada Serial Monitor diketikkan suatu karakter melalui
keyboard PC lalu diklik SEND maka karakter yang dikirim melalui Serial Monitor juga
akan tampil pada kolom 0 dan baris 1 di LCD.
12. Selanjutnya pada tugas 7.5 diharapkan output yang dihasilkan adalah Arduino mampu
menerima data karakter huruf dari keyboard PC dan mengkonversi menjadi huruf capital
atau sebaliknya dan menampilkan dalam LCD, jika data bukan huruf maka data yang
ditampilkan pada LCD tetap seperti aslinya. Untuk huruf A sampai Z kode ASCII nya
adalah 65-90 sedangkan untuk huruf a-z kode ASCII nya adalah 97-122. Syntax if
(Serial.available()), akan mengecek ada atau tidaknya data yang diterima. Apabila ada
data yang diterima maka akan dibaca dengan Serial.read(). Jika data yang diterima
bernilai antara lebih dari sama dengan 65 (huruf A) dan kurang dari sama dengan 90
( huruf Z), maka yang akan ditampilkan adalah chh. Chh merupakan nilai data ASCII
ditambah dengan 32 agar dapat menampilkan konversi dari huruf besa ke huruf kecil.
Kemudian data chh akan dicetak menggunakan syntax lcd.setCursor(0,1) dan lcd.print.
Jika data yang diterima bernilai antara lebih dari sama dengan 97 (huruf a) dan kurang
dari sama dengan 122 (huruf z), maka yang ditampilkan adalah ch. Ch merupakan nilai
data ASCII dikurangi dengan 32 agar dapat menampilkan konversi huruf kecil ke huruf
besar . Kemudian data chh akan dicetak menggunakan syntax lcd.setCursor(0,1) dan
lcd.print. Apabila inputan yang diberikan berupa angka maka hasil outputnya tetap
berupa angka karena pada program tidak diberikan pengaturan khusus.
13. Pada percobaan 7.6 yaitu Komunikasi Serial antar Arduino , pada percobaan ini
digunakan dua buah PC dan dua buah Arduino, yang masing-masing berfungsi sebagai

pengirim (TX) dan penerima (RX). Pada port tx di Arduino1 terhubung dengan port RX
pada Arduino2 lalu port RX pada Arduino1 terhubung pada port TX pada Arduino2.
Arduino1 sebagai Arduino TX dan Arduino2 sebagai Arduino RX. PC 1 terhubung
dengan Arduino1 sedangkan PC 2 terhubung dengan Arduino 2. Arduino1 diprogram
untuk dapat mengirim karakter namun tidak dapat menerima karakter sedangkan pada
Arduino2 kebalikan dari Arduino2 yaitu diprogram untuk dapat menerima karakter
namun tidak dapat mengirim karakter.

Pada PC1 memiliki 2 variabel Serial.begin()

yaitu Serial.begin(9600) dan Serial.begin1(9600). Variabel Serial digunakan pada sisi


pengirim atau TX, sedangkan variable Serial1 digunakan pada sisi penerima. Saat sisi TX
mengirimkan pesan, maka dideteksi dan dibaca oleh serial.read. Pesan dari
serial.read()tersebut yang akan dikirim ke PC2. Pesan akan dicetak oleh Serial1.print,
yang ada pada sisi penerima atau RX. Sehingga pesan yang dikirim oleh sisi TX akan
dicetak pada sisi RX.
a. Pada PC 2 dikonfigurasi berkebalikan dengan konfigurasi PC 1. PC 2 akan
bertindak sebagai penerima saja dan tidak dapat mengirim pesan. PC 2 juga
memiliki 2 variabel Serial.begin yaitu Serial.begin() dan Seria1l.begin(). Pada
PC 2 akan dideteksi ada atau tidaknya data yang diterima, kemudian apabila
ada data yang diterima akan dibaca oleh Serial1.read(). Kemudian data yang
dibaca akan ditampilkan pada sisi penerima.
b. Pada tugas yang memiliki ketentuan kedua aduino dapat saling mengirim dan
menerima data. Untuk memenuhi ketentuan tersebut, maka dilakukan
perubahan pada program di atas, yaitu menggabungkan 2 program di atas,
sehingga kedua PC dapat bertindak sebagai pengirim dan penerima.

VI.

KESIMPULAN
Dari percobaan yang telah dilakukan dapat dianalisa bahwa:
1. Pada board Arduino terdapat satu port komunikasi serial, yaitu pada pin 0 (menerima
(RX)), dan pin 1 ( mengirim (TX)). serial port (COM) pada PC berfungsi sebagai
Universal Asynchronous Receiver Transmitter (UART).
2. Serial.begin() berfungsi untuk menyetting kecepatan data dalam bits per second (baud)
untuk penyampaian data serial. Serial.print berfungsi untuk untuk menampilkan data
berbasis teks dengan satu baris menyambung secara terus-menerus sehingga teksnya

memanjang pada satu baris. Sedangkan Serial.println berfungsi untuk menampilkan teks
pada baris baru secara terus-menerus.
3. Serial.println(chrValue)
berfungsi
Serial.println(chrValue,DEC)

menampilkan

berfungsi

menampilkan

format
format

dalam
dalam

char,
desimal

Serial.println(chrValue,HEX), berfungsi menampilkan format dalam hexadecimal,


Serial.println(chrValue,BIN) berfungsi menampilkan format dalam biner.
4. if (Serial.available() berfungsi untuk mengecek apakah data di sudah ada di buffer
penerima. Serial.read() untuk membaca data yg diterima. Kemudian Serial.write(ch)
untuk menampilkan karakter yang diterima.
5. Kode ASCII berupa angka 0 hingga 9 dapat dijadikan sebagai delay atau waktu jeda dari
sebuah rangkaian LED dengan mengalikan kode ASCII tersebut dengan angka 100 yang
mewakili 100 ms.
6. Pada komunikasi serial dari data ADC digunakan potensiometer sebagai input.
sensorValue merupakan nilai hambatan potensiometer. Untuk menampilkan nilai
hambatan

potensiometer

ke

serial

monitor

menggunakan

syntax

Serial.println(sensorValue).
7. Dengan menggunakan 2 Arduino, antar PC dapat melakukan komunikasi serial. Dengan
menghubungkan port TX Arduino 1 ke port RX Arduino 2 dan menghubungkan port TX
Arduino 2 ke port RX Arduino 1.

Anda mungkin juga menyukai