Raspberry Pi Pico W Mors Denemeleri
KategorilerBilişimGenelİnternetPythonRaspberry Pi

Raspberry Pi Pico W Mors Denemeleri

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.

Bir yanıt yazın

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir