Percobaan I
Komunikasi UART Menggunakan Arduino
1. Foto Hardware dan Diagram Blok [Kembali]
3. DIP Switch
Diagram Blok:
2. Prosedur Percobaan [Kembali]
+ Rangkai semua komponen
+ buat program di aplikasi arduino IDE
+ setelah selesai masukkan program ke arduino
+ jalankan program pada simulasi dan cobakan dengan modul
Prinsip Kerja
Pada rangkaian 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.
Di pihak master, data yang dikirim adalah representasi digital dari keadaan switch. Jika 7 switch aktif, data yang dikirim adalah karakter 'A', sedangkan jika 4 switch aktif, data yang dikirim adalah karakter 'B'. Data ini dikirim melalui pin TX (transmit) pada master menuju pin RX (receive) pada slave lewat jalur komunikasi serial.
Sementara 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. Pada program diatur bahwa jika pesan yang diterima adalah 'A', maka 1 LED menyala yaitu LED 6 yang terhubung pada pin 2. Sedangkan jika pesan yang diterima adalah 'B', maka 2 LED menyala yaitu LED 7 dan 8 yang terhubung pada pin 8 dan pin 9.
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 // didefinisikan sebagai pin 2
#define DS2 3
#define DS3 4
#define DS4 5
#define DS5 6
#define DS6 7
#define DS7 8
#define DS8 9
void setup()
{
Serial.begin(9600); // Mulai komunikasi serial dengan baud rate 9600.
pinMode(DS1, INPUT); // Atur pin DS1 sebagai input.
pinMode(DS2, INPUT); // Atur pin DS2 sebagai input.
pinMode(DS3, INPUT); // Atur pin DS3 sebagai input.
pinMode(DS4, INPUT); // Atur pin DS4 sebagai input.
pinMode(DS5, INPUT); // Atur pin DS5 sebagai input.
pinMode(DS6, INPUT); // Atur pin DS6 sebagai input.
pinMode(DS7, INPUT); // Atur pin DS7 sebagai input.
pinMode(DS8, INPUT); // Atur pin DS8 sebagai input.
}
void loop()
{
int count = 0; // Inisialisasi variabel count dengan nilai 0.
for (int pin = DS1; pin <= DS8; pin++) {
count += digitalRead(pin); // Tambahkan nilai pembacaan digital dari setiap pin ke variabel count.
}
if (count == 7) // Jika jumlah pembacaan digital adalah 7,
{
Serial.write('A'); // Kirim karakter 'A' melalui komunikasi serial.
}
else if (count == 4) // Jika jumlah pembacaan digital adalah 4,
{
Serial.write('B'); // Kirim karakter 'B' melalui komunikasi serial.
}
delay(20); // Tunda eksekusi program selama 20 milidetik.
}
Slave
//SLAVE
int led[] = {2, 3, 4, 5, 6, 7, 8, 9}; //Mendefinisikan array led yang menyimpan nomor pin Arduino yang terhubung ke LED.
char message; //Mendeklarasikan variabel message sebagai karakter yang akan menyimpan pesan yang diterima dari serial.
void setup()
{
Serial.begin(9600); // Mulai komunikasi serial dengan kecepatan 9600 baud.
for (int i = 0; i < 8; i++) // Mengulangi loop sebanyak 8 kali (jumlah LED).
{
pinMode(led[i], OUTPUT); // Setiap pin yang terhubung ke LED diatur sebagai output.
}
}
void loop()
{
if (Serial.available()) // Memeriksa apakah ada data yang tersedia di port serial.
{
{
message = Serial.read(); // Membaca karakter dari port serial dan menyimpannya di variabel message.
if (message == 'A') // Jika pesan yang diterima adalah 'A'
{
digitalWrite(led[5], 1); // Nyalakan LED pertama (pin 2).
}
else if (message == 'B') // Jika pesan yang diterima adalah 'B'
{
digitalWrite(led[6], 1); // Nyalakan LED keempat (pin 8).
digitalWrite(led[7], 1); // Nyalakan LED kedelapan (pin 9).
}
}
delay(20); // Tunda selama 20 milidetik.
digitalWrite(led[0], 0); // Matikan LED pertama (pin 2).
digitalWrite(led[1], 0); // Matikan LED kedua (pin 3).
digitalWrite(led[2], 0); // Matikan LED ketiga (pin 4).
digitalWrite(led[3], 0); // Matikan LED keempat (pin 5).
digitalWrite(led[4], 0); // Matikan LED kelima (pin 6).
digitalWrite(led[5], 0); // Matikan LED keenam (pin 7).
digitalWrite(led[6], 0); // Matikan LED ketujuh (pin 8).
digitalWrite(led[7], 0); // Matikan LED kedelapan (pin 9).
}
}
Pada kondisi 2 dari percobaan 1, Semua Switch dalam kondisi Pull-down, 7 switch mengaktifkan 1 led sementara 4 switch mengaktifkan 2 led.
᭒ HTML↠ klik disini
᭒ Rangkaian ↠ klik disini
᭒ Video Percobaan↠ klik disini
᭒ Datasheet Arduino↠ klik disini
᭒ Datasheet LED↠ klik disini
᭒ Datasheet Push Button↠ klik disini
᭒ Datasheet Resistor↠ klik disini
Komentar
Posting Komentar