Porta strong> e seleziona la porta appropriata. 3. Fai clic su Compila e, una volta completata la compilazione, fai clic su Carica.">
Salta al contenuto

+49 1626571232

info@openelab.io

🚀 Spedizione gratuita a partire da 50€ in UE / 80€ in tutto il mondo

Progetto Mini Slot Machine con M5StickC Plus2 -3

17 Oct 2024 0 Commenti

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
 #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++;
      }
    }
  }
}
        
✔ Copiato!

 

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.
Questa implementazione garantisce un gioco fluido e a mani libere automatizzando l'avvio e l'arresto dei mandrini, migliorando le prestazioni e l'esperienza utente della slot machine.
// 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
  }
}


        
✔ Copiato!

 

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.

Articolo precedente
Articolo successivo

lascia un commento

Tutti i commenti del blog vengono controllati prima della pubblicazione

Qualcuno ha recentemente acquistato un

Grazie per esserti iscritto!

Questa email è stata registrata!

Acquista il look

Scegli Opzioni

Modifica opzione
Notifica di disponibilità
this is just a warning
Login
Carrello della spesa
0 elementi
RuffRuff App RuffRuff App by Tsun