Nota

¡Hola, bienvenido a la Comunidad de Entusiastas de SunFounder para Raspberry Pi, Arduino y ESP32 en Facebook! Sumérgete en el mundo de Raspberry Pi, Arduino y ESP32 con otros entusiastas.

¿Por qué unirse?

  • Soporte de Expertos: Resuelve problemas post-venta y desafíos técnicos con la ayuda de nuestra comunidad y equipo.

  • Aprende y Comparte: Intercambia consejos y tutoriales para mejorar tus habilidades.

  • Previews Exclusivos: Obtén acceso anticipado a nuevos anuncios de productos y adelantos exclusivos.

  • Descuentos Especiales: Disfruta de descuentos exclusivos en nuestros productos más recientes.

  • Promociones y Sorteos Festivos: Participa en sorteos y promociones festivas.

👉 ¿Listo para explorar y crear con nosotros? ¡Haz clic en [Aquí] y únete hoy!

4.1.16 Generador de Código Morse

Introducción

En este proyecto, haremos un generador de código Morse, donde escribirás una serie de letras en inglés en la Raspberry Pi para que aparezcan como código Morse.

Componentes Requeridos

En este proyecto, necesitaremos los siguientes componentes.

../_images/list_Morse_Code_Generator.png

Es definitivamente conveniente comprar un kit completo, aquí tienes el enlace:

Nombre

ARTÍCULOS EN ESTE KIT

ENLACE

Kit Raphael

337

Raphael Kit

También puedes comprarlos por separado en los enlaces a continuación.

INTRODUCCIÓN DE COMPONENTES

ENLACE DE COMPRA

Placa de Extensión GPIO

COMPRAR

Protoboard

COMPRAR

Cables de Puente

COMPRAR

Resistor

COMPRAR

LED

COMPRAR

Zumbador

-

Transistor

COMPRAR

Diagrama Esquemático

Nombre T-Board

Conexión física

WiringPi

BCM

GPIO17

Pin 11

0

17

GPIO22

Pin 15

3

22

../_images/Schematic_three_one11.png

Procedimientos Experimentales

Paso 1: Construye el circuito. (Presta atención a los polos del zumbador: El que tiene la etiqueta + es el polo positivo y el otro es el negativo).

../_images/image269.png

Paso 2: Abre el archivo de código.

cd ~/raphael-kit/python

Paso 3: Ejecuta.

sudo python3 4.1.16_MorseCodeGenerator.py

Después de que el programa se ejecute, escribe una serie de caracteres, y el zumbador y el LED enviarán las señales de código Morse correspondientes.

Código

#!/usr/bin/env python3
import RPi.GPIO as GPIO
import time

BeepPin=22
ALedPin=17

MORSECODE = {
    'A':'01', 'B':'1000', 'C':'1010', 'D':'100', 'E':'0', 'F':'0010', 'G':'110',
    'H':'0000', 'I':'00', 'J':'0111', 'K':'101', 'L':'0100', 'M':'11', 'N':'10',
    'O':'111', 'P':'0110', 'Q':'1101', 'R':'010', 'S':'000', 'T':'1',
    'U':'001', 'V':'0001', 'W':'011', 'X':'1001', 'Y':'1011', 'Z':'1100',
    '1':'01111', '2':'00111', '3':'00011', '4':'00001', '5':'00000',
    '6':'10000', '7':'11000', '8':'11100', '9':'11110', '0':'11111',
    '?':'001100', '/':'10010', ',':'110011', '.':'010101', ';':'101010',
    '!':'101011', '@':'011010', ':':'111000',
    }

def setup():
    GPIO.setmode(GPIO.BCM)
    GPIO.setup(BeepPin, GPIO.OUT, initial=GPIO.LOW)
    GPIO.setup(ALedPin,GPIO.OUT,initial=GPIO.LOW)

def on():
    GPIO.output(BeepPin, 1)
    GPIO.output(ALedPin, 1)

def off():
    GPIO.output(BeepPin, 0)
    GPIO.output(ALedPin, 0)

def beep(dt):       # dt for delay time.
    on()
    time.sleep(dt)
    off()
    time.sleep(dt)

def morsecode(code):
    pause = 0.25
    for letter in code:
        for tap in MORSECODE[letter]:
            if tap == '0':
                beep(pause/2)
            if tap == '1':
                beep(pause)
        time.sleep(pause)

def main():
    while True:
        code=input("Please input the messenger:")
        code = code.upper()
        print(code)
        morsecode(code)

def destroy():
    print("")
    GPIO.output(BeepPin, GPIO.LOW)
    GPIO.output(ALedPin, GPIO.LOW)
    GPIO.cleanup()

if __name__ == '__main__':
    setup()
    try:
        main()
    except KeyboardInterrupt:
        destroy()

Explicación del Código

MORSECODE = {
    'A':'01', 'B':'1000', 'C':'1010', 'D':'100', 'E':'0', 'F':'0010', 'G':'110',
    'H':'0000', 'I':'00', 'J':'0111', 'K':'101', 'L':'0100', 'M':'11', 'N':'10',
    'O':'111', 'P':'0110', 'Q':'1101', 'R':'010', 'S':'000', 'T':'1',
    'U':'001', 'V':'0001', 'W':'011', 'X':'1001', 'Y':'1011', 'Z':'1100',
    '1':'01111', '2':'00111', '3':'00011', '4':'00001', '5':'00000',
    '6':'10000', '7':'11000', '8':'11100', '9':'11110', '0':'11111',
    '?':'001100', '/':'10010', ',':'110011', '.':'010101', ';':'101010',
    '!':'101011', '@':'011010', ':':'111000',
    }

Esta estructura MORSE es el diccionario del código Morse, que contiene los caracteres A-Z, los números 0-9 y los signos “?” “/” “:” “,” “.” “;” “!” “@”.

def on():
    GPIO.output(BeepPin, 1)
    GPIO.output(ALedPin, 1)

La función on() enciende el zumbador y el LED.

def off():
    GPIO.output(BeepPin, 0)
    GPIO.output(ALedPin, 0)

La función off() se utiliza para apagar el zumbador y el LED.

def beep(dt):   # x for dalay time.
    on()
    time.sleep(dt)
    off()
    time.sleep(dt)

Define una función beep() para que el zumbador y el LED emitan sonidos y parpadeen en un intervalo determinado de dt.

def morsecode(code):
    pause = 0.25
    for letter in code:
        for tap in MORSECODE[letter]:
            if tap == '0':
                beep(pause/2)
            if tap == '1':
                beep(pause)
        time.sleep(pause)

La función morsecode() se utiliza para procesar el código Morse de los caracteres de entrada haciendo que el «1» del código mantenga el sonido o la luz y el «0» emita sonido o luz brevemente, por ejemplo, al ingresar «SOS», habrá una señal que contiene tres segmentos cortos, tres largos y luego tres cortos « · · · - - - · · · «.

def main():
    while True:
        code=input("Please input the messenger:")
        code = code.upper()
        print(code)
        morsecode(code)

Cuando escribes los caracteres relevantes con el teclado, upper() convertirá las letras ingresadas a su forma en mayúscula.

print() luego imprime el texto claro en la pantalla de la computadora, y la función morsecode() hace que el zumbador y el LED emitan el código Morse.

Foto del Fenómeno

../_images/image270.jpeg