1. Kondisi [Kembali]
Modul 3 percobaan 1 no. 6 :
2. Gambar Rangkaian Simulasi [Kembali]
//MASTER #define button 2 //Deklarasi pin 2 untuk button void setup() //Semua kode dalam fungsi ini dieksekusi sekali { pinMode(button, INPUT_PULLUP); Serial.begin(9600); //Set baud rate 9600 } void loop() //Semua kode dalam fungsi ini dieksekusi berulang { int nilai = digitalRead(button); //Button ditekan if (nilai == 0) { Serial.print("1"); } else { Serial.print("2"); } delay(200); } |
//SLAVE #define led 12 //Deklarasi pin 12 untuk LED void setup() //Semua kode dalam fungsi ini dieksekusi sekali { pinMode(led, OUTPUT); //Deklarasi LED sebagai output Serial.begin(9600); //Set baud rate 9600 } void loop() //Semua program dalam fungsi ini dieksekusi berulang { if (Serial.available() > 0) { int data = Serial.read(); if (data == '1') //Jika data yang dikirimkan berlogika { digitalWrite(led, HIGH); //LED menyala } else { digitalWrite(led, LOW); //LED mati } } } |
5. Video Simulasi [Kembali]
Analisa
Percobaan 1
1. Apa yang terjadi jika komunikasi UART hanya menggunkan
satu kabel saja, yang terhubung Tx ke Rx ?
Pada percobaan 1 mengenai komunikasi UART apabila hanya
menggunakan satu kabel yang terhubung dari master ke slave yang dimana kabel
tersebut terhubung dari Tx ke Rx yang terjadi adalah rangkaian tetap jalan
seperti biasa atau seperti yang diinginkan karena pada percobaan ini kita hanya
mentransfer data atau perintah dari master ke slave yang melalui kabel yang
terhubung dari Tx ke Rx. Rangkaian ini juga tidak membutuhkan feedback dari
slave ke master sehingga rangkaian tetap berjalan semestinya.
2. Apakah UART bisa menggunakan banyak master atau banyak
slave? Jelaskan alasannya
Jawabannya tidak bisa karena pada komunikasi UART hanya
menggunakan jalur tunggal untuk mentransmisikan dan satu untuk menerima data.
Caranya dengan mentransfer data yang berbentuk paket yang telah ditambahkan
start bit, piraty bi dan stop bit yang kemudian jika telah sampai ke tujuan
tiga bit yang ditambahkan tadi dihapus kembali. Apabila diperlukan feedback
maka data bisa dikirim kembali ke pengrim dengan jalur yang berbeda.
3.
Jika ditambahkan resistor 22k sebelum LED, apakah yang
akan terjadi?
LED tidak akan hidup karena besarnya tegangan yang
diberikan sehingga kecilnya arus yang mengalir ke LED dan tegangan yang
dihasilkan akan kecil. Pada simulasi saya mendapatkan tegangan pada LED hanya
1.8 volt sedangkan tegangan kerjayang diperlukan sebuah LED adalah 2 volt. Maka
dapat disimpulkan bahwa LED tidak hidup.
4.
Jelaskan prinsip kerja UART pada rangkaian!
Rangkaian dimulai dari button yang memberi input. Input
tersebut diproses pada arduino master setelahnya arduino master memberi sebuah
data sebagai perintah yang akan dieksekusi oleh arduino slave. Untuk lebih
jelasnya kita pahami dulu dari listing program yang digunakan.
a)
Master
#define button 2 //Deklarasi pin 2 untuk button
void setup() //Semua kode
dalam fungsi ini dieksekusi sekali
{
pinMode(button, INPUT_PULLUP);
Serial.begin(9600); //Set baud rate
9600
}
·
Pada listing program diatas pada baris pertama kita
mendeklarasikan pin 2 sebagai button atau variabel button. Untuk fungsi void
setupnya saya memberi perintah yaitu pada varibel button saya beri perintah
input pullup dimana perintah ini berisikan apabila button ditekan maka akan
bernilai 0 (Low) dan jika dilepas akan berlogika 1 (High). Input dari button
inilah yang akan di proses dan dikirim
ke arduino slave. Dan perintah selanjutnya untuk set beud rate dengan nilai
9600
void loop() //Semua kode
dalam fungsi ini dieksekusi berulang
{
int nilai = digitalRead(button);
//Button ditekan
if (nilai == 0)
{
Serial.print("1");
}
else
{
Serial.print("2");
}
delay(200);
}
·
Pada listing progra selanjutnya yaitu fungsi loop yang
berisikan kode yaitu inisialisasi variabel nilai tipe data integers dengan
variabel nilai berisikan input button yang diberikan atau terbaca. Kode
salanjutnya adalah fungsi if dimana jika button ditekan maka variabel nilai
akan berisikan logika 0 maka program akan mengirimkan data atau perintah “1”
pada arduino slave tetapi jika selain logika 0 yaitu logika 1 dimana button
belum ditekan maka program akan mengirimkan data atau perintah “2” pada arduino
slave. Setelah if dilanjukan dela selama 200ms dan kode pada void loop diulang
kembali.
b)
Slave
//SLAVE
#define led 12 //Deklarasi pin 12 untuk LED
void setup() //Semua kode dalam
fungsi ini dieksekusi sekali
{
pinMode(led, OUTPUT); //Deklarasi
LED sebagai output
Serial.begin(9600); //Set baud rate 9600
}
· Pada listing program
slave ini saya mendeklarasikan pin 12 ke variabel led. Selanjutnya pada fungsi
void setup saya memberi perintah ke variabel led sebagai output. Dan
selanjutnya set beud rate sebesar 9600.
void loop()
//Semua program dalam fungsi ini dieksekusi berulang
{
if (Serial.available() > 0)
{
int data = Serial.read();
if (data == '1') //Jika data yang
dikirimkan berlogika
{
digitalWrite(led, HIGH); //LED
menyala
}
else
{
digitalWrite(led, LOW); //LED
mati
}
}
}
· Pada listing program
selanjutnya adalah fungsi void loop yang diberisikan logika if pertama yang
dimana syaraynya adalah bila serial available besar dari 0 (menandakan salve
menerima data dari master) maka program didalamnya akan dijalankan. Program
pada if pertama adalah variabel “data” dengan tipe integers dan logika if kedua
yang berisikan jika data sama dengan 1 maka pin LED bernilai high dan arus
mengalir dan menghidupkan LED atau variabel data bernilai selain dari 1 maka
pin LED bernilai LOW sehingga tidak ada arus mengalir di output dan LED tidak
hidup.
Tidak ada komentar:
Posting Komentar