// Deklarasi pin untuk 4 LED dan buzzer
const int ledPin1 = 5;
const int ledPin2 = 4;
const int ledPin3 = 3;
const int ledPin4 = 2;
const int buzzerPin = 6; // Tambahkan pin untuk buzzer
// Durasi untuk titik dan garis dalam milidetik
const int dotDuration = 500;
const int dashDuration = 1000;
const int gapDuration = 300; // Durasi antara bagian dari satu huruf
const int letterGapDuration = 1200; // Durasi antara huruf
const int wordGapDuration = 2000; // Durasi antara kata
void setup() {
// Inisialisasi pin LED dan buzzer sebagai output
pinMode(ledPin1, OUTPUT);
pinMode(ledPin2, OUTPUT);
pinMode(ledPin3, OUTPUT);
pinMode(ledPin4, OUTPUT);
pinMode(buzzerPin, OUTPUT); // Inisialisasi pin buzzer
}
void loop() {
// Pesan yang ingin ditampilkan dalam kode Morse
char message[] = "YANG BENER AJA";
for (int i = 0; i < strlen(message); i++) {
if (message[i] == ' ') {
delay(wordGapDuration); // Jeda antar kata
} else {
displayMorseCode(message[i]);
// Beri jeda sebelum menampilkan huruf berikutnya
delay(letterGapDuration);
}
}
// Beri jeda sebelum mengulangi pesan
delay(5000);
}
void displayMorseCode(char letter) {
switch (letter) {
case 'A':
dot(ledPin1); dash(ledPin2);
break;
case 'B':
dash(ledPin1); dot(ledPin2); dot(ledPin3); dot(ledPin4);
break;
case 'C':
dash(ledPin1); dot(ledPin2); dash(ledPin3); dot(ledPin4);
break;
case 'D':
dash(ledPin1); dot(ledPin2); dot(ledPin3);
break;
case 'E':
dot(ledPin1);
break;
case 'F':
dot(ledPin1); dot(ledPin2); dash(ledPin3); dot(ledPin4);
break;
case 'G':
dash(ledPin1); dash(ledPin2); dot(ledPin3);
break;
case 'H':
dot(ledPin1); dot(ledPin2); dot(ledPin3); dot(ledPin4);
break;
case 'I':
dot(ledPin1); dot(ledPin2);
break;
case 'J':
dot(ledPin1); dash(ledPin2); dash(ledPin3); dash(ledPin4);
break;
case 'K':
dash(ledPin1); dot(ledPin2); dash(ledPin3);
break;
case 'L':
dot(ledPin1); dash(ledPin2); dot(ledPin3); dot(ledPin4);
break;
case 'M':
dash(ledPin1); dash(ledPin2);
break;
case 'N':
dash(ledPin1); dot(ledPin2);
break;
case 'O':
dash(ledPin1); dash(ledPin2); dash(ledPin3);
break;
case 'P':
dot(ledPin1); dash(ledPin2); dash(ledPin3); dot(ledPin4);
break;
case 'Q':
dash(ledPin1); dash(ledPin2); dot(ledPin3); dash(ledPin4);
break;
case 'R':
dot(ledPin1); dash(ledPin2); dot(ledPin3);
break;
case 'S':
dot(ledPin1); dot(ledPin2); dot(ledPin3);
break;
case 'T':
dash(ledPin1);
break;
case 'U':
dot(ledPin1); dot(ledPin2); dash(ledPin3);
break;
case 'V':
dot(ledPin1); dot(ledPin2); dot(ledPin3); dash(ledPin4);
break;
case 'W':
dot(ledPin1); dash(ledPin2); dash(ledPin3);
break;
case 'X':
dash(ledPin1); dot(ledPin2); dot(ledPin3); dash(ledPin4);
break;
case 'Y':
dash(ledPin1); dot(ledPin2); dash(ledPin3); dash(ledPin4);
break;
case 'Z':
dash(ledPin1); dash(ledPin2); dot(ledPin3); dot(ledPin4);
break;
default:
break;
}
}
// Fungsi untuk menyalakan LED dan buzzer sebagai titik
void dot(int ledPin) {
digitalWrite(ledPin, HIGH);
tone(buzzerPin, 1000); // Mengaktifkan buzzer dengan frekuensi 1000 Hz
delay(dotDuration);
digitalWrite(ledPin, LOW);
noTone(buzzerPin); // Mematikan buzzer
delay(gapDuration);
}
// Fungsi untuk menyalakan LED dan buzzer sebagai garis
void dash(int ledPin) {
digitalWrite(ledPin, HIGH);
tone(buzzerPin, 1000); // Mengaktifkan buzzer dengan frekuensi 1000 Hz
delay(dashDuration);
digitalWrite(ledPin, LOW);
noTone(buzzerPin); // Mematikan buzzer
delay(gapDuration);
}