- Rangkai seluruh komponen alat dan bahan yang diperlukan sesuai dengan kondisi percobaan yang dipilih.
- Buat program arduino pada aplikasi Arduino IDE sesuai dengan kondisi percobaan. Pastikan aplikasi Arduino IDE sudah mendownload library yang dibutuhkan dan sudah memilih board arduino yang sesuai.
- Verifikasi atau upload program pada arduino.
- Jalankan atau uji coba rangkaian yang telah dibuat sesuai dengan kondisi.
- Perhatikan rangkaian dan output apakah sesuai dengan kondisi.
- Rangkaian telah selesai dibuat.
2. Hardware dan Diagram Blok
[Kembali]
3. Rangkaian Simulasi dan Prinsip kerja [Kembali]
a). Rangkaian Simulasi
b). Prinsip Kerja
Program di atas merupakan contoh implementasi komunikasi UART antara dua Arduino, di mana satu Arduino berperan sebagai master dan yang lainnya sebagai slave. Berikut prinsip kerjanya:
Master (Arduino pertama):
1. Mendeklarasikan pin untuk saklar sebagai input pull-up.
2. Membaca status saklar setiap pin secara berurutan.
3. Mengirim status saklar ke slave melalui komunikasi serial UART setiap 500 milidetik.
Slave (Arduino kedua):
1. Mendeklarasikan pin untuk LED sebagai output.
2. Menerima status saklar dari master melalui komunikasi serial UART.
3. Mengatur LED berdasarkan status saklar yang diterima, sesuai dengan kondisi:
- Jika semua saklar aktif, LED1, LED2, dan LED3 menyala.
- Jika saklar kedua hingga keenam aktif, LED2 hingga LED6 akan menyala secara berurutan dengan delay 500 milidetik.
Prinsip kerja komunikasi UART pada kedua Arduino ini memungkinkan pertukaran data antara keduanya, di mana Arduino master mengirimkan data saklar ke slave, dan slave mengontrol LED berdasarkan data yang diterima.
4. Flowchart dan Listing Program [Kembali]
a). Flowchart
Master
b). Listing Program
Master
const int SWITCH1_PIN = 2;
const int SWITCH2_PIN = 3;
const int SWITCH3_PIN = 4;
const int SWITCH4_PIN = 5;
const int SWITCH5_PIN = 6;
const int SWITCH6_PIN = 7;
//mendeklarasikan variabel konstanta pada pin arduino
void setup() { //pendefinisian fungsi setup, yang dijalankan sekali
Serial.begin(9600); //inisialisasi komunikasi serial
pinMode(SWITCH1_PIN, INPUT_PULLUP);
pinMode(SWITCH2_PIN, INPUT_PULLUP);
pinMode(SWITCH3_PIN, INPUT_PULLUP);
pinMode(SWITCH4_PIN, INPUT_PULLUP);
pinMode(SWITCH5_PIN, INPUT_PULLUP);
pinMode(SWITCH6_PIN, INPUT_PULLUP);
//konfigurasi pin saklar, dengan aktif pullup
}
void loop() {
int switchState1 = digitalRead(SWITCH1_PIN);
int switchState2 = digitalRead(SWITCH2_PIN);
int switchState3 = digitalRead(SWITCH3_PIN);
int switchState4 = digitalRead(SWITCH4_PIN);
int switchState5 = digitalRead(SWITCH5_PIN);
int switchState6 = digitalRead(SWITCH6_PIN);
//digitalread untuk membaca keadaan saklar, kemudian disimpan dalam variabel switchstate dalam bentuk high/low
Serial.print(switchState1);
Serial.print(switchState2);
Serial.print(switchState3);
Serial.print(switchState4);
Serial.print(switchState5);
Serial.println(switchState6);
delay(500);
}
Slave
const int LED1_PIN = 2;
const int LED2_PIN = 3;
const int LED3_PIN = 4;
const int LED4_PIN = 5;
const int LED5_PIN = 6;
const int LED6_PIN = 7;
void setup() {
Serial.begin(9600);
pinMode(LED1_PIN, OUTPUT);
pinMode(LED2_PIN, OUTPUT);
pinMode(LED3_PIN, OUTPUT);
pinMode(LED4_PIN, OUTPUT);
pinMode(LED5_PIN, OUTPUT);
pinMode(LED6_PIN, OUTPUT);
}
void loop() {
if (Serial.available() >= 6) {//mengecek apakah ada setidaknya enam byte data yang tersedia untuk dibaca dari serial
int switchState1 = Serial.read() - '0';
int switchState2 = Serial.read() - '0';
int switchState3 = Serial.read() - '0';
int switchState4 = Serial.read() - '0';
int switchState5 = Serial.read() - '0';
int switchState6 = Serial.read() - '0';
//keadaan saklar dibaca menggunakan serial.read dan dikonfersi dari ASCII menjadi integer dengan mengurangkan nol
if (switchState1 && switchState2 && switchState3 && switchState4 && switchState5 && switchState6) {
digitalWrite(LED1_PIN, HIGH);
digitalWrite(LED2_PIN, HIGH);
digitalWrite(LED3_PIN, HIGH);
} else {
digitalWrite(LED1_PIN, LOW);
digitalWrite(LED2_PIN, LOW);
digitalWrite(LED3_PIN, LOW);
}
if (!switchState1 && switchState2 && switchState3 && switchState4 && switchState5 && switchState6) {
for (int i = LED2_PIN; i <= LED6_PIN; i++) {
digitalWrite(i, HIGH);
delay(500);
digitalWrite(i, LOW);
}
}
}
}
5. Kondisi
[Kembali]
Semua Switch dalam kondisi
Pull-up, semua switch mengaktifkan 3 led sementara 5 switch mengaktifkan
running led dari led kedua hingga ke enam
File Rangkaian
0 komentar:
Posting Komentar