• 082226375801
  • alfianmaarif@ee.uad.ac.id
  • Yogyakarta
Materi
Membuat Alat Penerjemah Kode Morse atau Morse Code Converter #wokwi

Membuat Alat Penerjemah Kode Morse atau Morse Code Converter #wokwi

Tutorial Membuat Penerjemah Kode Morse (Morse Code Converter) Menggunakan Arduino via Serial Monitor di WOKWI

Panduan praktis pembuatan sistem penerjemah Kode Morse ke teks secara real-time atau text ke kode morse menggunakan mikrokontroler Arduino. Tutorial ini membahas pemrograman logika konversi sinyal Morse serta simulasi rangkaian secara interaktif menggunakan WOKWI Serial Monitor. Skematik rangkaian ditunjukkan pada Gambar 1, program Arduino pada Kode 1, dan video pembuatan pada tautan Video 1

Gambar 1. Skematik rangkaian sistem

Pemetaan PIN:
* BUZZER
GND – GND
OUT – 8
* LED
GND – GND
VCC – 7

Kode Arduino 1. Kode Program

// ============================= 
// ALFIAN CENTER 
// SUBSCRIBE 
// MORSE CODE CONVERTER (Bidirectional)
// PROGRAM BAKAL AKU KIRIM DENGAN SYARAT DIBAWAH 
// LIKE 50, KOMEN 25 DAN WAJIB SUBSCRIBE
// PROGRAM DIKIRIM VIA KOMENTAR 
// =============================


// ===============================
// MORSE CODE CONVERTER (Bidirectional)
// Serial Monitor Input
// LED + Buzzer Output
// ===============================

const int buzzer = 8;
const int ledPin = 7;

// Durasi
int dotTime = 150;     // Lama titik
int dashTime = 400;    // Lama garis
int spaceTime = 200;   // Jeda antar simbol
int letterSpace = 600; // Jeda antar huruf

// ===============================
// Daftar Morse (A–Z + 0–9)
// ===============================
String letters = "ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789";
String morseCode[] = {
  ".-", "-...", "-.-.", "-..", ".", "..-.", "--.", "....", "..",      // A–I
  ".---", "-.-", ".-..", "--", "-.", "---", ".--.", "--.-", ".-.",     // J–R
  "...", "-", "..-", "...-", ".--", "-..-", "-.--", "--..",            // S–Z
  "-----", ".----", "..---", "...--", "....-", ".....", "-....",       // 0–6
  "--...", "---..", "----."                                            // 7–9
};

void setup() {
  Serial.begin(9600);
  pinMode(buzzer, OUTPUT);
  pinMode(ledPin, OUTPUT);

  Serial.println("===== 📡 MORSE CODE CONVERTER =====");
  Serial.println("Ketik huruf/kalimat → Arduino ubah ke Morse");
  Serial.println("Ketik Morse (misal: .-.. ) → Arduino ubah ke huruf");
    Serial.println("SUBSCRIBE ALFIAN CENTER");
  Serial.println("====================================");
}

void beepDot() {
  digitalWrite(ledPin, HIGH);
  tone(buzzer, 1000);
  delay(dotTime);
  noTone(buzzer);
  digitalWrite(ledPin, LOW);
  delay(spaceTime);
}

void beepDash() {
  digitalWrite(ledPin, HIGH);
  tone(buzzer, 1000);
  delay(dashTime);
  noTone(buzzer);
  digitalWrite(ledPin, LOW);
  delay(spaceTime);
}

// ===============================
// Convert Huruf → Morse
// ===============================
void textToMorse(String s) {
  s.toUpperCase();

  Serial.println("\n👉 Konversi Teks ke Morse:");
  Serial.println(s);

  for (int i = 0; i < s.length(); i++) {
    char c = s[i];

    if (c == ' ') {
      delay(1000);
      Serial.print(" / ");
      continue;
    }

    int index = letters.indexOf(c);
    if (index != -1) {
      String morse = morseCode[index];
      Serial.print(morse + " ");

      // Keluar bunyi
      for (int j = 0; j < morse.length(); j++) {
        if (morse[j] == '.') beepDot();
        else if (morse[j] == '-') beepDash();
      }
      delay(letterSpace);
    }
  }
  Serial.println();
}

// ===============================
// Convert Morse → Huruf
// ===============================
void morseToText(String s) {
  Serial.println("\n👉 Konversi Morse ke Teks:");
  Serial.println(s);

  s += " "; // agar pembacaan akhir tidak terputus
  String current = "";
  String result = "";

  for (int i = 0; i < s.length(); i++) {
    char c = s[i];

    if (c != ' ') {
      current += c;
    } else {
      if (current.length() > 0) {
        // Cari kecocokan
        for (int k = 0; k < 36; k++) {
          if (morseCode[k] == current) {
            result += letters[k];
            break;
          }
        }
        current = "";
      } else {
        result += " ";
      }
    }
  }

  Serial.println("Hasil: " + result);
}

void loop() {
  if (Serial.available()) {
    String input = Serial.readStringUntil('\n');
    input.trim();

    if (input.length() == 0) return;

    // Deteksi apakah input adalah morse atau teks biasa
    if (input.indexOf('.') != -1 || input.indexOf('-') != -1) {
      morseToText(input);
    } else {
      textToMorse(input);
    }

    Serial.println("\n====================================");
    Serial.println("Ketik lagi: ");
  }
}

Video 1. Video tutorial pembuatan simulasi di WOKWI

Leave a Reply

Your email address will not be published. Required fields are marked *