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.13 GAME - NichtNicht

Einführung

In diesem Projekt werden wir ein interessantes Spielgerät erstellen, das wir „Nicht Nicht“ nennen.

Während des Spiels wird das Punktmatrix zufällig einen Pfeil aktualisieren. Ihre Aufgabe ist es, innerhalb einer begrenzten Zeit die Taste in die entgegengesetzte Richtung des Pfeils zu drücken. Wenn die Zeit abgelaufen ist oder die Taste in die gleiche Richtung wie der Pfeil gedrückt wird, sind Sie aus dem Spiel.

Dieses Spiel kann wirklich Ihr umgekehrtes Denken schulen. Sollen wir es mal versuchen?

Benötigte Komponenten

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

../_images/list_GAME_14_NotNot.png

Es ist definitiv praktisch, ein ganzes Kit 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.

KOMPONENTEN BESCHREIBUNG

KAUF LINK

GPIO-Erweiterungsplatine

BUY

Steckbrett

BUY

Jumper-Kabel

BUY

LED Matrix Modul

BUY

Taste

BUY

Schaltplan

T-Board Name

physical

wiringPi

BCM

GPIO22

Pin 15

3

22

GPIO23

Pin 16

4

23

SPIMOSI

Pin 19

12

MOSI

SPICE0

pin 24

10

CE0

SPISCLK

Pin 23

14

SCLK

../_images/Schematic_notnot.png

Experimentelle Verfahren

Schritt 1: Schalten Sie die Schaltung.

../_images/3.1.14game_notnot.png

Bemerkung

Aktivieren Sie das SPI, bevor Sie das Experiment starten. Weitere Details finden Sie unter SPI Konfiguration. Auch die BCM2835 Bibliothek wird benötigt.

Schritt 2: Navigieren Sie zum Ordner des Codes.

cd ~/raphael-kit/c/3.1.13/

Schritt 3: Kompilieren Sie den Code.

make

Schritt 4: Führen Sie die ausführbare Datei aus.

sudo ./3.1.13_GAME_NotNot

Nachdem das Programm gestartet ist, wird auf dem Punktmatrix zufällig ein linker oder rechter Pfeil angezeigt. Ihre Aufgabe ist es, die Taste in die entgegengesetzte Richtung des Pfeils zu drücken. Dann erscheint ein „√“ auf dem Punktmatrix. Wenn Sie die Taste in die gleiche Richtung wie der Pfeil drücken, sind Sie aus dem Spiel und das Punktmatrix zeigt ein „x“ an. Sie können auch 2 neue Tasten hinzufügen oder sie durch Joystick-Tasten für oben, unten, links und rechts - 4 Richtungen ersetzen, um die Schwierigkeit des Spiels zu erhöhen.

Bemerkung

Wenn es nach dem Start nicht funktioniert oder eine Fehlermeldung erscheint: "wiringPi.h: Datei oder Verzeichnis nicht gefunden", beachten Sie bitte Installieren und Überprüfen von WiringPi.

Code-Erklärung

Basierend auf 1.1.6 LED Dot Matrix Modul fügt dieses Projekt 2 Tasten hinzu, um ein amüsantes Spielgerät zu erstellen.

Der gesamte Programmablauf ist wie folgt:

  1. Verwenden Sie die Systemzeit, um eine zufällige 0 oder 1 zu generieren.

  2. Zeigen Sie ein zufälliges linkes oder rechtes Pfeilmuster an.

  3. Drücken Sie die Taste und bestimmen Sie das Ergebnis.

  4. Zeigen Sie das richtige oder falsche Muster an.

../_images/3.1.14_notnot1.png
int get_index()
{
    srand((unsigned)time(NULL));
    return rand()%2;
}

Der Seed des Systems wird durch die Systemzeit geändert, d.h. srand((unsigned)time(NULL)), so dass jedes Mal, wenn die rand-Funktion aufgerufen wird, der erhaltene Wert völlig zufällig ist. Schließlich wird das erhaltene Ergebnis durch 2 geteilt, sodass die erhaltenen Werte 0 und 1 sind.

int get_key(uint num)
{
    while (1)
    {
        if (1 == bcm2835_gpio_lev(AButtonPin) && num == 0){
            return 1;
        }
        else if (1 == bcm2835_gpio_lev(BButtonPin) && num == 1){
            return 1;
        }
        else if (1 == bcm2835_gpio_lev(AButtonPin) && num == 1){
            return 0;
        }
        else if (1 == bcm2835_gpio_lev(BButtonPin) && num == 0){
            return 0;
        }
    }
}

Es wird bestimmt, welche Taste gedrückt wurde und dies mit der Richtung des Pfeils auf der Punktmatrix verglichen, wodurch das endgültige Ergebnis von 0 oder 1 ermittelt wird.

../_images/3.1.14_getkey.png
void display(uint index){
    uchar i;
    if (stage == 0){
        for(i=1;i<9;i++)
        {
            Write_Max7219(i,arrow[index][i-1]);
        }
    }
    else if(stage == 1){
        for(i=1;i<9;i++)
        {
            Write_Max7219(i,check[index][i-1]);
        }
    }
}

Je nach Wert von stage und index wird der left or right Pfeil oder das Muster right or wrong angezeigt.

../_images/3.1.14_display.png