Percobaan 1
Komunikasi UART Menggunakan Arduino
1. Foto Hardware dan Diagram Blok [Kembali]
3. LED
Diagram Blok:
2. Prosedur Percobaan [Kembali]
+ Rangkai semua komponen
+ Buka Arduino IDE dan masukan listing Program
+ Upload program ke arduino
+ jalankan program pada simulasi dan cobakan dengan modul
Prinsip Kerja
Pada rangkaian praktikum percobaan 1, ini terdapat 2 arduino yaitu master dan slave. Master bertindak sebagai pengirim data, sementara slave sebagai penerima data dan pengendali LED. Keduanya berkomunikasi melalui UART (Universal Asynchronous Receiver Transmitter), antarmuka komunikasi serial yang memungkinkan dua perangkat untuk berkomunikasi satu sama lain.
Arduino master akan mengirimkan data melalui pin Tx(Transmit) dan diterima oleh arduino slave melalui pin Rx(Receive) melalui jalur komunikasi serial dengan representasi digital dari keadaan switch. Jika switch aktif, data yang dikirim adalah angka 1 (high), sebaliknya jika tidak aktif data yang dikirim adalah angka 0 (low). Pada proses penguploadan program untuk arduino dilakukan dengan memutuskan kabel penghubung antara pin Tx dan Rx (pin 1 dan 0) terlebih dahulu, setelah terupload baru dihubungkan kembali. Selanjutnya di pihak slave, data yang diterima dari master melalui pin RX diubah menjadi nilai digital 1 atau 0. Nilai inilah yang kemudian menentukan LED mana yang akan menyala.
Dengan demikian, rangkaian ini memungkinkan master untuk mengontrol LED pada slave dari jarak jauh. Master mengirimkan instruksi digital melalui UART, dan slave menerjemahkan instruksi tersebut untuk menyalakan LED sesuai dengan pola yang telah ditentukan.
4. Flowchart dan Listing Program [Kembali]
Master Arduino:
Slave Arduino:
Listing Program:
Master
//MASTER
#define DS1 2
#define DS2 3
#define DS3 4
#define DS4 5
#define DS5 6
#define DS6 7
#define DS7 8
#define DS8 9
bool b1,b2,b3,b4,b5,b6,b7,b8;
void setup()
{
Serial.begin(9600);
pinMode(DS1, INPUT_PULLUP);
pinMode(DS2, INPUT_PULLUP);
pinMode(DS3, INPUT_PULLUP);
pinMode(DS4, INPUT_PULLUP);
pinMode(DS5, INPUT_PULLUP);
pinMode(DS6, INPUT_PULLUP);
pinMode(DS7, INPUT_PULLUP);
pinMode(DS8, INPUT_PULLUP);
}
void loop()
{
int b8 = digitalRead(DS8);
int b7 = digitalRead(DS7);
int b6 = digitalRead(DS6);
int b5 = digitalRead(DS5);
int b4 = digitalRead(DS4);
int b3 = digitalRead(DS3);
int b2 = digitalRead(DS2);
int b1 = digitalRead(DS1);
// Hidupkan LED sesuai dengan tombol yang ditekan
if (b8 == LOW)
{
Serial.write('8');
}
else if (b7 == LOW)
{
Serial.write('7');
}
else if (b6 == LOW)
{
Serial.write('6');
}
else if (b5 == LOW)
{
Serial.write('5');
}
else if (b4 == LOW)
{
Serial.write('4');
}
else if (b3 == LOW)
{
Serial.write('3');
}
else if (b2 == LOW)
{
Serial.write('2');
}
else if (b1 == LOW)
{
Serial.write('1');
}
delay(20);
}
Slave
//SLAVE
int led[] = {2, 3, 4, 5, 6, 7, 8, 9};
char message;
void setup()
{
Serial.begin(9600);
for (int i = 0; i < 8; i++)
{
pinMode(led[i], OUTPUT);
}
}
void loop()
{
if (Serial.available())
{
message = Serial.read();
if (message == '1')
{
digitalWrite(led[0], 1);
}
else if (message == '2')
{
digitalWrite(led[1], 1);
}
else if (message == '3')
{
digitalWrite(led[2], 1);
}
else if (message == '4')
{
digitalWrite(led[3], 1);
}
else if (message == '5')
{
digitalWrite(led[4], 1);
}
else if (message == '6')
{
digitalWrite(led[5], 1);
}
else if (message == '7')
{
digitalWrite(led[6], 1);
}
else if (message == '8')
{
digitalWrite(led[7], 1);
}
}
delay(20);
digitalWrite(led[0], 0);
digitalWrite(led[1], 0);
digitalWrite(led[2], 0);
digitalWrite(led[3], 0);
digitalWrite(led[4], 0);
digitalWrite(led[5], 0);
digitalWrite(led[6], 0);
digitalWrite(led[7], 0);
}
Ketika botton 1 ditekan maka led 1 akan mati sedangkan led lainnya hidup, begitu juga dengan led 2 dan seterusnya.
᭒ HTML↠ klik disini
᭒ Rangkaian ↠ klik disini
᭒ Video Percobaan↠ klik disini
᭒ Program Master↠ klik disini
᭒ Program Slave↠ klik disini
᭒ Datasheet Arduino↠ klik disini
᭒ Datasheet LED↠ klik disini
᭒ Datasheet Push Button ↠ klik disini
Tidak ada komentar:
Posting Komentar