5.1. Mengirim Data Teks
Pada percobaan kali ini akan dibuat program untuk
mengirimkan data teks ke komputer melalui komunikasi serial. Pada percobaan ini
contoh teks yang akan dikirimkan adalah "Hello World". Pengiriman
data akan menggunakan baudrate 9600.
Prosedur :
1. Tuliskan sintaks program di bawah
ini, kemudian lakukan kompilasi dan upload program ke sistem minimum
Arduino,
void setup() { Serial.begin(9600);
}
void loop() { Serial.print("Hello World"); delay(2000);
}
3. Pastikan
konfigurasi baudrate adalah 9600 seperti Gambar 5.2.'
4. Pastikan
data teks "Hello Word" yang dikirimkan Arduino diterima oleh Serial
Monitor.
Tugas dan Pertanyaan :
1. Gantiah
parameter input pada fungsi Serial.print sesuai dengan Tabel 5.1. Amati
data yang diterima pada HTerm, kemudian isilah Tabel 5.1 di bawah ini !
2. Gantilah
fungsi Serial.print menjadi Serial.println, kemudian tuliskan amati data yang
diterima oleh komputer. Jelaskan perbedaan penggunaan fungsi Serial.print dan
Serial.println !
- Teks akan di-enter kebawah.
3. Tambahkan
karakter \r\n pada akhir baris teks pada Tabel 5.1 . Amati data yang ditampilkan
pada komputer. Jelaskan fungsi karakter \r\n pada komunikasi serial !
- Kalau ditambahkan dengan /r/n untuk print biasa maka output yang keluar dari serial monitor akan bergerak kebawah secara continue pada saat println maka akan bergerak kebawah dengan jarak enter satu kali.
4.
Jelaskan
fungsi tiap baris dari sintaks program pada Percobaan 5.1 !
void setup() //Eksekusi
pada awal program
}
Serial.begin(9600); //Setting
baudrate 9600
} // Baudrate adalah kecepatan pengirimn data dalm 1 detik
void loop() // Tempat
kita menaruh source code yang akan diproses
}
Serial.println(“Hello World”); // Menampilkan text “Hello World” pada serial
monitor
Delay(2000);
//Berhenti atau menunda selama 2 detik.
5.2
Mengirim Data Byte
Pada percobaan kali ini akan dibuat program untuk mengirimkan
data byte ke komputer melalui komunikasi serial. Pengiriman data akan
menggunakan baudrate
115200.
Prosedur :
1. Tuliskan
sintaks program di bawah ini, kemudian lakukan kompilasi dan upload
program ke sistem minimum Arduino,
}
void loop() { Serial.write(0x41);
Serial.write(0x42); Serial.write(0x43); Serial.write(0x44); Serial.write(0x45);
delay(2000);
}
2. Buka
aplikasi HTerm pada komputer, pastikan konfigurasi pada HTerm seperti gambar di
bawah ini.
3. Klik
tombol Connect, kemudian perhatikan data yang ditampilkan pada bagian Receive
Data. Pastikan data tersebut sama dengan data yang dikirimkan oleh Arduino.
Tugas dan Pertanyaan :
1. Gantilah
parameter input untuk fungsi Serial.write dengan data pada Tabel 5.2.
Amati data yang diterima pada HTerm, kemudian isilah Tabel 5. 2 !
2. Gantilah
konfigurasi dari HTerm menjadi seperti di bawah ini, perhatikan data yang
diterima. Kenapa data yang diterima berubah menjadi huruf ? Jelaskan !
3.
Jelaskan
perbedaan penggunaan fungsi Serial.print dan fungsi Serial.write !
- Serial write membaca data dua data paling ujung sebelah kanan,
- Serial print hanya membaca satu data paling ujung sebelah kanan.
4.
Jelaskan
fungsi tiap baris dari sintaks program pada Percobaan 5.2 !
void
setup() //Eksekusi pada awal program
{
Serial.begin(115200);
//Setting baudrate 115200
} // Baudrate adalah kecepatan pengiriman data
dalam 1 detik
void
loop()
{
Serial.write(0x41);
//Menulis angka 41
Serial.write(0x42);
//Menulis angka 42
Serial.write(0x43);
//Menulis angka 43
Serial.write(0x44);
//Menulis angka 44
Serial.write(0x45);
//Menulis angka 45
delay(2000);
}
5.3 Menerima Data dari
UART dengan system Pooling
Pada percobaan kali ini akan dibuat
program untuk menerima data teks dari computer melalui komunikasi serial.
Proses penerimaan data akan menggunakan system pooling (menunggu). Data yang diterima oleh Arduino akan
ditampilkan pada LCD. Penerimaan data akan menggunakan baudrate 9600.
Prosedur :
1. Buatlah rangkaian seperti Gambar 5.5.
2. 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 :
1. Buka
Serial Monitor pada Arduino pastikan konfigurasi Serial Monitor sama seperti pada
Gambar 5.6.
1. 2. Ketikkan sembarang kata untuk dikirimkan (kurang
dari 16 karakter), kemudian tekan Send. Isilah T abel 5.3 !
1. 3. Jelaskan fungsi tiap baris dari sintaks program
pada Percobaan 5.3 !
#include<LiquidCrystal.h> //memanggil library untuk lcd
LiquidCrystal lcd=(2,3,4,5,6,7); // inisialisasi pin lcd
String textFromSerial = ""; //mendeklarasikan textFromSerial sebagai string
void setup() //settingan awal program
{
lcd.begin(16,2); // tampilan lcd (kolom , baris)
lcd.clear(); // tampilan lcd di hapus
lcd.setCursor(0,0); //Menampilkan text pada baris pertama LCD
lcd.print("Data From Serial") //Menampilkan text “Data From Serial” pada LCD
Serial.begin(9600); //kecepatan transfer data sebesar 9600 bit per detik
}
void loop() //program looping
{
while(Serial.available()>0) //mengecek serial komunikasi
{
char data = Serial.read(); //Membaca data serial
if(data == '\n') //jika data ada
{
lcd.setCursor(0,1); //Menampilkan text pada baris ke dua LCD
lcd.print(textFromSerial); //Menampilkan text yang dikirim melalui serial komukasi
textFromSerial="";
}
Else
{
if(data!='\r') //jika data tidak ada
{
textFromSerial += data; //menampilkan text data pada LCD
}
}
}}
5.4
Menerima Data dari UART
dengan Interupsi
Pada percobaan kali ini akan dibuat program untuk menerima data teks sama seperti percobaan 5.3. Pada percobaan kali ini proses penerimaan data menggunakan interupsi serial. Data yang diterimaoleh Arduino akan di tampilkan pada LCD. Penerimaan data akan menggunakan baudrate 115200
Pada percobaan kali ini akan dibuat program untuk menerima data teks sama seperti percobaan 5.3. Pada percobaan kali ini proses penerimaan data menggunakan interupsi serial. Data yang diterimaoleh Arduino akan di tampilkan pada LCD. Penerimaan data akan menggunakan baudrate 115200
Prosedur :
#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() {
}
1. Buka
Serial Monitor pada Arduino IDE, sesuaikan konfigurasi Serial Monitor sesuai
dengan Gambar 5.7.
2.
Jelaskan
fungsi tiap baris dari sintaks program pada Percobaan 5.4 !
#include
<LiquidCrystal.h> //memanggil library untuk lcd
#define
FOSC 16000000 //menetapkan nilai FOSC
bernilai 16000000
LiquidCrystal
lcd (2, 3, 4, 5, 6, 7); // inisialisasi
pin lcd
String
dataSerial; //mendekelarasikan
dataSerial sebagai 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')
{
lcd.clear(); // tampilan lcd di hapus
lcd.setCursor(0,0);
//Menampilkan text pada baris pertama
LCD
lcd.print("Incoming
Data"); //Menampilkan text
“Incoming Data” pada baris pertama di LCD
lcd.setCursor(0,1);
//Menampilkan text pada baris ke dua
LCD
lcd.print(dataSerial);
//Menampilkan data yg dikirim melalui
serial
dataSerial
= "";
}
Else
{
if(data!='\r')
//jika data tidak ada
{
dataSerial
+= data; //Jika tidak ada data maka
tampilkan text “data”
}
}
}
void
setup() //settingan awal program
{
initSerial(9600);
lcd.begin(16,2);
// tampilan lcd (kolom , baris)
lcd.clear();
// tampilan lcd di hapus
sei();
}
void
loop() //program looping
{
}
Terima Kasih
No comments:
Post a Comment