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.
Es definitivamente conveniente comprar un kit completo, aquí tienes el enlace:
Nombre |
ARTÍCULOS EN ESTE KIT |
ENLACE |
|---|---|---|
Kit Raphael |
337 |
También puedes comprarlos por separado en los enlaces a continuación.
INTRODUCCIÓN DE COMPONENTES |
ENLACE DE COMPRA |
|---|---|
- |
|
Diagrama Esquemático
Nombre T-Board |
Conexión física |
WiringPi |
BCM |
GPIO17 |
Pin 11 |
0 |
17 |
GPIO22 |
Pin 15 |
3 |
22 |
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).
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