Nedense bir şey alınca Hello World yazdırma gibi bir huyu var yazılımcıların. Bu bende de var ama buna ek olarak eğer bir şey ses veya ışık ile dönüt verebiliyorsa, mors deneme gibi bir huyum daha var. İşte bugün, bu yazımda Raspberry Pi Pico W ile yaptığım mors denemelerini ve Python kodunu paylaşacağım.
Yazıyı Raspberry Pi Pico W kullanarak hazırladım fakat bütün Pico modelleriyle çalışacağını düşünüyorum.
Şimdi Raspberry Pi Pico W’yi nasıl çalıştıracağınızı vs. anlatmayı planlamıyorum, buradaki amaç kısaca bir mors kodu dönüştürücüsü yarabilmek.
Thonny veya hangi editörü kullanıyorsanız o editörü kullanıp kodları çalıştırabilirsiniz. Kodlar varsayılan olarak picozero modülünü kullanmakta, bu modül ile Raspberry Pi Pico W’nin dahili LED’ini yakarak Morse yapıyoruz. Kodda gerekli değişiklikleri yaparak farklı PIN’lere sinyal gönderip, Buzzer veya harici LED de yakabilirsiniz.
Önizleme
Kaynak Kodları
###################################################### # Raspberry Pi Pico W ile Mors Kodu Denemeleri # # Evrim Altay KOLUAÇIK # 27 Ocak 2025 - Antalya ###################################################### from picozero import pico_temp_sensor, pico_led from time import sleep TABLE = { 'A': '.-', 'B': '-...', 'C': '.-.-', 'D': '-..', 'E': '.', 'F': '..-.', 'G': '--.', 'H': '....', 'I': '..', 'J': '.---', 'K': '-.-', 'L': '.-..', 'M': '--', 'N': '-.', 'O': '---', 'P': '.--.', 'Q': '--.-', 'R': '.-.', 'S': '...', 'T': '-', 'U': '..-', 'V': '...-', 'Y': '-.--', 'Z': '--..', ' ': '/' } DIT_SECONDS=0.15 DAH_IN_DIT=3 INTRACHAR_SPACE=1 INTER_CHAR_SPACE=3 WORD_SPACE=7 def decode(text): text = text.upper() decoded = [] for char in text: if char in TABLE: decoded.append(TABLE[char]) return decoded def on(): pico_led.on() def off(): pico_led.off() def onFor(time): on() sleep(time) off() def morse(text, indefinite=False, loopOnly=1): print(f'Metin algılandı: {text}') text += ' ' morse = decode(text) print(f'Mors çevrimi yapıldı: {morse}') if indefinite: print('Sonsuz tekrar modu aktif') if loopOnly != 1: print(f'{loopOnly} kere tekrar edecek.') loopCount=1 while True: print(f'{loopCount}. yayın yapılıyor...') lightup(morse) if loopCount >= loopOnly and not indefinite: break else: loopCount += 1 print(f'Toplam {loopCount} yayın yapıldı.') print('İşlem sonlandırılıyor...') def lightup(morse): for char in morse: for code in char: wasSpace = False if code == ".": onFor(DIT_SECONDS * 1) elif code == '-': onFor(DIT_SECONDS * DAH_IN_DIT) elif code == '/': wasSpace = True sleep(DIT_SECONDS * WORD_SPACE) if not wasSpace: sleep(DIT_SECONDS * INTRACHAR_SPACE) if not wasSpace: sleep(DIT_SECONDS * INTER_CHAR_SPACE) else: wasSpace = False morse('evrim', loopOnly=4)
Kodu Kullanmak
Çok da karışık olmasa gerek, en sondaki gibi morse fonksiyonunu çağırarak otomatik olarak dönüşüm yapılmasını sağlayabilirsiniz. Varsayılan olarak 1 defa yayın yapılacak ve sonra sonlandırılacak.
morse('evrim')
Tekrar Sayısı
Eğer belirli bir sayıda yayın yapmak istiyorsanız aşağıdaki şekilde morse fonksiyonuna loopOnly parametresini gönderebilirsiniz.
morse('evrim', loopOnly=4)
Sonsuz Yayın
Sonsuz yayın için morse fonksiyonuna indefinite=True parametresini girebilirsiniz.
morse('evrim', indefinite=True)
Farklı Bir Pin Kullanmak
Bunu on ve off fonksiyonlarında gerekli güncellemeleri yaparak başarabilirsiniz. Dahili LED ile birlikte harici LED’ler ve Buzzer gibi komponentler ile projenizi çeşitlendirebilirsiniz.
GitHub
Kodlara GitHub üzerinden de ulaşabilir, katkıda bulunabilirsiniz.
Son
Takıldığınız yerler olursa yorum kısmından bana ulaşabilirsiniz. Diğer Python yazılarıma veya Raspberry Pi yazılarıma göz atabilirsiniz. Okuduğunuz için teşekkürler.