2. Rangkaian Simulasi [kembali]
3. Flowchart [kembali]
4. Listing Program [kembali]
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
}
void loop() //Semua kode dalam fungsi ini dieksekusi berulang
{
int nilai = digitalRead(button);
//ditekan
if(nilai == 0)
{
Serial.print("1");
}
else
{
Serial.print("2");
}
delay(200);
}
B. //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]
6. Analisa [kembali]
Soal :
1. Apa yang terjadi jika komunikasi UART hanya menggunakan 1 kabel saja, yang terhubung TX ke RX?
2. Apakah pada uart dapat menggunakan banyak master ataupun slave? Jelaskan alasannya
3. Jika ditambahkan resistor 22k sebelum LED, apa yang akan terjadi?
4. Jelaskan prinsip kerja UART pada rangkaian
Jawab :
1. Apabila hanya menggunakan 1 kabel saja maka saat dijalankan rangkaian akan error. Kondisi error ini disebabkan karena tidak adanya yang menjalankan perintah data yang diterima dari master melalui pin output pada slave. Dikarenakan awalnya data masuk ke master lalu master mengirim data ke slave yang terdiri 8bit data yang di transfer melalui Tx master dan diterima Rx slave.
2. Tidak, masing - masingnya hanya menggunakan 1 perangkat baik pada slave maupun master. Hal ini dikarenakan pada UART menggunakan jalur data tunggal dalam menerima maupun mentransmisikan sebuah data.
3. Jika ditambahkan resistor 22k sebelum LED pada rangkaian percobaan maka tahanan pada resistor akan menghambat laju arus listrik, sehingga tegangan yang ditimbulkan yaitu sebesar 2 volt. Berdasarkan kondisi ini dapat dilihat LED mati dikarenakan tegangannya kecil dari 2,2volt.
4. Komponen yang digunakan pada rangakai ini yaitu 2 arduino yaitu master dan slave kemudian button, LED red, ground. Button dihubungkan pada pin 2 arduino master kemudian LED red dihubungkan ke pin 12 slave selanjutnya keduanya dihubungkan ke ground. Selanjutnya tx master dihubungkan ke rx slave dan tx slave dihubungkan ke rx master. Untuk dapat menjalankan rangkaian ini sesuai dengan percobaan yang diminta maka dibuat program arduinonya.
Pertama program master :
Define button 2 yaitu mendeklarasikan pin 2 yang dihubungkan pada button.
Selanjutnya void setup () //Semua kode dalam fungsi ini dieksekusi sekali
Didalamnya terdapat pin mode(button,input pull up berarti button tersebut dideklarasikan sebagai input dimana apabila dia tidak ditekan buttonnya akan berlogika hight, sedangkan bila ditekan akan berlogika low.
Serial begin 9600 dimana akan menset baud rate 9600.
Kemudian void loop () //Semua kode dalam fungsi ini dieksekusi berulang
Didalamnya terdapat :
integer nilai = digitalRead(button);
Artinya dia akan membaca apakah button tersebut ditekan atau tidak. Apabila ditekan, jika nilai = 0 atau logika low maka akan menjalankan serial print 1 berarti dia akan mengirimkan data 1. Jika nilai tidak sama 0 maka dia akan jalankan else lalu serial print 2 artinya dia akan mengirim data 2. Setelah pengecekan if atau else maka dilanjutkan dengan delay 200 untuk menunda waktunya 200 ms setelah delay kembali lagi perulangan pada fungsi void loop tersebut. Selanjutnya program dicomplie dan dicopy file bertipe hex lalu dimasukan ke program file arduino master.
Kemudian program pada arduino slave :
Define led 12 //Deklarasi pin 12 untuk LED
Void setup() //Semua kode dalam fungsi ini dieksekusi sekali
Didalamnya terdapat :
PinMode(led,OUTPUT); //Deklarasi LED sebagai output
Kemudian serial.begin(9600); //Set baud rate 9600
Kemudian void loop() //Semua program dalam fungsi ini dieksekusi berulang
Didalamnya :
If(serial.available()>0)
Artinya akan mengecek apakah sudah ada data yang diterima dari master melalui transmiter master ke receiver slave. Kemudian apabila disapatkan data besar dari 0 maka dijalankan
Integer data = serial.read();
Artinya apabila tadi itu ditekan dan data yang dikirim adalah 1 maka
If (data=='1') //Jika data yang dikirimkan berlogika low berarti dapat data 1 sebelumnya maka dijalankan
DigitalWrite(led,HIGH); //LED menyala
Jika selain 1 maka dijalankan else
Maka digitalWrite(led,LOW); //LED mati
Kemudian setelah proses if else kembali perulangan fungsi void loop. Kemudian program dicomplie lalu dicopy file type hex dan dimasukan ke slave. Lalu di run. Selanjutnya dapat terlihat disini ketika button tersebut belum ditekan maka disini ada logika hight berarti data yang dikirimkan dari transmiter master bukan 1 yaitu 2 pada receiver slave karena pada sebelumnya pada program slave data yang diterima bukan 1 atau selain 1 maka dia LED mati. Apabila ditekan button akan berlogika low maka dari master tersebut akan dikirimkan data 1 pada receiver dari slave. Sehingga pada slave tersebut karena dia dapat data sama dengan 1 LED hidup. Kemudian transmiter dari slave gunanya untuk memberitahukan bahwa master slave tersebut telah menerima data dari master atau tidak.
7. Link Download [kembali]
Link HTML Download disini
Link Video Download disini
Link Rangkaian Download disini
Link Program Arduino Master Download disini
Link Program Arduino Slave Download disini
Tidak ada komentar:
Posting Komentar