Percobaan 1
Komunikasi UART Menggunakan Arduino
1. Foto Hardware dan Diagram Blok [Kembali]
4. DIP Switch
5. L293D
6. Motor DC
7. Potensiomotor
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 percobaan ini arduino master ini data yang dikirimkan yaitu representasi digital dari kondisi switchnya. pada saat switchnya aktif, data yang dikirim adalah angka 1, sebaliknya pada saat tidak aktif data yang dikirim adalah angka 0. Data ini akan dikirimkan melalui pin TX pada arduino master menuju pin RX pada arduino slave melewati jalur komunikasi serial.
sedangkan pada arduino slave ini data yang diterima dari arduino master melalui pin RX diubah menjadi nilai digital 1 atau 0. Nilai inilah yang kemudian menentukan LED yang akan menyala.
rangkaian ini memungkinkan arduino master untuk mengontrol LED pada slave dari kondisi jarak jauh. arduino Master ini akan mengirimkan instruksi digital melalui UART, dan arduino slave berperan sebagai penerjemah instruksi tersebut untuk menyalakan LED sesuai dengan pola yang telah dtetapkan
4. Flowchart dan Listing Program [Kembali]
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.
- HTML↠ klik disini
- Video Percobaan↠ klik disini
Tidak ada komentar:
Posting Komentar