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.
Es ist definitiv praktisch, ein komplettes Set zu kaufen. Hier ist der Link:
Name |
ARTIKEL IN DIESEM KIT |
LINK |
---|---|---|
Raphael Kit |
337 |
Sie können diese auch einzeln über die untenstehenden Links kaufen.
KOMPONENTENBESCHREIBUNG |
KAUF-LINK |
---|---|
- |
|
Schaltplan¶
T-Board Name |
physisch |
wiringPi |
BCM |
GPIO17 |
Pin 11 |
0 |
17 |
GPIO22 |
Pin 15 |
3 |
22 |
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.)
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.