M5StickC Plus2: Erstellen Sie ein Mini-Spielautomatenprojekt-3
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
#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));//zusätzlich zu den ursprünglichen wenigen hinzugefügt } void Schleife() { static int Slot_Start = 0; // Kontrolliere die Anzahl der Spindelstarts static int Slot_Stop = 0; // Ob die Spindel gestoppt werden soll static int Count_Stop = 0; //Zähle die Herzschläge der Stoppspindel static int Count_Num; // Zufällig generierte Stoppzeiten im Automatikmodus M5.aktualisieren(); //Aktualisiere den Status des Buttons if (Automation) { // Wenn der automatische Modus aktiviert ist wenn (M5.BtnA.warGedrückt() || Slot_Stop == 1) { // Tastendruck oder Auto-Modus-Trigger-Stopp wenn (zustand == SLOTS_INIT) { // If in the initialization state für (int i = 0; i
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.
// 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 } }
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.