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!
3.1.10 Morse-Code-Generator¶
Einführung¶
In diesem Projekt werden wir einen Morse-Code-Generator erstellen. Geben Sie eine Reihe von englischen Buchstaben in den Raspberry Pi ein, um sie als Morsecode darzustellen.
Benötigte Komponenten¶
Für dieses Projekt benötigen wir die folgenden Komponenten.
Es ist definitiv praktisch, ein komplettes Kit zu kaufen. Hier ist der Link:
Name |
ARTIKEL IN DIESEM KIT |
LINK |
---|---|---|
Raphael Kit |
337 |
Sie können sie auch einzeln über die folgenden Links kaufen.
KOMPONENTENBESCHREIBUNG |
KAUF-LINK |
---|---|
- |
|
Schaltplan¶
T-Board Name |
physical |
wiringPi |
BCM |
GPIO17 |
Pin 11 |
0 |
17 |
GPIO22 |
Pin 15 |
3 |
22 |
Experimentelle Verfahren¶
Schritt 1: Bauen Sie den Schaltkreis auf. (Achten Sie auf die Pole des Buzzers: Das + Zeichen kennzeichnet den positiven Pol, der andere den negativen.)
Schritt 2: Öffnen Sie die Code-Datei.
cd ~/raphael-kit/c/3.1.10/
Schritt 3: Kompilieren Sie den Code.
gcc 3.1.10_MorseCodeGenerator.c -lwiringPi
Schritt 4: Führen Sie die oben genannte ausführbare Datei aus.
sudo ./a.out
Nachdem das Programm ausgeführt wurde, geben Sie eine Reihe von Zeichen ein, und der Buzzer sowie die LED senden die entsprechenden Morsecode-Signale.
Bemerkung
Wenn es nach dem Starten nicht funktioniert oder eine Fehlermeldung angezeigt wird: "wiringPi.h: Datei oder Verzeichnis nicht gefunden", beziehen Sie sich bitte auf Installieren und Überprüfen von WiringPi.
Code-Erklärung
struct MORSE{
char word;
unsigned char *code;
};
struct MORSE morseDict[]=
{
{'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 MORSE ist das Wörterbuch des Morse-Codes und enthält Buchstaben A-Z, Zahlen 0-9 und Zeichen “?” “/” “:” “,” “.” “;” “!” “@”.
char *lookup(char key,struct MORSE *dict,int length)
{
for (int i=0;i<length;i++)
{
if(dict[i].word==key){
return dict[i].code;
}
}
}
Die Funktion lookup()
funktioniert durch „Nachschlagen im Wörterbuch“. Definieren Sie
einen key
, suchen Sie nach denselben Wörtern wie key
in der Struktur morseDict
und geben Sie die entsprechende Information - den code
des bestimmten
Worts zurück.
void on(){
digitalWrite(ALedPin,HIGH);
digitalWrite(BeepPin,HIGH);
}
Erstellen Sie eine Funktion on()
, um den Summer und die LED zu starten.
void off(){
digitalWrite(ALedPin,LOW);
digitalWrite(BeepPin,LOW);
}
Die Funktion off()
schaltet den Summer und die LED aus.
void beep(int dt){
on();
delay(dt);
off();
delay(dt);
}
Definieren Sie eine Funktion beep()
, damit der Summer und die LED in einem bestimmten Intervall von dt Töne abgeben
und blinken.
void morsecode(char *code){
int pause = 250;
char *point = NULL;
int length = sizeof(morseDict)/sizeof(morseDict[0]);
for (int i=0;i<strlen(code);i++)
{
point=lookup(code[i],morseDict,length);
for (int j=0;j<strlen(point);j++){
if (point[j]=='0')
{
beep(pause/2);
}else if(point[j]=='1')
{
beep(pause);
}
delay(pause);
}
}
}
Die Funktion morsecode()
wird verwendet, um den Morse-Code der eingegebenen
Zeichen zu verarbeiten, indem das „1“ des Codes ständig Töne oder Licht abgibt
und das „0“ kurz Töne oder Licht aussendet, z.B., Eingabe „SOS“, und es
gibt ein Signal, das drei kurze, drei lange und dann drei kurze Segmente enthält „· · · - - - · · ·”.
int toupper(int c)
{
if ((c >= 'a') && (c <= 'z'))
return c + ('A' - 'a');
return c;
}
char *strupr(char *str)
{
char *orign=str;
for (; *str!='\0'; str++)
*str = toupper(*str);
return orign;
}
Bevor Sie den Code schreiben, müssen Sie die Buchstaben zu Großbuchstaben vereinheitlichen.
void main(){
setup();
char *code;
int length=8;
code = (char*)malloc(sizeof(char)*length);
while (1){
printf("Please input the messenger:");
scanf("%s",code);
code=strupr(code);
printf("%s\n",code);
morsecode(code);
}
}
Wenn Sie die entsprechenden Zeichen mit der Tastatur eingeben,
wird code=strupr(code)
die eingegebenen Buchstaben in ihre Großbuchstabenform umwandeln.
Printf()
druckt dann den Klartext auf den Computerbildschirm, und die
Funktion morsecod()
lässt den Summer und die LED Morse-Code aussenden.
Beachten Sie, dass die Länge des eingegebenen Zeichens die Länge (kann revidiert werden) nicht überschreiten darf.