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.16 Générateur de Code Morse

Introduction

Dans ce projet, nous allons créer un générateur de code Morse, où vous tapez une série de lettres anglaises dans le Raspberry Pi pour les transformer en code Morse.

Composants Requis

Pour ce projet, nous avons besoin des composants suivants.

../_images/list_Morse_Code_Generator.png

Il est certainement pratique d’acheter un kit complet, voici le lien :

Nom

ÉLÉMENTS DANS CE KIT

LIEN

Kit Raphael

337

Raphael Kit

Vous pouvez également les acheter séparément à partir des liens ci-dessous.

INTRODUCTION DU COMPOSANT

LIEN D’ACHAT

Carte d’extension GPIO

ACHETER

Plaque d’expérimentation (Breadboard)

ACHETER

Fils de Liaison

ACHETER

Résistance

ACHETER

LED

ACHETER

Buzzer

-

Transistor

ACHETER

Schéma de Câblage

Nom T-Board

physique

wiringPi

BCM

GPIO17

Pin 11

0

17

GPIO22

Pin 15

3

22

../_images/Schematic_three_one11.png

Procédures Expérimentales

Étape 1 : Construisez le circuit. (Faites attention aux pôles du buzzer : Celui avec le label + est le pôle positif et l’autre est le pôle négatif.)

../_images/image269.png

Étape 2 : Ouvrez le fichier de code.

cd ~/raphael-kit/python

Étape 3 : Exécutez.

sudo python3 4.1.16_MorseCodeGenerator.py

Après l’exécution du programme, tapez une série de caractères, et le buzzer ainsi que la LED enverront les signaux correspondants en code Morse. Code

#!/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()

Explication du Code

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',
    }

Cette structure MORSE est le dictionnaire du code Morse, contenant les caractères A-Z, les chiffres 0-9 et les signes “?” “/” “:” “,” “.” “;” “!” “@”.

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

La fonction on() démarre le buzzer et la LED.

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

La fonction off() est utilisée pour éteindre le buzzer et la LED.

def beep(dt):   # dt pour le temps de retard.
    on()
    time.sleep(dt)
    off()
    time.sleep(dt)

Définir une fonction beep() pour faire émettre des sons et clignoter la LED et le buzzer à un intervalle donné 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 fonction morsecode() est utilisée pour traiter le code Morse des caractères entrés en faisant en sorte que les “1” du code émettent des sons ou des lumières et que les “0” émettent brièvement des sons ou des lumières. Par exemple, entrez “SOS”, et il y aura un signal contenant trois segments courts, trois longs, puis trois courts “ · · · - - - · · · ”.

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

Lorsque vous tapez les caractères correspondants avec le clavier, upper() convertira les lettres entrées en majuscules.

printf() imprime ensuite le texte en clair sur l’écran de l’ordinateur, et la fonction morsecod() fait émettre le code Morse par le buzzer et la LED.

Image du Phénomène

../_images/image270.jpeg