Mors Alfabesi Çevirici (Morse Code Translator)

Mors Alfabesi Nedir?

Merhaba, bu yazımızda Mors Alfabesini tanıyacak ve klavyeden Latin Alfabesi ile girdiğimiz kelimeleri Mors Alfabesine çeviren bir program nasıl yapılır buna birlikte bir göz atacağız.

Mors Alfabesi 1832’de telgraf ile ilgilenmeye başlayan Samuel Morse tarafından 1835 yılında oluşturulmuş ve 1837’de kullanılmaya başlanmıştır. Modern Uluslararası Mors Kodu ise, 1848 yılında Alman Friedrich Clemens Gerke tarafından geliştirilmiştir.

 

Mors alfabesinin tanımını basitçe yapacak olursak eğer; iki çeşit sinyalin (kısa ve uzun sinyal) farklı kombinasyonlarının harfleri, sayıları ya da noktalama işaretlerini oluşturduğu bir haberleşme dilidir diyebiliriz. Genellikle elektrik ya da radyo sinyali kullanılarak kişiden uzak bir noktaya yazılı bir metnin ulaştırılmasında kullanılır.

Kısa ve uzun sinyallerin dışında aralardaki sessizlikler de anlam taşımaktadır. Örneğin; kısa aralık harfler arasında, orta uzunlukta aralık kelimeler arasında ve uzun aralıklar ise cümleleri birbirinden ayırmakta kullanılır.

Yandaki resimde Latin Alfabesindeki harflerin Morse Alfabesindeki karşılıkları gösterilmektedir.

 

Buradaki noktalar kısa sinyal seslerini, çizgiler ise uzun sinyal seslerini temsil etmektedir. Peki bu sinyal seslerinin kısa yada uzun olacağı neye göre belirlendi? En çok merak ettiğim şeylerden birisi buydu, araştırdım ve aşağıdaki tabloyu buldum, tek bir tablo ile her şeyi çok güzel açıklamışlar doğrusu.

Bir de bu tabloyu çözerken bizlere kolaylık sağlayan bir şema var, duyduğumuz her kısa veya uzun sinyal sesinden sonra bizi şemanın bir kısmındaki harflere yönlendiriyor ve bu alfabeyi çözmemiz noktasında bize büyük kolaylık sağlıyor.  Bu şemayı önüne alan kod çözücü, duyduğu her sinyalden sonra kalemle bu şemayı takip ediyor ve uygun harfe geldiğinde işaretlemeler yaparak ve bunları bir kenara not alarak gönderilmiş olan sinyali çözüyorlar. 

Mors Alfabesi Çevirici Nasıl Yapılır?

Mors Alfabesini yeterince tanıdığımızı düşünüyorum. Şimdi gelelim bu projeyi nasıl yapacağımıza… Öncelikle projemiz için gereken parçalara bir göz atalım:

  • Arduino Uno ( Diğer modeller de kullanılabilir)
  • Buzzer
  • Beyaz Led
  • Dişi-Erkek Jumper Kablo (4 adet)

öncelikle kodumuz içerisinde,

int LED = 2;
int buzzerPin = 3;
int dot = 250;
şeklinde 3 tane değişken tanımlıyoruz.  Ardından “char* morseLetters[] =” kısmında Latin Alfabesindeki harflerin Mors Alfabesindeki karşılıklarını giriyoruz. Daha sonra ise “char* morseNumbers[] =”  kısmında rakamlarımızın Mors Alfabesindeki karşılıklarını giriyoruz. Setup kısmında ise;
pinMode(LED, OUTPUT);  // ledimizi çıkış birimi olarak ayarladık. 
pinMode(buzzerPin, OUTPUT); // Buzzerımızı çıkış birimi olarak ayarladık. 
Serial.begin(9600);

Loop bildiğimiz gibi döngüleri ifade ediyordu ve programımız loop içerisindeki ifadeyi sürekli olarak ya da belirtilen sayıda tekrarlıyordu. Burada; seri port ekranına klavyeden girilen verilerin Mors Alfabesindeki karşılığını led ve buzzer ile alabilmemiz için gerekli kodlar yazmakta.

Aşağıda kod editöründe verilen kodu Arduino üzerine yükleyip, gerekli bağlantıları yaptıktan sonra Arduino IDE programı üzerinden Araçlar>>Seri Port Ekranı (Kısayolu: CTRL+SHİFT+M) açılarak, bilgisayarımızın klavyesinden girdiğimiz verilerin Mors Alfabesindeki karşılığını alabiliriz.

int LED = 2;
int buzzerPin = 3;
int dot = 250;

char* morseLetters[] = {".-", "-...", "-.-.", "-..", ".", "..-.", "--.", "....", "..",".---", "-.-", ".-..", "--", "-.", "---", ".--.", "--.-", ".-.","...", "-", "..-", "...-", ".--", "-..-", "-.--", "--.." };
char* morseNumbers[] = {"-----", ".----", "..---", "...--", "....-", ".....", "-....", "--...", "---..", "----."};

void setup()                
{
  pinMode(LED, OUTPUT);
  pinMode(buzzerPin, OUTPUT);
  Serial.begin(9600);
}

void loop()                   
{
  char info;
  if (Serial.available() > 0) {
    info = Serial.read();
    if (info >= 'a' && info <= 'z') { 
      letterId(morseLetters[info - 'a']);
    }
    else if(info >= 'A' && info <= 'Z') {
      letterId(morseLetters[info - 'A']);
    }
    else if(info >= 0 && info <= 9) {
      letterId(morseNumbers[info - 0]);
    }
    else if(info == ' ') {
      delay(dot * 4); 
    }
  }
}

void letterId(char* character) {
  int i = 0;
   while(character[i] != '\0') {
    output(character[i]);
    i++;
  }
  delay(dot * 3);
}

void output(char ID) {
  digitalWrite(LED,HIGH);
  digitalWrite(buzzerPin,HIGH);
  if (ID == '.') {
    delay(dot);          
  }
  else {
    delay(dot * 3);          
  }
  digitalWrite(LED,LOW);
  digitalWrite(buzzerPin,LOW); 
  delay(dot);
}

 

 

Facebook Yorumları

Bir cevap yazın

E-Posta adresiniz yayınlanmayacaktır.