Arduino ile Mors alfabesi projesinde, Seri Monitör'e yazdığınız metin harf harf nokta ve çizgiye çevrilir; bir LED ve aktif buzzer bunu ışık ve ses olarak gönderir. Nokta 1 birim, çizgi 3 birim sürer. Birim süresi 200 ms seçildiğinde proje dakikada yaklaşık 6 kelime hızında çalışır.
Mors alfabesi, ışık ve sesle mesaj göndermenin en eski yollarından biridir ve okul projesi için eğlenceli bir konudur. Bu yazıda Arduino, bir LED ve bir buzzer ile yazdığınız metni Mors koduna çeviren bir devre kuruyoruz. Nokta ve çizgi sürelerini, bağlantıyı ve kodun nasıl çalıştığını anlatıyoruz. Sonda ödevinizi ölçümlerle nasıl sunacağınız var.
Mors alfabesi nedir?
Mors alfabesi, harfleri ve rakamları kısa (nokta) ve uzun (çizgi) sinyallerin dizilişiyle gösteren bir kodlama sistemidir. 1830'lu ve 1840'lı yıllarda Samuel Morse ve Alfred Vail'in telgraf çalışmalarıyla ortaya çıktı. Sinyal ses, ışık ya da elektrik akımı olabilir; bu yüzden aynı kod telgrafta, fenerle ve telsizde kullanılabilir.
Sık kullanılan harflere kısa kodlar verilmiştir. Örneğin E tek bir nokta, T tek bir çizgidir. Uluslararası Mors alfabesinde Ç, Ğ, Ş gibi Türkçe harfler yoktur; bu projede mesajları Türkçe karaktersiz yazacağız (Ş yerine S gibi).
| Harf | Mors kodu | Harf | Mors kodu |
|---|---|---|---|
| A | .- | N | -. |
| E | . | O | --- |
| I | .. | R | .-. |
| K | -.- | S | ... |
| M | -- | T | - |
Mors alfabesinde nokta ve çizgi ne kadar sürer?
Mors alfabesinde nokta 1 birim, çizgi 3 birim sürer; bütün süreler bu temel birime göre belirlenir. Bir harfin işaretleri arasında 1 birim, harfler arasında 3 birim, kelimeler arasında 7 birim boşluk bırakılır. Birim süresini siz seçersiniz; bu projede 200 ms (0,2 saniye) kullanıyoruz.
| Öğe | Birim | 200 ms birimle süre |
|---|---|---|
| Nokta | 1 | 200 ms |
| Çizgi | 3 | 600 ms |
| İşaretler arası boşluk | 1 | 200 ms |
| Harfler arası boşluk | 3 | 600 ms |
| Kelimeler arası boşluk | 7 | 1.400 ms |
Örnek olarak SOS'u hesaplayalım. S harfi 3 nokta ve 2 boşlukla 5 birim, O harfi 3 çizgi ve 2 boşlukla 11 birim sürer. İki harf arası boşluk 3'er birimdir. Toplam 5 + 3 + 11 + 3 + 5 = 27 birim, yani 27 × 200 ms = 5,4 saniyedir.
Hız için "PARIS" kelimesi ölçü alınır; bu kelime boşluğuyla birlikte 50 birim sürer. Dakikadaki kelime sayısı 1200 / birim (ms) ile bulunur: 200 ms birimde 1200 / 200 = 6 kelime/dakika.
Hangi malzemeler gerekir?
Mors projesi için bir Arduino Uno, bir LED, bir 220 Ω direnç, bir aktif buzzer, breadboard ve birkaç jumper kablo yeterlidir. Devre bilgisayarın USB çıkışından beslenir.
Malzeme listesi
| Malzeme | Adet | Ne işe yarar? |
|---|---|---|
| Arduino UNO R3 klon kart | 1 | Yazıyı Mors koduna çevirir ve sinyali üretir |
| 5 mm kırmızı LED | 1 | Işıklı sinyal verir |
| 220 Ω direnç | 1 | LED akımını sınırlar |
| 5V aktif buzzer | 1 | Sesli sinyal (bip) verir |
| 830 pin breadboard | 1 | Lehimsiz bağlantı yapılır |
| Erkek-erkek jumper kablo | 4-5 | Parçaları karta bağlar |
Aktif buzzer, içinde kendi ses devresi olan bir buzzer'dır; gerilim verince kendiliğinden öter. Pasif buzzer ise Arduino'dan frekans ister. Farkları aktif ve pasif buzzer farkı yazısında anlattık. LED akımı yaklaşık (5 − 2) / 220 ≈ 0,014 A, yani 14 mA olur; hesabın ayrıntısı LED direnci hesaplama yazısında.
Mors projesi adım adım nasıl kurulur?
Mors projesi, LED'i D8'e, buzzer'ı D9'a bağlayıp kodu yükleyerek ve Seri Monitör'e mesaj yazarak kurulur. Bağlantıyı yaparken USB kablosu takılı olmasın.
- LED'in uzun bacağını (anot) D8 pinine, kısa bacağını 220 Ω direnç üzerinden GND'ye bağlayın.
- Aktif buzzer'ın artı (+) ucunu D9'a, eksi (−) ucunu GND'ye bağlayın. Artı uç genellikle uzun bacaktır ve gövdede "+" ile işaretlidir.
- Arduino'yu USB ile bilgisayara bağlayıp aşağıdaki kodu yükleyin.
- Seri Monitör'ü açın, hızı 9600 baud seçin, bir mesaj yazıp Enter'a basın.
const char* harfler[] = {".-","-...","-.-.","-..",".","..-.","--.",
"....","..",".---","-.-",".-..","--","-.","---",".--.","--.-",
".-.","...","-","..-","...-",".--","-..-","-.--","--.."};
const char* rakamlar[] = {"-----",".----","..---","...--","....-",
".....","-....","--...","---..","----."};
const int LED = 8, BUZZER = 9, BIRIM = 200;
void sinyal(int sure) {
digitalWrite(LED, HIGH); digitalWrite(BUZZER, HIGH);
delay(sure);
digitalWrite(LED, LOW); digitalWrite(BUZZER, LOW);
delay(BIRIM); // isaretler arasi 1 birim
}
void harfGonder(const char* kod) {
for (int i = 0; kod[i] != '\0'; i++)
sinyal(kod[i] == '.' ? BIRIM : 3 * BIRIM);
delay(2 * BIRIM); // harf arasi toplam 3 birim
}
void setup() {
pinMode(LED, OUTPUT); pinMode(BUZZER, OUTPUT);
Serial.begin(9600);
}
void loop() {
if (Serial.available()) {
char c = Serial.read();
if (c >= 'a' && c <= 'z') c -= 32; // buyuk harfe cevir
if (c >= 'A' && c <= 'Z') harfGonder(harfler[c - 'A']);
else if (c >= '0' && c <= '9') harfGonder(rakamlar[c - '0']);
else if (c == ' ') delay(4 * BIRIM); // kelime arasi 7 birim
}
}
Kod yazıyı Mors'a nasıl çevirir?
Kod, her harfin Mors karşılığını bir listeden bulur ve her nokta ya da çizgi için LED ile buzzer'ı belirli süre açık tutar. harfler listesi A'dan Z'ye 26 kodu, rakamlar listesi 0'dan 9'a 10 kodu sırayla tutar. Örneğin C harfi için c - 'A' = 2 olur ve listenin üçüncü elemanı olan -.-. seçilir.
sinyal() fonksiyonu LED ile buzzer'ı açar, istenen süre bekler, kapatır ve 1 birim boşluk bırakır. harfGonder() bir harfin işaretlerini sırayla gönderir, sonra 2 birim daha bekler; böylece harf arası boşluk 3 birim olur. Boşluk karakteri gelince 4 birim beklenir ve kelime arası 7 birime tamamlanır. Küçük harften 32 çıkarılır, çünkü ASCII tablosunda küçük ve büyük harf arasındaki fark 32'dir.
Hangi güvenlik kurallarına dikkat edilmeli?
Bu proje USB'nin 5 V'u ile çalıştığı için güvenlidir; yine de şu kurallara uyun:
- Devreyi yalnızca USB ya da USB powerbank ile besleyin. 220V'a bağlanan lamba, siren ya da röle kullanmayın.
- LED'i dirençsiz bağlamayın; hem LED hem Arduino pini zarar görebilir.
- Kabloları değiştirmeden önce USB kablosunu çıkarın.
- Buzzer'ı kulağınıza yaklaştırmayın; uzun denemelerde ses rahatsız edici olabilir.
- Pil kullanırsanız kısa devre etmeyin, ısınan pili çıkarın. Ortaokul öğrencileri projeyi bir yetişkin gözetiminde kurmalıdır.
Ödevinizi nasıl sunarsınız?
Ödevinizi, arkadaşlarınızın Mors mesajlarını farklı hızlarda ne kadar doğru çözebildiğini ölçerek sunabilirsiniz. Böylece projeniz bir deneye dönüşür.
- Hız: BIRIM değerini 300, 200 ve 100 ms yapın. Her hızda 10 harflik bir mesajın kaç harfinin doğru çözüldüğünü sayın.
- Işık ve ses: Aynı mesajı yalnızca LED'le ve yalnızca buzzer'la gönderin; doğruluk yüzdelerini karşılaştırın.
- Süre: Mesajın gönderilme süresini kronometreyle ölçüp hesapladığınız süreyle karşılaştırın.
Örnek hipotez: "Birim süresi kısaldıkça mesajı çözme doğruluğu azalır." Doğruluk = doğru harf / toplam harf × 100 ile bulunur; 10 harften 8'i doğruysa sonuç %80'dir. Farklı ses parçalarına buzzer kategorisinden bakabilirsiniz.
Sık sorulan sorular
SOS neden yardım çağrısı olarak kullanılır?
SOS, üç nokta, üç çizgi ve üç noktadan oluşan, kolay gönderilen ve kolay tanınan bir dizi olduğu için seçilmiştir. Uluslararası telsiz kurallarına 1906'da girdi. "Save Our Souls" açılımı sonradan uydurulmuştur; harflerin özel bir anlamı yoktur. Gerçek telsiz kullanımında SOS, harf araları olmadan tek bir işaret gibi gönderilir.
Aktif buzzer yerine pasif buzzer kullanabilir miyim?
Evet, ama kodu biraz değiştirmeniz gerekir. Pasif buzzer kendi başına ses çıkarmaz, Arduino'nun frekans üretmesini ister. sinyal() fonksiyonundaki buzzer satırları yerine tone(9, 800) ve noTone(9) yazın; 800 Hz kulağa hoş bir Mors sesi verir. Frekansı değiştirerek sesin inceliğini ayarlayabilirsiniz. Bağlantı aynı kalır: artı uç D9'a, eksi uç GND'ye.
Türkçe harfler neden gönderilmiyor?
Uluslararası Mors alfabesinde Ç, Ğ, İ, Ö, Ş ve Ü harfleri bulunmaz; bu yüzden kodda da yoktur. Bilgisayar bu harfleri birden fazla baytla gönderir ve kod onları A-Z aralığında görmediği için atlar. Mesajı Türkçe karaktersiz yazın: "GUNES" ya da "SAAT" gibi. Rapora bu sınırı ve nedenini yazmak da bilgi gösterir.
Mors mesajını ışıkla okuyan bir alıcı yapılabilir mi?
Evet, ikinci bir Arduino ve bir LDR ışık sensörüyle alıcı yapılabilir. LDR, LED'in ışığını görünce analog değeri yükselir; Arduino ışığın ne kadar süre yandığını ölçer. 2 birimden kısa sinyal nokta, uzun sinyal çizgi kabul edilir. LDR bağlantısını LDR ışık sensörü yazısında anlattık.
Seri Monitör'e yazınca hiçbir şey olmuyorsa ne yapmalıyım?
Önce Seri Monitör'ün sağ altındaki hızın 9600 baud olduğunu kontrol edin. Sonra LED'in uzun bacağının D8'e, buzzer'ın artı ucunun D9'a takılı olduğunu doğrulayın. Kodda pin numaralarının bağlantınızla aynı olduğuna bakın. LED tersse yanmaz; çevirip yeniden deneyin. Buzzer ses vermiyorsa artı ve eksi uçlarının yerini kontrol edin.
Özet
- Mors alfabesi harfleri nokta ve çizgilerle gösterir; sinyal ışık ya da ses olabilir.
- Nokta 1, çizgi 3 birimdir; işaret arası 1, harf arası 3, kelime arası 7 birim boşluk bırakılır.
- 200 ms birimde SOS 27 birim, yani 5,4 saniye sürer; hız dakikada 6 kelimedir.
- LED D8'e 220 Ω dirençle, aktif buzzer D9'a bağlanır.
- Kod harfleri bir listeden bulur ve Seri Monitör'e yazılan metni gönderir.
- Ödev için farklı hızlarda çözme doğruluğunu ölçün.
