M5StickC Plus2: Luo Mini Kolikkopelikone Projekti-3

Onnittelut, että olet saavuttanut kolikkopelikoneprojektisi viimeisen vaiheen! Tässä vaiheessa opastamme sinua toteuttamaan super siistin ominaisuuden: vaihtamisen manuaalisesta pysäytyksestä automaattiseen pysäytykseen. Mutta se ei ole kaikki! Näytämme myös, kuinka käyttää makromääritelmiä luodaksesi yhdellä napilla toimivan tilanvaihtimen. Tämän ominaisuuden avulla voit vaivattomasti vaihtaa automaattisen ja manuaalisen tilan välillä vain muuttamalla yhtä arvoa.

Se on kuin taikuutta, lisäämällä projektillesi enemmän joustavuutta ja hauskuutta! Oletko valmis viemään kolikkopelikoneesi seuraavalle tasolle? Sukelletaan yhdessä ja tehdään se todeksi!

  

Asennus ja käyttö

Edellytys

Ohjelmistoriippuvuus: Arduino IDE, VScode tai tekstieditori jne.

Laitteistovaatimukset: USB-C-kaapeli, M5StickCPlus2 jne.

Riippuvuudet: M5StickCPlus2-kirjasto, Arduino-kirjasto jne.

Riippuvuuksien asennus

1. Tämä muutos sisältää kaksi pääosaa. Käydään ensin läpi ensimmäinen osa, rakentuen edellisen osion muutoksiin. Analysoimme jokaisen muutoksen vaihe vaiheelta alkaen ylimmästä kohdasta.

  • Automaatio Määritelmä: Määrittelimme automaatio-kytkimen, jonka avulla voit vaihtaa automaattisen ja ei-automaattisen tilan välillä.

  • Aikavälin asetukset:

    • time_MAX ja time_MIN: Nämä muuttujat edustavat pysäytysaikavälin vaihteluväliä.

    • initTime_MAX ja initTime_MIN: Nämä osoittavat alkuperäisen pysäytysajan aikavälin pelin alkuvaiheessa.

  • Pysäytyslaskurin rajat:

    • startCount_MAX: Tämä määrittää maksimimäärän pysähdyksiä pelin alusta lähtien.

    • initTime_MAX ja initTime_MIN: (Toisto) Nämä edustavat alkuperäisiä aikaväliasetuksia pysäytysajan valinnalle.

    • startCount_MAX: Tämä muuttuja hallitsee myös kuinka monta pysähdystä voi tapahtua alusta lähtien.

Näiden muuttujien avulla sinulla on enemmän hallintaa ajastuksen ja automaation suhteen, mikä mahdollistaa sujuvammat siirtymät manuaalisen ja automaattisen tilan välillä. Seuraavassa osassa tutkimme, miten toteuttaa nämä aikavälit ja kytkimet koodissa, tuoden joustavuutta projektiisi.

2. Seuraavaksi katsotaan setup()-funktiota. Olemme lisänneet srand(time(0)) alustamaan satunnaistoiminnon nykyisellä ajalla, varmistaen ainutlaatuiset satunnaisarvot jokaisella suorituskerralla.

Tarkastellaan nyt loop()-funktiota. Ensin käytämme Automaatio-kytkintä määrittämään, toimiiko järjestelmä automaattisessa vai manuaalisessa tilassa. Jos manuaalinen tila on valittu, muutoksia ei tarvita. Keskitymme kuitenkin automaattiseen tilaan.

Automaattisessa tilassa ensisijainen tehtävä on päättää, pitäisikö karat pysäyttää. Karat pysähtyvät asteittain perustuen satunnaisesti generoituun pysäytysaikaan (Count_Num), joten käyttäjän ei tarvitse painaa painiketta useita kertoja.

Kun painiketta A (BtnA) painetaan tai laskuri saavuttaa pysäytysehdon, karat pysähtyvät yksi kerrallaan automaattisesti.

  • Tila: SLOTS_INIT Tässä tilassa kaikki pyörivät akselit käynnistyvät samanaikaisesti ja satunnainen laskuri määrää, milloin ne pysähtyvät.

  • Pyörivät akselit pysähtyvät automaattisesti kahdessa tilanteessa:

    • Painike A on painettu.

    • Satunnainen laskuri saavuttaa määrätyn pysäytysajan.

