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.

../_images/list_Morse_Code_Generator.png

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

Name

ARTIKEL IN DIESEM KIT

LINK

Raphael Kit

337

Raphael Kit

Sie können sie auch einzeln über die folgenden Links kaufen.

KOMPONENTENBESCHREIBUNG

KAUF-LINK

GPIO-Erweiterungsplatine

BUY

Steckbrett

BUY

Jumper-Kabel

BUY

Widerstand

BUY

LED

BUY

Summer

-

Transistor

BUY

Schaltplan

T-Board Name

physical

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 auf. (Achten Sie auf die Pole des Buzzers: Das + Zeichen kennzeichnet den positiven Pol, der andere den negativen.)

../_images/image269.png

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.

Phänomen-Bild

../_images/image270.jpeg