Anschluss strong> und wählen Sie den entsprechenden Port aus. 3. Klicken Sie auf Kompilieren und klicken Sie nach Abschluss der Kompilierung auf Hochladen.">
Zum Inhalt springen

+49 1626571232

info@openelab.io

🚀 Kostenloser Versand ab 50€ in der EU / 80€ weltweit

Mini-Spielautomatenprojekt mit M5StickC Plus2 -3

17 Oct 2024 0 Kommentare

Herzlichen Glückwunsch zum Erreichen des letzten Schritts Ihres Spielautomatenprojekts! In diesem Schritt führen wir Sie durch die Implementierung einer super coolen Funktion: den Wechsel vom manuellen Stopp zum automatischen Stopp hör auf. Aber das ist noch nicht alles! Wir zeigen Ihnen auch, wie Sie Makrodefinitionen verwenden, um einen Ein-Knopf-Modusschalter. Mit dieser Funktion können Sie mühelos zwischen dem automatischen und dem manuellen Modus wechseln, indem Sie einfach einen einzelnen Wert ändern.

Es ist wie von Zauberhand und verleiht Ihrem Projekt mehr Flexibilität und Spaß! Sind Sie also bereit, Ihren Spielautomaten auf die nächste Stufe zu heben? Lassen Sie uns gemeinsam eintauchen und es möglich machen!

  

Installation und Betrieb

Vorbedingung

Softwareabhängigkeit: ArduinoIDE, VScode oder Text usw.

Hardwareanforderungen: USB-C-Kabel, M5StickCPlus2 usw.

Abhängigkeiten: M5StickCPlus2-Bibliothek, Arduino-Bibliothek usw.

Installation der Abhängigkeiten

1. Diese Änderung umfasst zwei Hauptteile. Lassen Sie uns zunächst den ersten Teil durchgehen und dabei auf den im vorherigen Abschnitt eingeführten Änderungen aufbauen. Wir analysieren jede Änderung Schritt für Schritt, beginnend von oben.

  • Automatisierungsdefinition: Wir haben den Automatisierungsschalter definiert, mit dem Sie zwischen automatischen und nichtautomatischen Modi umschalten können.

  • Intervall-Einstellungen:

    • time_MAX und time_MIN: Diese Variablen stellen den Bereich für das Stoppzeitintervall dar.

    • initTime_MAX und initTime_MIN: Diese geben das anfängliche Stoppzeitintervall in den frühen Phasen des Spiels an.

  • Stoppzählgrenzen:

    • startCount_MAX: Dies definiert die maximale Anzahl an Stopps ab Beginn des Spiels.

    • initTime_MAX und initTime_MIN: (Wiederholung) Dies stellen die anfänglichen Intervalleinstellungen für die Stoppzeitauswahl dar.

    • startCount_MAX: Diese Variable steuert auch, wie viele Stopps vom Start an erfolgen können.

Mit diesen Variablen haben Sie mehr Kontrolle über Timing und Automatisierung und ermöglichen so sanftere Übergänge zwischen manuellem und automatischem Modus. Im nächsten Teil untersuchen wir, wie Sie diese Intervalle und Schalter im Code implementieren und so Ihrem Projekt Flexibilität verleihen.

2. Schauen wir uns als Nächstes die Funktion setup() an. Wir haben srand(time(0)) hinzugefügt, um die Zufallsfunktion mit der aktuellen Zeit zu initialisieren und so bei jedem Lauf eindeutige Zufallswerte sicherzustellen.

Schauen wir uns nun die Funktion loop() an. Zunächst verwenden wir Automatisierung als Schalter, um zu bestimmen, ob das System im automatischen oder manuellen Modus arbeitet. Wenn der manuelle Modus ausgewählt ist, sind keine Änderungen erforderlich. Unser Fokus liegt jedoch auf dem Automatikmodus.

Im Automatikbetrieb besteht die primäre Aufgabe darin, zu entscheiden, ob die Spindeln anhalten sollen. Die Spindeln stoppen schrittweise basierend auf einer zufällig generierten Stoppzeit (Count_Num), sodass kein Benutzer erforderlich ist um die Taste mehrmals zu drücken.

Wenn Taste A (BtnA) gedrückt wird oder der Zähler den Stoppzustand erreicht, stoppen die Spindeln eine nach der anderen automatisch /strong>.

  • Zustand: SLOTS_INIT In diesem Zustand beginnen alle Spindeln gleichzeitig zu drehen und eine zufällige Zählung bestimmt, wann sie aufhören.

  • Die Spindeln stoppen automatisch unter zwei Bedingungen:

    • Taste A wird gedrückt.

    • Der Zufallszähler erreicht die festgelegte Stoppzeit.

Diese Logik sorgt für einen reibungslosen Betrieb im Automatikmodus und sorgt dafür, dass die Spindeln ohne manuelles Eingreifen anhalten, was das Spielerlebnis des Spielautomaten verbessert.

// Initialize M5StickC Plus2
 #include "time.h"
