Anda di halaman 1dari 9

PERCOBAAN :

5.1 Mengirim Data Teks


Pada percobaan ka li ini akan dibuat program untuk mengiri mkan data teks ke
komputer melalui ko munikasi serial. Pada percobaan ini conto h teks yang akan
dikirimkan adalah "Hello World". Pengiriman data akan menggunak an baudrate
9600.
Prosedur :

Tuliskan sintaks program di bawah ini, kemudian lakukan


kompilasi dan uploadprogram ke sistem minimum Arduino .
void setup() {
Serial.begin(9600);
}
void loop() {
Serial.print("HelloWorld");
delay(2000);
}

Buka Serial Monitor pada Arduino IDE.

Pastikan konfigurasi baudrate adalah 9600 seperti Gambar 5.2.

Pastikan data teks "Hello Word" yang dikirimkan Arduino


diterima oleh Serial Monitor.
Tugas dan Pertanyaan :

Gantiah parameter input pada fungsi Serial.print sesuai denga n


Tabel 5.1. Amati data yang diterima pada HTerm, kemudian isilah Tabel
5.1 di bawah ini !

Gantilah fungsi Serial.print menjadi Serial.println, kemudian


tuliskan amati data yang diterima oleh komputer. Jelaskan perbedaan
penggunaan
fungsi
Serial.print
dan
Serial.println
!
jika menggunakan serial.print maka hasil keluaran akan tetap
sama dengan input yang diberikan , namun jika menggunakan
serial.println maka program akan membaca perkata lalu akan
melangkah satu baris kebawah lalu disambung pada baris baru
kata yang lainya
Tambahkan karakter \r\n pada akhir baris teks pada Tabel 5.1 .
Amati data yang ditampilkan pada k omputer. Jelaskan fungsi

karakter \r\n pada k omunikasi serial ! fungsi dari karakter \r\n


