Percobaan 1
Komunikasi UART Menggunakan Arduino
1. Prosedur [Kembali]
- Rangkai semua komponen
- Buat program di aplikasi arduino IDE
- Setelah selesai masukkan program ke arduino
- Jalankan program pada simulasi dan cobakan dengan modul
- Hardware
- Diagram Blok
- Rangkaian Simulasi
- Prinsip Kerja
Percobaan 1 ini mensimulasikan komunikasi Universal Asynchronus Receiver Transmitter (UART), yaitu protokol pengiriman data secara serial dan asinkronus menggunakan pin Tx dan Rx dengan boudrate yang sama. Artinya, pada komunikasi UART data dikirim satu per satu, yaitu dengan urutan idle, start bit, LSB sampai MSB data, parity bit, dan stop bit. Pengiriman ini tidak bergantung pada siklus clock, sehingga digolongkan pada jenis komunikasi asinkronus. Untuk mengirim data ini, pada rangakain, pin Tx arduino master harus terhubung dengan pin Rx arduino slave, sementara pin Rx ardino master terhubung dengan pin Tx arduino slave, dengan syarat kedua pin ini dihubungkan setelah program terupload. Selain itu, UART merupakan komunikasi jenis full duplex, artinya dapat mengirim dan menerima data secara bersamaan.
Jika input diberikan atau push button ditekan, maka sinyal input akan diteruskan ke arduino master untuk dikirim. Kemudian, arduino slave akan menerima sinyal tersebut dan meneruskannya pada output. Saat sebuah push button ditekan, maka nyala LED akan berpindah ke LED sebelumnya, dengan syarat push button harus ditekan secara berurutan. Kondisi ini diperoleh melalui program atau instruksi yang diberikan dan dijalankan pada arduino master dan arduino slave. Program tertera pada bagian 4 (Flowchart dan Listing Program).
- Listing Program
//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 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); }
Saat sebuah push button ditekan, maka nyala LED akan berpindah ke LED sebelumnya, dengan syarat push button harus ditekan secara berurutan.
HTML klik disini
Gambar Hardware klik disini
Gambar Simulasi klik disini
Video Demo klik disini
Listring Program klik disini