Bemerkung

Hallo und willkommen in der SunFounder Raspberry Pi & Arduino & ESP32 Enthusiasten-Gemeinschaft auf Facebook! Tauchen Sie tiefer ein in die Welt von Raspberry Pi, Arduino und ESP32 mit anderen Enthusiasten.

Warum beitreten?

  • Expertenunterstützung: Lösen Sie Nachverkaufsprobleme und technische Herausforderungen mit Hilfe unserer Gemeinschaft und unseres Teams.

  • Lernen & Teilen: Tauschen Sie Tipps und Anleitungen aus, um Ihre Fähigkeiten zu verbessern.

  • Exklusive Vorschauen: Erhalten Sie frühzeitigen Zugang zu neuen Produktankündigungen und exklusiven Einblicken.

  • Spezialrabatte: Genießen Sie exklusive Rabatte auf unsere neuesten Produkte.

  • Festliche Aktionen und Gewinnspiele: Nehmen Sie an Gewinnspielen und Feiertagsaktionen teil.

👉 Sind Sie bereit, mit uns zu erkunden und zu erschaffen? Klicken Sie auf [hier] und treten Sie heute bei!

4.1.16 Morse-Code-Generator

Einleitung

In diesem Projekt erstellen wir einen Morse-Code-Generator, bei dem Sie auf einem Raspberry Pi eine Reihe von englischen Buchstaben eingeben, um sie in Morsecode darzustellen.

Benötigte Komponenten

Für dieses Projekt benötigen wir die folgenden Komponenten.

../_images/list_Morse_Code_Generator.png

Es ist definitiv praktisch, ein komplettes Set zu kaufen. Hier ist der Link:

Name

ARTIKEL IN DIESEM KIT

LINK

Raphael Kit

337

Raphael Kit

Sie können diese auch einzeln über die untenstehenden Links kaufen.

KOMPONENTENBESCHREIBUNG

KAUF-LINK

GPIO-Erweiterungsplatine

BUY

Steckbrett

BUY

Jumper-Kabel

BUY

Widerstand

BUY

LED

BUY

Summer

-

Transistor

BUY

Schaltplan

T-Board Name

physisch

wiringPi

BCM

GPIO17

Pin 11

0

17

GPIO22

Pin 15

3

22

../_images/Schematic_three_one11.png

Experimentelle Verfahren

Schritt 1: Bauen Sie den Schaltkreis. (Achten Sie auf die Pole des Buzzers: Der mit + gekennzeichnete ist der positive Pol und der andere ist der negative.)

../_images/image269.png

Schritt 2: Öffnen Sie die Code-Datei.

cd ~/raphael-kit/python

Schritt 3: Starten.

sudo python3 4.1.16_MorseCodeGenerator.py

Nachdem das Programm läuft, geben Sie eine Reihe von Zeichen ein, und der Buzzer sowie die LED senden die entsprechenden Morsecode-Signale.

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()

Code-Erklärung

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

Diese Struktur namens MORSE ist das Wörterbuch des Morse-Codes und enthält die Zeichen A-Z, die Zahlen 0-9 und die Zeichen „?“ „/“ „:“ „,“ „.“ „;“ „!“ „@“ .

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

Die Funktion on() aktiviert den Summer und die LED.

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

Die Funktion off() wird verwendet, um den Summer und die LED auszuschalten.

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

Definieren Sie eine Funktion beep(), mit der der Summer und die LED in einem bestimmten Intervall von dt Töne ausgeben und blinken.

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)

Die Funktion morsecode() wird verwendet, um den Morsecode von eingegebenen Zeichen zu verarbeiten. Dabei lässt der „1“-Code kontinuierlich Töne oder Lichter erzeugen und der „0“-Code gibt kurz Töne oder Lichter aus, z.B. bei der Eingabe von „SOS“ gibt es ein Signal, das aus drei kurzen, drei langen und dann drei kurzen Segmenten „ · · · - - - · · · “ besteht.

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

Wenn Sie die entsprechenden Zeichen über die Tastatur eingeben, konvertiert upper() die eingegebenen Buchstaben in ihre Großform.

printf() gibt dann den Klartext auf dem Computerbildschirm aus, und die Funktion morsecod() lässt den Summer und die LED Morsecode ausgeben.

Phänomen-Bild

../_images/image270.jpeg