adalah untuk member enter pada input yang kita masukkan
atau menampilkan input pada baris baru.
Jelaskan fungsi tiap baris dari sintaks program pada Percobaan
5.1 !
void setup() { // untuk inisialisai program
Serial.begin(9600); // konfigurasi baudrate serial 9600 dengan kecepatan mengirim
data 9600 persekon
}
void loop() { // untuk mengeksekusi program yang akan dijalankan berulang-ulang
Serial.print("Hello World"); //menampilkan hello word di serial monitor
delay(2000);// memberi selang waktu selama 2 detik .

5.2 Mengirim Data Byte .


Pada percobaan ka li ini akan dibuat program untuk mengiri mkan data byte ke
komputer melalui kom unikasi serial. Pengiriman data akan men ggunakan baudrate
115200.

Tuliskan sintaks program di bawah ini, kemudian lakukan ko


mpilasi dan upload program ke sistem minimum Arduino,
void setup() {
Serial.begin(115200);
}
void loop() {
Serial.write(0x41);
Serial.write(0x42);
Serial.write(0x43);
Serial.write(0x44);
Serial.write(0x45);
delay(2000);
}

Buka aplikasi HTerm pada komputer, pastikan konfigurasi pada


HTerm seperti gambar di bawah ini.

Klik tombol Connect, kemudian perhatikan data yang ditam


pilkan pada bagian Receive Data. Pastikan data tersebut sama dengan
data yan g dikirimkan oleh Arduino.
Tugas dan Pertanyaan :

Gantilah parameter input untuk fungsi Serial.write dengan da ta


pada Tabel 5.2. Amati data yang diterima pada HTerm, kemudian isilah
Tabel 5. 2 !

Gantilah konfiguras i dari HTerm menjadi seperti di bawah ini,


perhatikan data yang diterima. Kenapa d ata yang diterima berubah
menjadi huruf ? Jelaskan !

Jelaskan perbedaan penggunaan fungsi Serial.print dan fungsi S


erial.write !Serial.print berfungsi untuk mencetak kata yang
dituliskan disintaks program ke serial monitor. Serial.write
berfungsi untuk mengirim data byte yang adapadasintaks
programarduinokekomputermelaluikomunikasi serial.
Jelaskan fungsi tiap baris dari sintaks program pada Percobaan
5.2 !
void setup() {
Serial.begin(115200); //set baudrate 115200, kecepatan mengirim data serial dalam
1 detik
void loop() { // menjalankan program secara berulang-ulang
Serial.write(0x41); //mengirim data hexa 41
Serial.write(0x42); //mengirim data hexa 42
Serial.write(0x43); //mengirim data hexa 43
Serial.write(0x44); //mengirim data hexa 44
Serial.write(0x45); //mengirim data hexa 45
delay(2000); // delay selama 2 detik trus akan melanjutkan program lagi
}
5.3 Menerima Data dari UART dengan Sistem Pooling
Pada percobaan kali ini akan dibuat program untuk meneri ma data teks dari
komputer melalui ko munikasi serial. Proses penerimaan data a kan menggunakan
sistem pooling (menunggu). Data yang diterima oleh Arduino akan ditampilkan pada
LCD. Penerimaan data akan menggunakan baudrate 9600.
Prosedur :

Buatlah rangkaian seperti Gambar di bawah ini


Tuliskan sintaks program berikut ini, kemudian lakukan kompilasi
dan upload program,
#include<LiquidCrystal.h>
LiquidCrystal lcd=(2,3,4,5,6,7);
String textFromSerial = "";
void setup() {
lcd.begin(16,2);
lcd.clear();
lcd.setCursor(0,0);
lcd.print("Data From Serial")
Serial.begin(9600);
}
void loop() {
while(Serial.available()>0) {
char data =
Serial.read(); if(data ==
'\n') {
lcd.setCursor(0,1);
lcd.print(textFromSerial);

textFromSerial="";
}
else{
if(data!='\r')
{
textFromSerial += data;
}
}
}
}
Tugas dan Pertanyaan :

Buka Serial Monitor pada Arduino pastikan konfigurasi Serial


Monitor sama seperti pada Gambar di bawah ini .
Ketikkan sembarang kata untuk dikirimkan (kurang dari 16 k
arakter), kemudian tekan Send. Isilah Tabel 5.3 !
Jelaskan fungsi tiap baris dari sintaks program pada Percobaan
5.3
!
#include<LiquidCrystal.h>
//
memangil
library
lcd
LiquidCrystal lcd=(2,3,4,5,6,7); // set pin 2-7 sebagai input untuk lcd
String textFromSerial = "";//mengenalkan variable textFromSerial
sebagai
tipe
data
string
void
setup()
{
lcd.begin(16,2); // mengeset ukuran lcd sebesar 16x2 atau 16 colom
dan
2
baris
lcd.clear();
//mengbersikan
layar
lcd
lcd.setCursor(0,0); //memulai menampilkan data yang akan di kirim di
colom
ke
1
dan
baris
ke
1
lcd.print("Data From Serial") //menampilkan kalimatdata from serial
Serial.begin(9600);
//set
baudrate
9600
}
void
loop()
menjalankan
program
secara
berulang-ulang
{
while(Serial.available()>0) //ketika serial lebih dari 0 maka program di
bawah
ini
akan
di
jalankan
{
char data = Serial.read(); //mengenalkan tipe data char dan data yang
dikirim
akan
di
masukan
di
variable
data
if(data == '\n') { //jika data memiliki enter maka akan mengeksekusi
program
di
bawah
ini
lcd.setCursor(0,1); //memulai menampilkan data di baris 2 dan kolom
ke
1
lcd.print(textFromSerial);
//menampilkan
text
fromserial
text FromSerial=""; //data yang terdapat dari variable text fromserial
akan

dimulai
dari
0.
}
else{
//jika tidak akan melakukan program di bawah ini//
if(data!='\r') { //jika data tidak terdapat enter maka data dari text
fromserial
akan di jumlakan dengan data yang terdapat di variable data
textFromSerial
+=
data;
}
}
}
}
5.4 Menerima Data dari UART dengan Interupsi
Pada percobaan ka li ini akan dibuat program untuk meneri ma data teks
sama seperti Percobaan 5. 3. Pada percobaan kali ini proses penerimaan data kan
menggunakan interupsi serial. Data yang diterima oleh Arduino aka n ditampilkan
pada LCD. Penerimaan data akan menggunakan baudrate 115200.
Prosedur :

Tuliskan sintaks program di bawah ini, lakukan kompilasi dan u


pload program.
#include <LiquidCrystal.h>
#define FOSC 16000000
LiquidCrystal lcd(2, 3, 4, 5, 6, 7); String dataSerial;
void initSerial(int baudrate) {
int ubrr = FOSC/16/baudrate-1;
// Mengisi register UBRR0H dan UBRR0L untuk menentukan baudrate
UBRR0H |= ubrr>>8;
UBRR0L |= ubrr;
// Mengaktifkan saluran transmitter dan receiver
UCSR0B |= (1<<RXEN0)|(1<<TXEN0);
// Menggunakan format data 8 bit
UCSR0C |= (0<<UCSZ02)|(1<<UCSZ01)|(1<<UCSZ00);
// Menggunakan 1 stop bit
UCSR0C |= (0<<USBS0);
// No Parity
UCSR0C |= (0<<UPM01)|(0<<UPM00);
// Mengaktifkan RX interrupt
UCSR0B |= (1<<RXCIE0);
}
// Rutin yang akan dijalankan jika terjadi interupsi
ISR(USART_RX_vect){
char data = UDR0; if(data=='\n') { lcd.clear();
lcd.setCursor(0,0); lcd.print("Incoming Data"); lcd.setCursor(0,1);
lcd.print(dataSerial); dataSerial = "";
}
else{

if(data!='\r') {
dataSerial += data;
}
}
}
void setup() { initSerial(9600); lcd.begin(16,2); lcd.clear(); sei();
}
void loop() {
}

Buka Serial Monit or pada Arduino IDE, sesuaikan konfigurasi


Serial Monitor sesuai dengan Gambar 5.7.
Ketikkan sembarang teks untuk dikirimkan, tekan Send. Lengka
pilah Tabel 5.4 !
Jelaskan fungsi tiap baris dari sintaks program pada Percobaan
5.4
!
#include
<LiquidCrystal.h>
//memangil
library
lcd
#define
FOSC
16000000
LiquidCrystal lcd(2, 3, 4, 5, 6,7); //set pin 2-7 sebagi input ke lcd
String dataSerial;// membuat dataserial sebagai tipe data string

void
initSerial(int
baudrate)
{
int
ubrr
=
FOSC/16/baudrate-1;
// Mengisi register UBRR0H dan UBRR0L untuk menentukan baudrate
UBRR0H
|=
ubrr>>8;
UBRR0L
|=
ubrr;
//
Mengaktifkan
saluran
transmitter
dan
receiver
UCSR0B |= (1<<RXEN0)|(1<<TXEN0); // Menggunakan format data 8
bit
UCSR0C
|=
(0<<UCSZ02)|(1<<UCSZ01)|(1<<UCSZ00);
//
Menggunakan
1
stop
bit
UCSR0C
|=
(0<<USBS0);
//
No
Parity
UCSR0C |= (0<<UPM01)|(0<<UPM00); // Mengaktifkan RX interrupt
UCSR0B
|=
(1<<RXCIE0);
}
// Rutin yang akan dijalankan jika terjadi interupsi ISR(USART_RX_vect){
char
data
=
UDR0;
if(data=='\n') { //jika data ada enter maka akan menjalankan program
di
bawah
ini

lcd.clear();//membersihkan
lcd
lcd.setCursor(0,0); //set data yang akan di tampilkan di baris 1 dan
colom 1 lcd.print("Incoming Data"); //menampilkan tulisan incoming
data lcd.setCursor(0,1); //set data yang akan di tampilkan di baris 2
dan kolom 1 lcd.print(dataSerial); //menampilkan data yang terdapat di
data serial dataSerial = "";//nilai data pada dataserial dimulai dari 0
}
else{
if(data!='\r')
{
dataSerial
+=
data;
}
}
}

void setup() { initSerial(9600); lcd.begin(16,2); lcd.clear(); sei();


}
void
loop()
{
}
Jelaskan perbedaan penggunaan interupsi dan sistem pooling !
interupsi adalah meninggalkan program utama untuk
menjalakan interupsi setelah di jalankan, maka arduino akan
kembali ke program utama. Sistem pooling adalah arduino
menunggu pengiriman data melalui serial

Anda mungkin juga menyukai