LA 1 M3
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
Rangkaian ini melibatkan dua Arduino, yaitu master dan slave. Master bertugas mengirimkan data, sementara slave menerima data dan mengendalikan LED. Kedua Arduino berkomunikasi melalui UART, sebuah antarmuka komunikasi serial.
Pada sisi master, data yang dikirimkan adalah representasi digital dari posisi switch. Jika switch aktif, data yang dikirim adalah angka 1 (tinggi), jika tidak aktif, data yang dikirim adalah angka 0 (rendah). Data ini dikirim melalui pin TX pada master menuju pin RX pada slave melalui jalur komunikasi serial.
Di sisi slave, data yang diterima dari master melalui pin RX diubah menjadi nilai digital 1 atau 0. Nilai ini menentukan LED mana yang akan dinyalakan. Logika umumnya adalah: jika nilai yang diterima adalah 1, maka LED tertentu akan dinyalakan. Untuk menyalakan LED selanjutnya, tombol sebelumnya juga harus ditekan bersamaan, dan seterusnya hingga lampu ke-8.
Dengan demikian, rangkaian ini memungkinkan master untuk mengontrol LED pada slave dari jarak jauh. Master mengirimkan instruksi digital melalui UART, dan slave menginterpretasikan 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 di tekan maka akan menghidupkan led 1, untuk menghidupkan led selanjutnya maka button sebelumnya juga harus di tekan secara bersamaan, begitu seterusnya sampai lampu ke 8.
Download HTML klik disini
Download Video Percobaan klik disini
Download Program Master klik disini
Download Program Slave klik disini
Download Datasheet Arduino klik disini
Download Datasheet LED klik disini
Download Datasheet Push Button klik disini
Komentar
Posting Komentar