M5StickC Plus2: maak een mini-gokautomaat Project-3
Gefeliciteerd met het bereiken van de laatste stap van uw gokautomaatproject! In deze stap begeleiden we u bij het implementeren van een supercoole functie: overschakelen van handmatige stop naar automatisch stoppen. Maar dat is nog niet alles! We laten u ook zien hoe u macrodefinities gebruikt om een modusschakelaar met één knop. Met deze functie kunt u moeiteloos schakelen tussen automatische en handmatige modi door slechts een enkele waarde te wijzigen.
Het is als magie: u voegt meer flexibiliteit en plezier toe aan uw project! Dus, ben je klaar om je gokautomaat naar een hoger niveau te tillen? Laten we er samen in duiken en het laten gebeuren!
Installatie en werking
Voorwaarde
Softwareafhankelijkheid: Arduino IDE, VScode of text, etc.
Hardwarevereisten: USB-C kabel, M5StickCPlus2, enz.
Afhankelijkheden: M5StickCPlus2-bibliotheek, Arduino-bibliotheek, enz.
Installatie van afhankelijkheden
1. Deze verandering bestaat uit twee hoofdonderdelen. Laten we eerst door het eerste deel lopen, voortbouwend op de wijzigingen die in de vorige sectie zijn geïntroduceerd. We zullen elke verandering stap voor stap analyseren, beginnend bij de top.
-
Automatiseringsdefinitie: we hebben de automatiseringsschakelaar gedefinieerd, waarmee u kunt schakelen tussen automatische en niet-automatische modi.
-
Intervalinstellingen:
-
time_MAX en time_MIN: deze variabelen vertegenwoordigen het bereik voor het stoptijdinterval.
-
initTime_MAX en initTime_MIN: deze geven het initiële stoptijdsinterval aan tijdens de vroege stadia van het spel.
-
-
Stoptelling Limieten:
-
startCount_MAX: dit definieert het maximale aantal stops vanaf het begin van het spel.
-
initTime_MAX en initTime_MIN: (herhaling) Deze vertegenwoordigen de initiële intervalinstellingen voor de stoptijdselectie.
-
startCount_MAX: deze variabele bepaalt ook hoeveel stops er vanaf het begin kunnen plaatsvinden.
-
Met deze variabelen heeft u meer controle over timing en automatisering, waardoor vloeiendere overgangen tussen handmatige en automatische modi mogelijk zijn. In het volgende deel onderzoeken we hoe u deze intervallen en schakelaars in de code kunt implementeren, waardoor uw project flexibeler wordt.
2. Laten we vervolgens eens kijken naar de setup()
functie. We hebben srand(time(0))
toegevoegd om de willekeurige functie te initialiseren met de huidige tijd, waardoor bij elke uitvoering unieke willekeurige waarden worden gegarandeerd.
Laten we nu de functie loop()
onderzoeken. Ten eerste gebruiken we Automatisering als schakelaar om te bepalen of het systeem in de automatische of handmatige modus werkt. Als de handmatige modus is geselecteerd, zijn er geen wijzigingen vereist. Onze focus ligt echter op de automatische modus.
In de automatische modus is de primaire taak het beslissen of de spindels moeten stoppen. De spindels stoppen geleidelijk op basis van een willekeurig gegenereerde stoptijd (Count_Num
), dus de gebruiker hoeft niets te doen om meerdere keren op de knop te drukken.
Wanneer Knop A (BtnA) wordt ingedrukt, of de teller de stopvoorwaarde bereikt, zullen de spindels één voor één automatisch stoppen.
-
Status: SLOTS_INIT In deze status beginnen alle spindels tegelijkertijd te draaien, en een willekeurige telling bepaalt wanneer ze stoppen.
-
De spindels stoppen automatisch onder twee voorwaarden:
-
Knop A is ingedrukt.
-
De willekeurige teller bereikt de aangegeven stoptijd.
-
Deze logica zorgt voor een soepele werking in de automatische modus, waardoor de spindels stoppen zonder handmatige tussenkomst, wat de gameplay-ervaring van de gokautomaat verbetert.
// Initialize M5StickC Plus2
#define Automatisering 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));//toegevoegd bovenop de originele paar } lege lus() { statische int Slot_Start = 0; // Beheer het aantal spilstarts statische int Slot_Stop = 0; // Of de spil gestopt moet worden statische int Count_Stop = 0; // Tel de hartslagen van de stopspindel statische int Aantal_Num; // Willekeurig gegenereerde stoptijden in automatische modus M5.update(); //Update knopstatus if (Automatisering) {// Als de automatische modus is ingeschakeld als (M5.BtnA.isGedrukt() || Slot_Stop == 1) {// knop indrukken of stop in automatische modus activeren als (staat == SLOTS_INIT) { // If in the initialization state voor (int i = 0; i
3. Laten we vervolgens eens kijken naar het tweede deel, waarin de nadruk ligt op het willekeurig stoppen van elke kolom. Deze sectie wordt aan het einde van de lusfunctie geplaatst en kan niet worden verplaatst. Onze focus ligt hier alleen op de automatische modus.
In dit deel wordt de automatische modus ingeschakeld wanneer de macro Automatisering
wordt gedefinieerd als 1. In de automatische modus hoeft de gebruiker niet op een knop te drukken om elke spil te starten of stoppen. In plaats daarvan beheert de code automatisch het start- en stopproces voor elke spil.
Wanneer Automatische modus is ingeschakeld:
-
Het systeem start automatisch de spindels en gebruikt de teller
Count_Stop
om de verstreken tijd bij te houden. -
Elke keer dat de teller een vooraf gegenereerde willekeurige stoptijd (
Count_Num
) bereikt, activeert het systeem de stoppen van één spil. -
Zodra alle spindels zijn gestopt, resett het systeem zijn status en bereidt het zich voor op de volgende bedieningsronde.
// 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 } }
Compileren en uitvoeren
1. Nadat u de installatie van de afhankelijkheden hebt voltooid, opent u het gedownloade zip-archief.
2. Sluit de M5StickC Plus 2 aan op uw computer met behulp van een USB-C kabel en ga vervolgens naar Extra -> Poort strong> en selecteer de juiste poort.
3. Klik op Compileren en zodra de compilatie is voltooid, klikt u op Uploaden.