TUJUAN :
1. Memahami cara mengirimkan dan menerima data melalui periperal UART Arduino.
2. Mampu membuat program untuk mengirimkan data berbasis teks dan berbasis byte.
3. Mampu membuat program untuk menerima data secara pooling dan secara interupsi serial.
PERALATAN :
1. Komputer
2. Arduino Uno
3. Project board
4. Kabel jumper
5. LCD
6. Potensiometer 10K
PERCOBAAN :
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
2. Buka Serial Monitor pada Arduino IDE
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 !
Teks yang Dikirimkan Arduino
|
Teks yang Diterima Komputer
|
Halo
|
Halo
|
|
|
Apa Kabar Semua
|
Apa
Kabar Semua
|
|
|
Kabar
|
Kabar
|
|
|
Semua
|
Semua
|
|
|
Yang
|
Yang
|
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 !
Jawab : Serial.print berfungsi mencetak kata yang kita ketik dalam Program,
tapi tanpa ada spasi, Serial.println berfungsi
mencetak kata yang kita ketik dalam Program, tiap kata dicetak pada
baris baru.
Jawab : Fungsi \r mencetak kata tetapi
tidak ada spasi
Fungsi \n mencetak
kata pada baris baru (enter) fungsinya
hampir sama dengan serial.println
4. Jelaskan fungsi tiap baris dari sintaks program pada Percobaan 5.1 !
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.
1. Tuliskan sintaks program di bawah ini, kemudian lakukan kompilasi dan upload program ke sistem minimum Arduino.
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 :
Data yang Dikirimkan Arduino
|
Data yang Diterima Komputer
|
0x00,0x01,0x02,0x03,0x04
|
00,01,02,03,04
|
0xF0,0x1F,0x2F,0xF3,0xF4
|
F0,1F,2F,F3,F4
|
0xF5,0xFF,0x3F,0xF3,0x44
|
F5,FF,3F,f3,44
|
0xF0,0x1F, 0x02,0x03,0x04
|
F0,1F,02,03,04
|
0x00,0x01, 0xF0,0x1F,0x2F
|
00,01,F0,1F,2F
|
2. Gantilah konfigurasi dari HTerm menjadi seperti di bawah ini, perhatikan data yang
diterima. Kenapa data yang diterima berubah menjadi huruf ? Jelaskan!
Jawab : Data yang diterima
berubah menjadi huruf karena pengaturan yang dicentang adalah Ascii.
3. Jelaskan perbedaan penggunaan fungsi Serial.print dan fungsi Serial.write !
Jawab :Fungsi
serial.print mencetak kata yang telah kita ketik dalam program, sedangkan fungsi
serial.write menyalin atau menulis data yang nantinya akan di baca dalam suatu
software (Hterm).
4. Jelaskan fungsi tiap baris
dari sintaks program pada Percobaan 5.2 !
5.3 Menerima Data dari UART dengan Sistem Pooling
Pada percobaan kali ini akan dibuat program untuk menerima data teks dari
komputer melalui
komunikasi serial. Proses
penerimaan data akan menggunakan sistem pooling (menunggu). Data yang diterima oleh Arduino
akan ditampilkan pada
LCD. Penerimaan data akan menggunakan baudrate 9600.
Prosedur :
2. Tuliskan sintaks program berikut ini, kemudian lakukan kompilasi dan upload program,
.Tugas dan Pertanyaan :
Ketikkan sembarang kata untuk dikirimkan (kurang dari 16 karakter), kemudian
tekan Send. Isilah Tabel 5.3 !
Teks yang dikirim
|
Teks Pada LCD
|
lidya
|
lidya
|
agustina
|
agustina
|
erwin
|
erwin
|
ardini
|
ardini
|
mikrokontroler
|
mikrokontroler
|
2. Jelaskan fungsi tiap baris dari sintaks program pada Percobaan 5.3 !
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 kan menggunakan interupsi
serial. Data yang diterima oleh Arduino akan ditampilkan pada LCD. Penerimaan data akan menggunakan baudrate 115200.
Prosedur :
1. Tuliskan sintaks program di bawah ini, lakukan kompilasi dan upload program.
Tugas dan Pertanyaan :1. Buka Serial Monitor pada Arduino IDE, sesuaikan konfigurasi Serial Monitor sesuai dengan Gambar 5.7.
Ketikkan sembarang teks untuk dikirimkan, tekan Send. Lengkapilah Tabel 5.4 !
Teks yang dikirim
|
Teks Pada LCD
|
Test
|
Test
|
Lidya
|
Lidya
|
Erwin
|
Erwin
|
Praktikum
|
Praktikum
|
Arduino
|
Arduino
|
2. Jelaskan fungsi tiap baris dari sintaks program pada Percobaan 5.4 !
#include <LiquidCrystal.h> //library
dari Liquid Crystal Display (LCD)
#define FOSC 16000000
LiquidCrystal lcd(2, 3, 4, 5, 6,
7); //menginisialisasi pin LCD dari pin 2 sampai pin 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(); //membersihkan atau
menghapus screen lcd
lcd.setCursor(0,0);//cursor
ditampilkan pada baris 0 kolom 0
lcd.print("Incoming
Data");//kata "Incoming Data" di cetak pada baris 0 kolom 0
lcd.setCursor(0,1);//cursor
ditampilkan pada baris 0 kolom 1
lcd.print(dataSerial);//data yang
diketik dicetak pada baris 0 kolom 1
dataSerial = ""; //data
serial 0
}
else{
if(data!='\r') {
dataSerial += data;
}
}
}
void setup() {
initSerial(9600);
lcd.begin(16,2);//Lcd yang
digunakan sebesar 16 baris dan 2 kolom
lcd.clear(); //membersihkan atau
menghapus screen lcd
sei();
}
void loop() {
}
3. Jelaskan perbedaan penggunaan interupsi dan sistem pooling !
Tidak ada komentar:
Posting Komentar