KOMUNIKASI
1. Rangkai komponen sesuai percobaan dan kondisi yang dipilih.
2. Buat program menggunakan Arduino IDE.
3. Transfer program yang telah dibuat ke Arduino yang ada di Proteus.
4. Uji coba program di simulasi sesuai dengan kondisi yang diinginkan.
5. Proses selesai setelah uji coba berhasil dilakukan.
2. Hardware dan Diagram Blok
[Kembali]
a. Hardware
3. Rangkaian Simulasi dan Prinsip Kerja [Kembali]
Prinsip Kerja
4. Flowcharth dan Listing Program [Kembali]
1) MASTER
Arduino master bertanggung jawab atas pembacaan input dari dipswitch dan mengirimkan pesan ke Arduino slave berdasarkan kondisi yang terdeteksi. Enam tombol switch terhubung ke pin input Arduino master dengan konfigurasi pull-up, memungkinkan mereka menentukan logika 1 atau 0 pada pin input. Arduino master secara terus-menerus memantau kondisi tombol menggunakan fungsi `digitalRead()` untuk setiap pin input. Ketika kondisi tombol memenuhi syarat untuk mengaktifkan running LED (lima tombol pull-up), Arduino master akan mengirimkan pesan 'B' melalui komunikasi serial. Jika kondisi tombol memenuhi syarat untuk mengaktifkan tiga LED (semua tombol pull-up), Arduino master akan mengirimkan pesan 'A' melalui komunikasi serial.
2) SLAVE
Arduino slave bertugas menerima pesan dari Arduino master dan mengatur LED sesuai instruksi yang diterima. Ada enam LED yang terhubung ke pin output Arduino slave, dan mereka akan dikontrol berdasarkan pesan yang diterima. Arduino slave terus memantau komunikasi serial untuk menerima pesan baru dari Arduino master. Ketika pesan 'B' diterima, Arduino slave akan memicu urutan LED yang berjalan, di mana setiap LED akan menyala dan mematikan secara berurutan dari LED kedua hingga keenam. Sebaliknya, ketika pesan 'A' diterima, Arduino slave akan mengaktifkan tiga LED. Dengan cara ini, Arduino master dan slave dapat berkomunikasi dan mengontrol LED sesuai dengan aksi yang dilakukan pada Arduino master, memberikan respons melalui LED.
a. Flowcharth
b. Listing Program
Master:
int sw[] = {2,3,4,5,6,7}; // Pin untuk switch
int i, sw_on;
void setup() {
Serial.begin(9600);
for(i=0; i<6; i++){
pinMode(sw[i], INPUT_PULLUP); // Mengatur semua switch sebagai input pull-up
}
}
void penjumlahan(){
sw_on = 0;
for(i=0; i<6; i++){
sw_on += digitalRead(sw[i]);
}
}
void loop() {
penjumlahan();
if (sw_on == 6){ // Jika semua switch aktif
Serial.write('A');
}
else if (sw_on == 5){ // Jika ada 5 switch aktif
Serial.write('B');
}
else{
Serial.write('a');
}
delay(20);
}
int i, sw_on;
void setup() {
Serial.begin(9600);
for(i=0; i<6; i++){
pinMode(sw[i], INPUT_PULLUP); // Mengatur semua switch sebagai input pull-up
}
}
void penjumlahan(){
sw_on = 0;
for(i=0; i<6; i++){
sw_on += digitalRead(sw[i]);
}
}
void loop() {
penjumlahan();
if (sw_on == 6){ // Jika semua switch aktif
Serial.write('A');
}
else if (sw_on == 5){ // Jika ada 5 switch aktif
Serial.write('B');
}
else{
Serial.write('a');
}
delay(20);
}
SLAVE:
int led[] = {2,3,4,5,6,7}; // Pin untuk LED
int i;
void setup() {
Serial.begin(9600);
for(i=0; i<6; i++){
pinMode(led[i], OUTPUT);
}
}
void loop() {
if (Serial.available()){
char message = Serial.read();
if (message == 'A'){ // Jika semua switch aktif
digitalWrite(led[1], HIGH);
digitalWrite(led[2], HIGH); // Mengaktifkan semua LED dari 2-4
digitalWrite(led[3], HIGH);
}
else if (message == 'B'){ // Jika ada 5 switch aktif
for(i=1; i<6; i++){
digitalWrite(led[i], HIGH); // Mengaktifkan running LED dari 3-6
delay(500);
digitalWrite(led[i], LOW);
}
}
else if (message == 'a'){ // Jika tidak ada switch aktif
for(i=0; i<6; i++){
digitalWrite(led[i], LOW);
}
}
}
else{
for(i=0; i<6; i++){
digitalWrite(led[i], LOW);
digitalWrite(led[i], LOW);
}
}
delay(20);
}
int i;
void setup() {
Serial.begin(9600);
for(i=0; i<6; i++){
pinMode(led[i], OUTPUT);
}
}
void loop() {
if (Serial.available()){
char message = Serial.read();
if (message == 'A'){ // Jika semua switch aktif
digitalWrite(led[1], HIGH);
digitalWrite(led[2], HIGH); // Mengaktifkan semua LED dari 2-4
digitalWrite(led[3], HIGH);
}
else if (message == 'B'){ // Jika ada 5 switch aktif
for(i=1; i<6; i++){
digitalWrite(led[i], HIGH); // Mengaktifkan running LED dari 3-6
delay(500);
digitalWrite(led[i], LOW);
}
}
else if (message == 'a'){ // Jika tidak ada switch aktif
for(i=0; i<6; i++){
digitalWrite(led[i], LOW);
}
}
}
else{
for(i=0; i<6; i++){
digitalWrite(led[i], LOW);
digitalWrite(led[i], LOW);
}
}
delay(20);
}
5. Kondisi
[Kembali]
Percobaan 1 Kondisi 3
Semua Switch dalam kondisi Pull-up, semua switch mengaktifkan 3 led sementara 5 switch mengaktifkan running led dari led kedua hingga ke enam
6. Video Simulasi [Kembali]
HTML klik disini
Simulasi klik disini
Gambar Simulasi klik disini
Video Simulasi klik disini
Listing Program klik disini
Datasheet Arduino klik disini
Tidak ada komentar:
Posting Komentar