Note
Bonjour et bienvenue dans la Communauté Facebook des passionnés de Raspberry Pi, Arduino et ESP32 de SunFounder ! Plongez plus profondément dans l’univers des Raspberry Pi, Arduino et ESP32 avec d’autres passionnés.
Pourquoi rejoindre ?
Support d’experts : Résolvez les problèmes après-vente et les défis techniques avec l’aide de notre communauté et de notre équipe.
Apprendre et partager : Échangez des astuces et des tutoriels pour améliorer vos compétences.
Aperçus exclusifs : Accédez en avant-première aux annonces de nouveaux produits et aux aperçus.
Réductions spéciales : Profitez de réductions exclusives sur nos produits les plus récents.
Promotions festives et cadeaux : Participez à des cadeaux et des promotions de vacances.
👉 Prêt à explorer et à créer avec nous ? Cliquez [Ici] et rejoignez-nous aujourd’hui !
4.1.13 Générateur de code Morse
Introduction
Dans ce projet, nous allons créer un générateur de code Morse, où vous saisirez une série de lettres anglaises dans le Raspberry Pi pour qu’elles soient converties en code Morse.
Composants nécessaires
Pour ce projet, nous avons besoin des composants suivants.
Il est certainement pratique d’acheter un kit complet, voici le lien :
Nom |
ARTICLES DANS CE KIT |
LIEN |
|---|---|---|
Kit Raphael |
337 |
Vous pouvez également les acheter séparément via les liens ci-dessous.
INTRODUCTION DU COMPOSANT |
LIEN D’ACHAT |
|---|---|
- |
|
Schéma
Nom T-Board |
physique |
wiringPi |
BCM |
GPIO17 |
Pin 11 |
0 |
17 |
GPIO22 |
Pin 15 |
3 |
22 |
Procédures expérimentales
Étape 1 : Construire le circuit. (Attention aux pôles du buzzer : celui avec l’étiquette + est le pôle positif et l’autre est le négatif.)
Étape 2 : Ouvrir le fichier de code.
cd ~/raphael-kit/python-pi5
Étape 3 : Exécuter.
sudo python3 4.1.16_MorseCodeGenerator_zero.py
Après le démarrage du programme, tapez une série de caractères, et le buzzer ainsi que la LED enverront les signaux correspondants en code Morse.
Avertissement
Si vous recevez le message d’erreur RuntimeError: Cannot determine SOC peripheral base address, veuillez consulter Si « gpiozero » ne fonctionne pas.
Code
#!/usr/bin/env python3
from gpiozero import Buzzer, LED
import time
# Initialize Buzzer and LED to GPIO pins
BeepPin = Buzzer(22)
ALedPin = LED(17)
# Morse code representation for characters
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 on():
""" Turn on the buzzer and LED. """
BeepPin.on()
ALedPin.on()
def off():
""" Turn off the buzzer and LED. """
BeepPin.off()
ALedPin.off()
def beep(dt): # dt for delay time.
"""
Produce a beep sound and LED flash for the specified duration.
:param dt: Duration for the beep and flash.
"""
on()
time.sleep(dt)
off()
time.sleep(dt)
def morsecode(code):
"""
Convert the input code into Morse code and signal it using the buzzer and LED.
:param code: The text to be converted to Morse code.
"""
pause = 0.25
for letter in code:
for tap in MORSECODE[letter]:
if tap == '0':
beep(pause / 2) # Short beep for dot
if tap == '1':
beep(pause) # Long beep for dash
time.sleep(pause) # Pause between letters
def destroy():
""" Clean up resources on script termination. """
print("")
BeepPin.off()
ALedPin.off()
try:
while True:
code = input("Please input the messenger:")
code = code.upper() # Convert to uppercase for Morse code lookup
print(code)
morsecode(code)
except KeyboardInterrupt:
destroy()
Explication du code
Ce code importe les classes Buzzer et LED de la bibliothèque gpiozero. Ces classes sont essentielles pour contrôler les dispositifs GPIO correspondants sur le Raspberry Pi.
#!/usr/bin/env python3 from gpiozero import Buzzer, LED import time
Initialise le buzzer sur la broche GPIO 22 et la LED sur la broche GPIO 17, facilitant le contrôle de ces composants.
# Initialize Buzzer and LED to GPIO pins BeepPin = Buzzer(22) ALedPin = LED(17)
Définit la structure
MORSE, un dictionnaire contenant les représentations en code Morse pour les caractères de A à Z, les nombres de 0 à 9, et des symboles comme “?”, “/”, “:”, “,”, “.”, “;”, “!”, “@”, avec0signifiant un point et1indiquant un tiret.# Morse code representation for characters 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', }
La fonction
on()démarre le buzzer et la LED. La fonctionoff()est utilisée pour éteindre le buzzer et la LED.def on(): """ Turn on the buzzer and LED. """ BeepPin.on() ALedPin.on() def off(): """ Turn off the buzzer and LED. """ BeepPin.off() ALedPin.off()
Définit une fonction
beep()pour faire émettre au buzzer et à la LED des sons et des clignotements à un certain intervalle dedt.def beep(dt): # dt for delay time. """ Produce a beep sound and LED flash for the specified duration. :param dt: Duration for the beep and flash. """ on() time.sleep(dt) off() time.sleep(dt)
La fonction
morsecode()est utilisée pour traiter le code Morse des caractères entrés en faisant émettre des sons ou des lumières pour les “1” du code et brièvement pour les “0”, par exemple, en entrant “SOS”, il y aura un signal contenant trois courts, trois longs puis trois courts segments “ · · · - - - · · · ”.def morsecode(code): """ Convert the input code into Morse code and signal it using the buzzer and LED. :param code: The text to be converted to Morse code. """ pause = 0.25 for letter in code: for tap in MORSECODE[letter]: if tap == '0': beep(pause / 2) # Short beep for dot if tap == '1': beep(pause) # Long beep for dash time.sleep(pause) # Pause between letters
Defines a function named
destroythat turns off both the buzzer and the LED. This function is intended to be called when the script is terminated to ensure that the GPIO pins are not left in an active state.def destroy(): """ Clean up resources on script termination. """ print("") BeepPin.off() ALedPin.off()
When you type the relevant characters with the keyboard,
upper()will convert the input letters to their capital form.printf()then prints the clear text on the computer screen, and themorsecod()function causes the buzzer and the LED to emit Morse code.try: while True: code = input("Please input the messenger:") code = code.upper() # Convert to uppercase for Morse code lookup print(code) morsecode(code) except KeyboardInterrupt: destroy()