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!

6.2 Elektronischer Würfel

Hier verwenden wir einen Knopf, eine 7-Segment-Anzeige und den 74hc595, um einen elektronischen Würfel zu erstellen. Jedes Mal, wenn der Knopf gedrückt wird, wird eine zufällige Zahl zwischen 1 und 6 generiert und auf der 7-Segment-Anzeige dargestellt.

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

3 in 1 Starter Kit

380+

3 in 1 Starter Kit

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

KOMPONENTENVORSTELLUNG

KAUF-LINK

SunFounder R3 Platine

KAUFEN

Breadboard

KAUFEN

Jumper-Kabel

KAUFEN

Widerstand

KAUFEN

Knopf

KAUFEN

74HC595

KAUFEN

7-Segment-Anzeige

KAUFEN

Schaltplan

../_images/circuit_8.9_eeprom.png

Verkabelung

../_images/wiring_electronic_dice.png

Code

Bemerkung

  • Öffnen Sie die Datei 6.2.electronic_dice.ino im Pfad 3in1-kit\basic_project\6.2.electronic_dice.

  • Oder kopieren Sie diesen Code in die Arduino IDE.

  • Oder laden Sie den Code über den Arduino Web Editor hoch.

Nach erfolgreichem Hochladen des Codes zeigt die 7-Segment-Anzeige schnell die Zahlen 0-7 an. Wenn Sie den Knopf drücken, zeigt sie eine zufällige Zahl an und stoppt das Scrollen. Das Scrollen beginnt erneut, wenn Sie den Knopf wieder drücken.

Wie funktioniert das?

Dieses Projekt basiert auf 5.10 ShiftOut(Segmentanzeige) mit einem Knopf, um das Scrollen auf der 7-Segment-Anzeige zu starten/pausieren.

  1. Initialisieren Sie jeden Pin und lesen Sie den Wert des Knopfes.

    void setup ()
    {
    
        ...
        attachInterrupt(digitalPinToInterrupt(buttonPin), rollDice, FALLING);
    }
    
    • Der Interrupt wird hier verwendet, um den Zustand des Knopfes zu lesen. Der Standardwert von buttonPin ist niedrig und ändert sich von niedrig zu hoch, wenn der Knopf gedrückt wird.

    • rollDice stellt die Funktion dar, die aufgerufen wird, wenn der Interrupt ausgelöst wird. Sie dient zum Umschalten des Werts der Variablen state.

    • FALLING bedeutet, dass der Interrupt ausgelöst wird, wenn der buttonPin von niedrig zu hoch geht.

  2. Wenn die Variable state 0 ist, wird die Funktion showNumber() aufgerufen, um die 7-Segment-Anzeige eine zufällige Zahl zwischen 1 und 7 anzuzeigen.

    void loop()
    {
        if (state == 0) {
            showNumber((int)random(1, 7));
            delay(50);
        }
    }
    
  3. Über die Funktion rollDice().

    void rollDice() {
        state = !state;
    }
    

    Wenn diese Funktion aufgerufen wird, wechselt sie den Wert von state, zum Beispiel von 1 beim letzten Mal zu 0 dieses Mal.

  4. Über die Funktion showNumber().

    void showNumber(int num) {
        digitalWrite(STcp, LOW); //ST_CP erden und solange niedrig halten, wie Daten übertragen werden
        shiftOut(DS, SHcp, MSBFIRST, datArray[num]);
        //setzen Sie den Latch-Pin zurück, um dem Chip zu signalisieren, dass er
        //nicht mehr auf Informationen hören muss
        digitalWrite(STcp, HIGH); //ST_CPST_CP hochziehen, um die Daten zu speichern
    }
    

    Dies ist der Code innerhalb von loop() im Projekt 5.10 ShiftOut(Segmentanzeige) in der Funktion showNumber().