Percobaan I Kondisi 5
Komunikasi UART Menggunakan Arduino
1. 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
+ Rangkai semua komponen
+ buat program di aplikasi arduino IDE
+ setelah selesai masukkan program ke arduino
+ jalankan program pada simulasi dan cobakan dengan modul
2. Foto Hardware dan Diagram Blok [Kembali]
Rangkaian Simulasi
Prinsip Kerja
Pada Arduino master bertugas untuk membaca inputan dari dipswitch dan pengiriman pesan ke Arduino slave berdasarkan kondisi tersebut. Delapan tombol switch yang terhubung ke pin input Arduino master diatur sedemikian rupa sehingga empat di antaranya dalam kondisi pull-down dan empat lainnya dalam kondisi pull-up. Dengan cara ini, setiap tombol switch dapat menentukan logika 1 atau 0 pada pin input. Arduino master terus-menerus membaca kondisi tombol menggunakan fungsi digitalRead() untuk setiap pin input. Jika kondisi tombol memenuhi kriteria yang ditentukan untuk mengaktifkan running LED (dua switch pull-down dan satu switch pull-up), Arduino master mengirimkan pesan 'r' melalui komunikasi serial. Jika kondisi tombol memenuhi kriteria untuk mengaktifkan blinking LED (tiga switch pull-down dan empat switch pull-up), Arduino master mengirimkan pesan 'b' melalui komunikasi serial.
Pada Arduino slave memiliki tugas untuk menerima pesan dari Arduino master dan mengendalikan LED sesuai dengan pesan yang diterima. Delapan LED yang terhubung ke pin output Arduino slave akan dikontrol berdasarkan pesan yang diterima. Arduino slave terus memantau komunikasi serial untuk menerima pesan baru dari Arduino master. Ketika pesan 'r' diterima, Arduino slave akan mengaktifkan running LED dengan cara menyala dan mematikan setiap LED secara berurutan. Sebaliknya, ketika pesan 'b' diterima, Arduino slave akan mengaktifkan blinking LED dengan membuat LED berkedip secara bergantian antara nyala dan mati. Dengan cara ini, Arduino master dan slave dapat berkomunikasi dan mengontrol LED sesuai dengan kondisi tombol yang ditekan pada Arduino master, memberikan respons melalui LED.
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);
}
}
4 switch dalam pull-down & 4 switch dalam pull-up, 2 switch pull-down dan 1 switch pull up mengaktifkan running led,3 switch pull down dan 4 switch pull up mengaktifkan blinking 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