Tämä logiikka varmistaa sujuvan toiminnan automaattitilassa, jolloin pyörivät akselit pysähtyvät ilman manuaalista puuttumista, parantaen kolikkopelin pelikokemusta.

// 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));//lisätty alkuperäisen päälle } void loop() { static int Slot_Start = 0; // Ohjaa pyörivien akselien käynnistyskertojen määrää static int Slot_Stop = 0; // Pyörivän akselin pysäytys static int Count_Stop = 0; // Lasketaan karan pysäytyksen sykkeitä static int Count_Num; // Satunnaisesti generoitu pysäytysaika automaattitilassa M5.update(); // Päivitä painikkeen tila if (Automation) { // Jos automaattitila on käytössä if (M5.BtnA.wasPressed()) || Slot_Stop == 1) { // painikkeen painallus tai automaattitilan pysäytys if (state == SLOTS_INIT) { // Jos ollaan alustustilassa for (int i = 0; i < SLOT_COUNT; i++) { slots[i].start(); // Aktivoi jokainen kela } state++; Slot_Start = 1; // Tallenna käynnistystila Count_Num = rand() % (InitTime_MAX - InitTime_MIN - 1) + InitTime_MIN; // Satunnaisesti generoitu pysäytysaika } else if (state < SLOTS_STOP) { // Jos kara on käynnissä Slot_Start++; slots[state - 1].stop(); // Pysäytä nykyinen akseli state++; } } Slot_Stop = 0; // Nollaa pysäytysmerkki } else { // manuaalitila if (M5.BtnA.wasPressed()) { // Paina painiketta käynnistääksesi tai pysäyttääksesi karan if (state == SLOTS_INIT) { for (int i = 0; i < SLOT_COUNT; i++) { slots[i].start(); // Aktivoi jokainen kela } state++; } else if (state < SLOTS_STOP) { slots[state - 1].stop(); // pysäytä kela state++; } } } }
✔ Kopioitu!

 

3. Seuraavaksi tarkastellaan toista osaa, joka keskittyy siihen, että jokainen sarakkeen pysähtyy satunnaisesti. Tämä osio on sijoitettu silmukan funktion loppuun eikä sitä voida siirtää. Keskitymme tässä vain automaattitilaan.

Tässä osassa automaattitila otetaan käyttöön kun makro Automation on määritelty arvoksi 1. Automaattitilassa käyttäjän ei tarvitse painaa painiketta käynnistääkseen tai pysäyttääkseen keloja. Sen sijaan koodi hallinnoi automaattisesti kelojen käynnistys- ja pysäytysprosessin.

Kun Automaattitila on käytössä:

  • Järjestelmä käynnistää kelat automaattisesti ja käyttää laskuria Count_Stop seuratakseen kulunutta aikaa.
  • Joka kerta, kun laskuri saavuttaa ennalta luodun satunnaisen pysäytysajan (Count_Num), järjestelmä käynnistää yhden kelan pysäytyksen.
  • Kun kaikki kelat on pysäytetty, järjestelmä nollaa tilansa ja valmistautuu seuraavaan toimintakierrokseen.
Tämä toteutus varmistaa sujuvan, käsivapaan pelattavuuden automatisoimalla kelojen käynnistyksen ja pysäytyksen, parantaen kolikkopelin suorituskykyä ja käyttökokemusta.
// 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
  }
}


        
✔ Kopioitu!

 

Käännä ja suorita

 1. Kun riippuvuuksien asennus on valmis, avaa ladattu zip-arkisto.

2. Yhdistä M5StickC Plus 2 tietokoneeseesi käyttämällä USB-C-kaapelia, siirry sitten kohtaan Työkalut -> Portti ja valitse sopiva portti.

3. Napsauta Käännä, ja kun käännös on valmis, napsauta Lataa.

Jätä kommentti

Sähköpostiosoitettasi ei julkaista. Pakolliset kentät on merkitty *

Sivupalkki

Uusin julkaisu

Tässä osiossa ei ole tällä hetkellä sisältöä. Lisää sisältöä tähän osioon käyttämällä sivupalkkia.

Rekisteröidy uutiskirjeeseemme

Hanki viimeisimmät tiedot tuotteistamme ja erikoistarjouksistamme.