Master
// Definisikan koneksi pin untuk tombol-tombol
#define DS1 2
#define DS2 3
#define DS3 4
#define DS4 5
#define DS5 6
#define DS6 7
#define DS7 8
#define DS8 9
// Inisialisasi variabel boolean untuk status tombol
bool b1,b2,b3,b4,b5,b6,b7,b8;
void setup()
{
// Mulai komunikasi serial dengan kecepatan 9600 bit per detik
Serial.begin(9600);
// Setel pin-pin digital sebagai input
pinMode(DS1, INPUT);
pinMode(DS2, INPUT);
pinMode(DS3, INPUT);
pinMode(DS4, INPUT);
pinMode(DS5, INPUT);
pinMode(DS6, INPUT);
pinMode(DS7, INPUT);
pinMode(DS8, INPUT);
}
void loop()
{
// Baca status dari setiap tombol
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);
// Periksa status dari setiap tombol dan kirim nomor yang sesuai melalui Serial
// LOW berarti tombol ditekan untuk DS8 karena konfigurasi resistor pull-up
if (b8 == HIGH)
{
Serial.write('8'); // Kirim '8' melalui Serial jika tombol 8 ditekan
}
else if (b7 == HIGH) // Untuk tombol lain, HIGH berarti tombol ditekan
{
Serial.write('7'); // Kirim '7' melalui Serial jika tombol 7 ditekan
}
else if (b6 == HIGH)
{
Serial.write('6'); // Kirim '6' melalui Serial jika tombol 6 ditekan
}
else if (b5 == HIGH)
{
Serial.write('5'); // Kirim '5' melalui Serial jika tombol 5 ditekan
}
else if (b4 == HIGH)
{
Serial.write('4'); // Kirim '4' melalui Serial jika tombol 4 ditekan
}
else if (b3 == HIGH)
{
Serial.write('3'); // Kirim '3' melalui Serial jika tombol 3 ditekan
}
else if (b2 == HIGH)
{
Serial.write('2'); // Kirim '2' melalui Serial jika tombol 2 ditekan
}
else if (b1 == HIGH)
{
Serial.write('1'); // Kirim '1' melalui Serial jika tombol 1 ditekan
}
delay(20); // Tunda sebentar untuk debouncing dan mencegah pembacaan berulang
}
Slave
// Definisi array untuk menyimpan nomor pin LED
int led[] = {2, 3, 4, 5, 6, 7, 8, 9};
char message; // Variabel untuk menyimpan pesan yang diterima
void setup()
{
Serial.begin(9600); // Memulai komunikasi serial dengan kecepatan 9600 bits per detik
// Melakukan iterasi untuk setiap LED dan mengatur sebagai OUTPUT
for (int i = 0; i < 8; i++)
{
pinMode(led[i], OUTPUT);
}
}
void loop()
{
if (Serial.available()) // Periksa apakah ada data yang tersedia untuk dibaca dari serial
{
message = Serial.read(); // Membaca karakter yang diterima dari serial
// Mengecek pesan yang diterima dan menyalakan LED yang sesuai
if (message == '1')
{
digitalWrite(led[0], 1); // Menyalakan LED 1
}
else if (message == '2')
{
digitalWrite(led[1], 1); // Menyalakan LED 2
}
else if (message == '3')
{
digitalWrite(led[2], 1); // Menyalakan LED 3
}
else if (message == '4')
{
digitalWrite(led[3], 1); // Menyalakan LED 4
}
else if (message == '5')
{
digitalWrite(led[4], 1); // Menyalakan LED 5
}
else if (message == '6')
{
digitalWrite(led[5], 1); // Menyalakan LED 6
}
else if (message == '7')
{
digitalWrite(led[6], 1); // Menyalakan LED 7
}
else if (message == '8')
{
digitalWrite(led[7], 1); // Menyalakan LED 8
}
}
delay(20); // Tunda sebentar
// Mematikan semua LED setelah tunda
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);
}