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
Rangkaian ini melibatkan dua Arduino, yaitu master dan slave, yang saling berkomunikasi melalui UART. Master mengirimkan data berupa representasi digital dari switch yang aktif, sedangkan slave menerima data tersebut dan mengendalikan LED berdasarkan instruksi yang diterima. Pada master, data dikirim melalui pin TX ke pin RX pada slave melalui komunikasi serial. Slave mengubah data yang diterima menjadi nilai digital untuk mengatur penyalakan LED. Jika pesan yang diterima Slave adalah "1" yang mana artinya switch 1, 2, 3, dan 4 (dibaca dari bawah dipswitch) dihidupkan, maka LED 1 dan 2 akan menyala, sedangkan jika pesan yang diterima Slave adalah "2" yang mana artinya switch 1, 2, 3, 4, 5, 6, dan 7 dihidupkan, maka LED 5 akan menyala. Dengan demikian, rangkaian ini memungkinkan pengendalian LED pada slave dari jarak jauh, di mana master mengirimkan instruksi digital melalui UART dan slave menjalankan instruksi tersebut sesuai dengan pola yang telah ditentukan.
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
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 (b1 == LOW && b2 == LOW && b3 == LOW && b4 == LOW && b5 == LOW && b6 == LOW && b7 == LOW) {
Serial.write('1');
} else if (b1 == LOW && b2 == LOW && b3 == LOW && b4 == LOW) {
Serial.write('2');
}
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[4], HIGH);
} else if (message == '2') {
digitalWrite(led[0], HIGH);
digitalWrite(led[1], HIGH);
}
delay(20);
digitalWrite(led[0], LOW);
digitalWrite(led[1], LOW);
digitalWrite(led[2], LOW);
digitalWrite(led[3], LOW);
digitalWrite(led[4], LOW);
digitalWrite(led[5], LOW);
digitalWrite(led[6], LOW);
digitalWrite(led[7], 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
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 (b1 == LOW && b2 == LOW && b3 == LOW && b4 == LOW && b5 == LOW && b6 == LOW && b7 == LOW) {
Serial.write('1');
} else if (b1 == LOW && b2 == LOW && b3 == LOW && b4 == LOW) {
Serial.write('2');
}
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[4], HIGH);
} else if (message == '2') {
digitalWrite(led[0], HIGH);
digitalWrite(led[1], HIGH);
}
delay(20);
digitalWrite(led[0], LOW);
digitalWrite(led[1], LOW);
digitalWrite(led[2], LOW);
digitalWrite(led[3], LOW);
digitalWrite(led[4], LOW);
digitalWrite(led[5], LOW);
digitalWrite(led[6], LOW);
digitalWrite(led[7], 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 SW-SPDT
Download Datasheet Resistor
Download Datasheet Arduino Uno
Download Datasheet LED
Tidak ada komentar:
Posting Komentar