#define Automation 1
#define Time_MAX 80
#define Time_MIN 45
#define InitTime_MAX 100
#define InitTime_MIN 80
#define StartCount_MAX 6

void setup() {
        srand(time(0));//added on top of the original few
}

void loop()  {
  static int Slot_Start = 0; // Control the number of spindle starts
  static int Slot_Stop = 0; // Whether to stop the spindle
  static int Count_Stop = 0; //Count the heartbeats of the stop spindle
  static int Count_Num; // Randomly generated stop times in automatic mode

  M5.update(); //Update button status

  if (Automation) { // If automatic mode is enabled
    if (M5.BtnA.wasPressed() || Slot_Stop == 1) { // button press or auto mode trigger stop
      if (state == SLOTS_INIT) { // If in the initialization state
        for (int i = 0; i < SLOT_COUNT; i++) {
          slots[i].start(); // Activate each spindle
        }
        state++;
        Slot_Start = 1; // Record startup status
        Count_Num = rand() % (InitTime_MAX - InitTime_MIN - 1) + InitTime_MIN;// Randomly generated stop times
      } else if (state < SLOTS_STOP) { // If the spindle is running
        Slot_Start++;
        slots[state - 1].stop(); //Stop the current axis
        state++;
      }
    }
    Slot_Stop = 0; // Reset stop sign
  } else { // manual mode
    if (M5.BtnA.wasPressed()) { //Press the button to start or stop the spindle
      if (state == SLOTS_INIT) {
        for (int i = 0; i < SLOT_COUNT; i++) {
          slots[i].start(); // Activate each spindle
        }
        state++;
      } else if (state < SLOTS_STOP) {
        slots[state - 1].stop(); // stop spindle
        state++;
      }
    }
  }
}
        
✔ Kopiert!

 

3. Schauen wir uns als nächstes den zweiten Teil an, der sich darauf konzentriert, jede Spalte zufällig anzuhalten. Dieser Abschnitt wird am Ende der Schleifenfunktion platziert und kann nicht verschoben werden. Unser Fokus liegt hier nur auf dem Automatikmodus.

In diesem Teil wird der automatische Modus aktiviert, wenn das Makro Automatisierung ausgeführt wird ist als 1 definiert. Im Automatikmodus muss der Benutzer keine Taste drücken, um jede Spindel zu starten oder zu stoppen. Stattdessen verwaltet der Code automatisch den Start- und Stoppvorgang für jede Spindel.

Wenn der Auto-Modus aktiviert ist:

  • Das System startet automatisch die Spindeln und verwendet den Zähler Count_Stop, um die verstrichene Zeit zu verfolgen.
  • Jedes Mal, wenn der Zähler eine vorab generierte zufällige Stoppzeit (Count_Num) erreicht, löst das System den Stoppen einer Spindel.
  • Sobald alle Spindeln gestoppt wurden, setzt das System seinen Zustand zurück und bereitet sich auf die nächste Betriebsrunde vor.
Diese Implementierung gewährleistet ein reibungsloses, freihändiges Gameplay, indem sie das Starten und Stoppen der Spindeln automatisiert und so die Leistung und das Benutzererlebnis des Spielautomaten verbessert.
// Initialize M5StickC Plus2
 if (Automation) { // If in automatic mode
  if (Slot_Start && Slot_Start < StartCount_MAX) { //When at least one shaft has been started and the maximum number of starts has not yet been reached
    Count_Stop++; // Counter increments to record time progress
    if (Count_Stop == Count_Num && state < SLOTS_STOP) { //If the counter reaches a randomly generated stop time
      Slot_Stop = 1; // Trigger auto-stop spindle
      Count_Stop = 0; //Counter resets to zero in preparation for the next stop
      Count_Num = rand() % (Time_MAX - Time_MIN - 1) + Time_MIN; //Randomly generate the next stop interval
    }
  } else if (Slot_Start == StartCount_MAX) { // If all spindles have been activated
    Slot_Start = 0; // Zero the startup counter in preparation for the next startup
  }
}


        
✔ Kopiert!

 

Kompilieren und Ausführen

 1. Öffnen Sie nach Abschluss der Installation der Abhängigkeiten das heruntergeladene Zip-Archiv.

2. Schließen Sie den M5StickC Plus 2 mit einem USB-C-Kabel an Ihren Computer an und gehen Sie dann zu Extras -> Anschluss strong> und wählen Sie den entsprechenden Port aus.

3. Klicken Sie auf Kompilieren und klicken Sie nach Abschluss der Kompilierung auf Hochladen.

Vorheriger Beitrag
Nächster Beitrag

Hinterlasse einen Kommentar

Alle Blog-Kommentare werden vor der Veröffentlichung geprüft

Jemand kaufte vor kurzem ein

Danke fürs Abonnieren!

Diese E-Mail wurde registriert!

Shoppen Sie den Look

Wähle Optionen

Bearbeitungsoption
Benachrichtigung wieder vorrätig
this is just a warning
Anmeldung
Einkaufswagen
0 Artikel
RuffRuff App RuffRuff App by Tsun