.. 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 [|link_sf_facebook|] et rejoignez-nous aujourd'hui ! .. _4.1.16_py: 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. .. image:: ../img/list_Morse_Code_Generator.png :align: center Il est certainement pratique d'acheter un kit complet, voici le lien : .. list-table:: :widths: 20 20 20 :header-rows: 1 * - Nom - ÉLÉMENTS DANS CE KIT - LIEN * - Kit Raphael - 337 - |link_Raphael_kit| Vous pouvez également les acheter séparément à partir des liens ci-dessous. .. list-table:: :widths: 30 20 :header-rows: 1 * - INTRODUCTION DU COMPOSANT - LIEN D'ACHAT * - :ref:`cpn_gpio_extension_board` - |link_gpio_board_buy| * - :ref:`cpn_breadboard` - |link_breadboard_buy| * - :ref:`cpn_wires` - |link_wires_buy| * - :ref:`cpn_resistor` - |link_resistor_buy| * - :ref:`cpn_led` - |link_led_buy| * - :ref:`cpn_buzzer` - \- * - :ref:`cpn_transistor` - |link_transistor_buy| Schéma de Câblage -------------------------- ============ ======== ======== === Nom T-Board physique wiringPi BCM GPIO17 Pin 11 0 17 GPIO22 Pin 15 3 22 ============ ======== ======== === .. image:: ../img/Schematic_three_one11.png :align: center 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.) .. image:: ../img/image269.png **Étape 2** : Ouvrez le fichier de code. .. raw:: html .. code-block:: cd ~/raphael-kit/python **Étape 3** : Exécutez. .. raw:: html .. code-block:: 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** .. code-block:: python #!/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** .. code-block:: python 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 “?” “/” “:” “,” “.” “;” “!” “@”. .. code-block:: python def on():     GPIO.output(BeepPin, 1)     GPIO.output(ALedPin, 1) La fonction ``on()`` démarre le buzzer et la LED. .. code-block:: python def off():     GPIO.output(BeepPin, 0)     GPIO.output(ALedPin, 0) La fonction ``off()`` est utilisée pour éteindre le buzzer et la LED. .. code-block:: python 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``. .. code-block:: python 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 “ · · · - - - · · · ”. .. code-block:: python 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 ----------------------- .. image:: ../img/image270.jpeg :align: center