Pro-Notes

2025-02-12 20:48:21
Morse Send rp2040 circuitpython
# main.py
import board
import time
import sys
import select
from morse_lib import MorseTransmitter
 
MORSE_WPM = 11
HALT_COMMAND = '~'
 
# Инициализация передатчика Морзе
morse = MorseTransmitter(pin=board.GP3, wpm=MORSE_WPM)
 
def process_buffer(buffer):
    if buffer:
        char = buffer.pop(0)
        print(f"send:\"{char}\"<<\"{(''.join(buffer))}\" \r", end='')
        morse.transmit(char)
        if not buffer:
            print(f"send:\"\"<<\"{(''.join(buffer))}\"    \r", end='')
#            print()
    return True
 
 
print("\nSource: https://ur4uqu.com:445/wiki/doku.php?id=pub:arduino:rp2040:morse-send")
print(f"\nВводите символы. Нажмите '{HALT_COMMAND}' для очистки буфера.\n>>", end='')
input_buffer = []
 
while True:
    # Проверяем, есть ли данные для чтения
    rlist, _, _ = select.select([sys.stdin], [], [], 0.1)
    if rlist:
        char = sys.stdin.read(1)
        if char:
            if char == HALT_COMMAND:
                #print("\nОчистка буфера.")
                input_buffer.clear()
                print()  # Добавляем пустую строку после очистки буфера
            else:
                input_buffer.append(char)
                #print(f"\rbuffer:\"{(''.join(input_buffer))}\"", end='')
    else:
        # Обрабатываем символы из буфера
        process_buffer(input_buffer)
 
    time.sleep(0.01)  # Небольшая задержка для стабильности
← Previous Next →
Back to list