M5StickC Plus2: crea un progetto di mini slot machine-3
Congratulazioni per aver raggiunto il passo finale del tuo progetto slot machine! In questo passaggio ti guideremo attraverso l'implementazione di una funzionalità davvero interessante: il passaggio dall'arresto manuale all'arresto automatico fermati. Ma non è tutto! Ti mostreremo anche come utilizzare le definizioni di macro per creare un cambio di modalità con un solo pulsante. Con questa funzione, puoi passare facilmente dalla modalità automatica a quella manuale semplicemente modificando un singolo valore.
È come per magia, aggiungere più flessibilità e divertimento al tuo progetto! Allora, sei pronto a portare la tua slot machine al livello successivo? Immergiamoci insieme e realizziamolo!
Installazione e Operazione
Precondizione
Dipendenza dal software: Arduino IDE, VScode o text, ecc.
Requisiti hardware: cavo USB-C, M5StickCPlus2, ecc.
Dipendenze: libreria M5StickCPlus2, libreria Arduino, ecc.
Installazione delle dipendenze
1. Questo cambiamento coinvolge due parti principali. Esaminiamo innanzitutto la prima parte, basandoci sulle modifiche introdotte nella sezione precedente. Analizzeremo ogni modifica passo dopo passo, partendo dall'alto.
-
Definizione dell'automazione: abbiamo definito il interruttore di automazione, che ti consente di alternare tra la modalità automatica e non automatica.
-
Impostazioni intervallo:
-
time_MAX e time_MIN: queste variabili rappresentano l'intervallo per l'intervallo di tempo di arresto.
-
initTime_MAX e initTime_MIN: indicano l'intervallo di tempo di arresto iniziale durante le prime fasi del gioco.
-
-
Limiti di conteggio di arresto:
-
startCount_MAX: definisce il numero massimo di fermate dall'inizio del gioco.
-
initTime_MAX e initTime_MIN: (Reiterazione) rappresentano le impostazioni dell'intervallo iniziale per la selezione dell'ora di fine.
-
startCount_MAX: questa variabile controlla anche quante fermate possono verificarsi dall'inizio.
-
Con queste variabili, hai un maggiore controllo sulla tempistica e sull'automazione, consentendo transizioni più fluide tra la modalità manuale e quella automatica. Nella parte successiva, esploreremo come implementare questi intervalli e opzioni nel codice, apportando flessibilità al tuo progetto.
2. Successivamente, diamo un'occhiata alla funzione setup()
. Abbiamo aggiunto srand(time(0))
per inizializzare la funzione casuale con l'ora corrente, garantendo valori casuali univoci in ogni esecuzione.
Ora esaminiamo la funzione loop()
. Innanzitutto, utilizziamo l'Automazione come interruttore per determinare se il sistema funziona in modalità automatica o manuale. Se è selezionata la modalità manuale, non sono necessarie modifiche. La nostra attenzione, tuttavia, è sulla modalità automatica.
Nella modalità automatica il compito principale è decidere se i mandrini devono fermarsi. I mandrini si fermano gradualmente in base a un tempo di arresto generato casualmente (Count_Num
), quindi non è necessario che l'utente per premere il pulsante più volte.
Quando viene premuto il pulsante A (BtnA), o il contatore raggiunge la condizione di arresto, i mandrini si fermeranno uno per uno automaticamente.
-
Stato: SLOTS_INIT In questo stato, tutti i mandrini iniziano a girare simultaneamente e un conteggio casuale determina quando si fermano.
-
I mandrini si fermano automaticamente in due condizioni:
-
Viene premuto il pulsante A.
-
Il contatore casuale raggiunge l'ora di fine designata.
-
Questa logica garantisce un funzionamento regolare in modalità automatica, facendo arrestare i mandrini senza intervento manuale, migliorando l'esperienza di gioco della slot machine.
// Initialize M5StickC Plus2
#define Automazione 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));//aggiunto oltre ai pochi originali } void loop() { static int Slot_Start = 0; // Controlla il numero di avvii del mandrino static int Slot_Stop = 0; // Se arrestare il mandrino static int Count_Stop = 0; //Conta i battiti cardiaci del mandrino di arresto statico int Count_Num; // Tempi di arresto generati casualmente in modalità automatica M5.aggiorna(); //Aggiorna lo stato del pulsante if (Automazione) { // Se la modalità automatica è abilitata se (M5.BtnA.èStatoPremuto() || Slot_Stop == 1) { // pressione del pulsante o arresto del trigger in modalità automatica se (stato == SLOTS_INIT) { // If in the initialization state per (int i = 0; i
3. Successivamente, diamo un'occhiata alla seconda parte, che si concentra sul far sì che ciascuna colonna si interrompa in modo casuale. Questa sezione è posizionata alla fine della funzione loop e non può essere spostata. La nostra attenzione qui è solo sulla modalità automatica.
In questa parte, la modalità automatica è abilitata quando la macro Automazione
è definito come 1. Nella modalità automatica, l'utente non ha bisogno di premere un pulsante per avviare o arrestare ciascun mandrino. Il codice, invece, gestisce automaticamente il processo di avvio e arresto per ciascun mandrino.
Quando la Modalità automatica è abilitata:
-
Il sistema avvia automaticamente i mandrini e utilizza il contatore
Count_Stop
per tenere traccia del tempo trascorso. -
Ogni volta che il contatore raggiunge un orario di arresto casuale pregenerato (
Count_Num
), il sistema attiva il arresto di un mandrino. -
Una volta che tutti i mandrini sono stati arrestati, il sistema ripristina il proprio stato e si prepara per il successivo ciclo di operazioni.
// 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 } }
Compila e Esegui
1. Dopo aver completato l'installazione delle dipendenze, apri l'archivio zip scaricato.
2. Collega M5StickC Plus 2 al computer utilizzando un cavo USB-C, quindi vai su Strumenti -> Porta strong> e seleziona la porta appropriata.
3. Fai clic su Compila e, una volta completata la compilazione, fai clic su Carica.