Modul 3
Communication
Percobaan 1 Kondisi 6
- Buatlah rangkaian sesuai dengan kondisi yang telah dipilih
- Buat Program pada software Arduino IDE
- Masukkan program yang telah dibuat pada software Arduino IDE sebagai library Arduino
- Jalankan rangkaian, sesuai dengan kondisi yang diinginkan
a. Rangkaian Simulasi
Percobaan ini bertujuan untuk mengontrol delapan LED menggunakan empat switch pull-down dan empat switch pull-up sebagai inputan, serta dua modul Arduino sebagai pengontrol. Arduino master bertindak sebagai pemberi perintah, sementara Arduino slave sebagai penerima dan pelaksana perintah. Delapan switch terhubung ke input digital Arduino master.Delapan LED terhubung ke output digital Arduino slave.Pin Tx Arduino master terhubung ke pin Rx Arduino slave.Pin Rx Arduino master terhubung ke pin Tx Arduino slave.Switch pull-down dan pull-up digunakan untuk memberikan input digital ke Arduino master. Program pada Arduino master akan mendeteksi status switch.Ketika kondisi yang ditentukan terpenuhi (satu pull-down dan empat pull-up aktif), Arduino master akan mengirimkan perintah melalui komunikasi UART ke Arduino slave.Arduino slave akan menerima perintah dan mengontrol LED sesuai dengan instruksi. LED akan menyala secara bergantian, mengikuti pola yang ditentukan dalam program Arduino slave.
a. Flowchart
- Arduino Slave
- b. Listing Program
Arduino Master
//master
int sw_pd[] = {2,3,4,5};
int sw_pu[] = {10,11,12,13};
int i, sw_on_pd, sw_on_pu, SW_PD[4], SW_PU[4];
void setup() {
Serial.begin(9600);
for(i=0; i<4; i++){
pinMode(sw_pd[i], INPUT);
}
for(i=0; i<4; i++){
pinMode(sw_pu[i], INPUT_PULLUP);
}
}
void penjumlahan(){
for(i=0; i<4; i++){
SW_PD[i] = digitalRead(sw_pd[i]);
}
for(i=0; i<4; i++){
SW_PU[i] = digitalRead(sw_pu[i]);
}
sw_on_pd = SW_PD[0] + SW_PD[1] + SW_PD[2] + SW_PD[3];
sw_on_pu = SW_PU[0] + SW_PU[1] + SW_PU[2] + SW_PU[3];
}
void loop() {
penjumlahan();
if (sw_on_pd == 1 && sw_on_pu == 0){
Serial.write('R');
delay(1000);
}
else if (sw_on_pd == 4 && sw_on_pu == 3){
Serial.write('B');
delay(1000);
}
else{
Serial.write('0');
delay(1000);
}
}
- Arduino Slave
//slave
int led[] = {2,3,4,5,6,7,8,9};
int i;
void setup() {
Serial.begin(9600);
for(i=0; i<8; i++){
pinMode(led[i], OUTPUT);
}
}
void loop() {
if (Serial.available()){
char message = Serial.read();
if (message == 'R'){
for(i=0; i<9; i++){
digitalWrite(led[i], 1);
digitalWrite(led[i-1], 0);
delay(100);
}
}else if (message == 'B'){
for(i=0; i<8; i++){
digitalWrite(led[i], 1);
}
delay(100);
for(i=0; i<8; i++){
digitalWrite(led[i], 0);
}
}else if (message == '0'){
for(i=0; i<8; i++){
digitalWrite(led[i], 0);
}
}
}
}
4 switch dalam pull-down & 4 switch dalam pull-up, 1 switch pull-down dan 4 switch pull up mengaktifkan running led, 4 switch pull down dan 1 switch pull up mengaktifkan blinking led
Download HTML klik disini
Download Rangkaian Proteus klik disini
Download Program Arduino Master klik disini
Download Program Arduino Slave klik disini
Download Video klik disini
Download Datasheet Arduino klik disini
Tidak ada komentar:
Posting Komentar