Percobaan I
Komunikasi UART Menggunakan Arduino
1. Foto Hardware dan Diagram Blok [Kembali]
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
Rangkaian Simulasi
Prinsip Kerja
Sistem ini melibatkan dua Arduino, dengan satu berperan sebagai master dan yang lainnya sebagai slave. Master bertugas mengirimkan data yang merepresentasikan keadaan switch, di mana angka 1 menandakan switch aktif dan angka 0 menandakan switch nonaktif, melalui jalur komunikasi serial. Data ini diterima oleh slave melalui pin RX, diubah menjadi nilai digital, dan digunakan untuk mengontrol penyalanan LED. Setiap nilai 1 yang diterima oleh slave akan menyebabkan LED tertentu menyala, dengan setiap LED berikutnya memerlukan pengaktifan button sebelumnya, sehingga memberikan kontrol jarak jauh bagi master terhadap penyalanan LED pada slave.
4. Flowchart dan Listing Program [Kembali]
Flowchart
Master
Slave
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() {
b8 = digitalRead(DS8);
b7 = digitalRead(DS7);
b6 = digitalRead(DS6);
b5 = digitalRead(DS5);
b4 = digitalRead(DS4);
b3 = digitalRead(DS3);
b2 = digitalRead(DS2);
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();
switch (message) {
case '1':
digitalWrite(led[0], HIGH);
break;
case '2':
digitalWrite(led[1], HIGH);
break;
case '3':
digitalWrite(led[2], HIGH);
break;
case '4':
digitalWrite(led[3], HIGH);
break;
case '5':
digitalWrite(led[4], HIGH);
break;
case '6':
digitalWrite(led[5], HIGH);
break;
case '7':
digitalWrite(led[6], HIGH);
break;
case '8':
digitalWrite(led[7], HIGH);
break;
}
}
delay(20);
for (int i = 0; i < 8; i++) {
digitalWrite(led[i], LOW);
}
}
#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() {
b8 = digitalRead(DS8);
b7 = digitalRead(DS7);
b6 = digitalRead(DS6);
b5 = digitalRead(DS5);
b4 = digitalRead(DS4);
b3 = digitalRead(DS3);
b2 = digitalRead(DS2);
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();
switch (message) {
case '1':
digitalWrite(led[0], HIGH);
break;
case '2':
digitalWrite(led[1], HIGH);
break;
case '3':
digitalWrite(led[2], HIGH);
break;
case '4':
digitalWrite(led[3], HIGH);
break;
case '5':
digitalWrite(led[4], HIGH);
break;
case '6':
digitalWrite(led[5], HIGH);
break;
case '7':
digitalWrite(led[6], HIGH);
break;
case '8':
digitalWrite(led[7], HIGH);
break;
}
}
delay(20);
for (int i = 0; i < 8; i++) {
digitalWrite(led[i], LOW);
}
}
"Semua Switch dalam kondisi Pull-down, 7 switch mengaktifkan 1 led sementara 4 switch mengaktifkan 2 led"
Download HTML
Download Rangkaian
Download Program
Download Video Simulasi
Download Datasheet Push Button
Download Datasheet Arduino Uno
Download Datasheet LED
Tidak ada komentar:
Posting Komentar