Sisällysluettelo:

Arduino: Pinball Machine: 8 vaihetta (kuvilla)
Arduino: Pinball Machine: 8 vaihetta (kuvilla)

Video: Arduino: Pinball Machine: 8 vaihetta (kuvilla)

Video: Arduino: Pinball Machine: 8 vaihetta (kuvilla)
Video: Virtual Pinball: How to install a sainsmart usb 8 channel relay board for mechanical toys 2024, Kesäkuu
Anonim
Image
Image

Koska olen aina rakastanut sekä flipperikoneita että elektroniikkaa, päätin rakentaa oman flipperikoneeni. Valitsin Arduinon ohjelmointia ja elektroniikkaa varten, koska se on helppokäyttöinen alusta, joka on sekä kompakti että helppokäyttöinen.

Tässä oppaassa selitän kehitysprosessini, joten ehkä joku teistä innostuneista voisi luoda jotain samanlaista.

Vaihe 1: Kotelon rakentaminen

Kotelon rakentaminen
Kotelon rakentaminen

Aloitetaan flipperikoneen tapauksesta. Tein melko yksinkertaisen rakenteen. Sahasin pohjalevyn ja käytin 4 pientä puupylvästä kulmissa seinäkappaleiden yhdistämiseksi. Kotelosi koko on oma valintasi, päätin tehdä siitä hieman pienemmän kuin alkuperäinen flipperi, koska en aikonut lisätä mitään mahtavia lisäosia tilan täyttämiseksi. Käytin sekä ruuveja että liimaa, jotta kotelo olisi mahdollisimman vakaa. Takaosaan porasin kaksi reikää lattiakappaleeseen molemmille jaloille, jotka antavat flipperikoneelle ikonisen kallistuksen. Jälleen kerran jalkojen korkeus riippuu sinusta. Mitä korkeammalle teet jalat, sitä nopeammin pallo rullaa (alaspäin).

Vaihe 2: Flipper -mekaanikon rakentaminen

Flipper -mekaanikon rakentaminen
Flipper -mekaanikon rakentaminen

Koska halusin rajoittaa tämän hankkeen kustannuksia, päätin valmistaa täysin mekaaniset räpylät elektronisten sijasta. Jos olet kiinnostunut elektronisista räpylöistä, voit käyttää rakennetta, joka on hieman sama, mutta johon on liitetty niin kutsuttu solenoidi (solenoidit, joilla on riittävästi tehoa räpylöiden ohjaamiseen, olivat minulle liian kalliita).

Aloitin poraamalla kaksi reikää pohjaan molempien räpylöiden kääntöpisteeseen. Porasin reikiä (mielestäni) hieman liian lähelle toisiaan, ja tämä sai pelin lopulta hieman liian helpoksi. Joten ole varovainen, ettet aseta räpylöitä liian lähelle toisiaan, ellet halua helppoa pelityyliä.

Porasin myös kaksi reikää molempiin sivuseiniin rintareikien suuntaisesti. Näitä reikiä käytetään molempiin läppäpainikkeisiin.

Vedin räpylät takaisin alkuperäiseen asentoonsa jousilla ja tein kääntörakenteen räpylöiden ja painikkeiden väliin, jotta ne pyörivät, kun painikkeita painetaan. Jotta jouset eivät vetäisi räpylöitä liian pitkälle, laitoin kaksi ruuvia pitämään räpylät alkuperäisessä asennossaan.

Vaihe 3: Seinien sijoittaminen

Seinien sijoittaminen
Seinien sijoittaminen

Laitoin pari seinää ohjaamaan flipperiä kohti räpylöitä. Ne ovat hyvin yksinkertaisia tehdä. Poraa vain 3 reikää kotelon pohjalle ja työnnä kolme puusta tappia. Kääri kuminauha nastojen ympärille ja olet valmis.

Vaihe 4: Pisteiden lisääminen

Pisteiden lisääminen
Pisteiden lisääminen
Pisteiden lisääminen
Pisteiden lisääminen

Pisteet ovat yksi flipperikoneen tärkeimmistä osista, joten varmista, että teet tämän osan oikein. Tein kolme pistepalkkia flipperikoneelleni, mutta tämä on jälleen sinun tehtäväsi.

Sahain pois pienen palan luudatikkua ja kiedoin sen ympärille kuparilankaa. Arduino käyttää tätä kuparilankaa jatkuvasti 5 V: lla. Juotin sivulle neljä kynäjousta paremman kosketuksen palloon.

Piste -lohkojen tapa on, että pallo suorittaa piirin, joka johtaa Arduinon syöttötasoon. Joten tein teipin alumiinifolion kotelon pohjalle (EI KOSKETTAVAA KUPARIA) ja johdin kalvo Arduinon tapille. Aina kun pallo osuu sekä kupariin että alumiiniin, piiri on valmis ja Arduino vastaanottaa signaalin.

Yhdistin kaikki pultit yhteen alumiinifoliolla, mutta muista, että tahmea puoli EI johda sähköä.

Vaihe 5: Pelin lisääminen yhteystietoon

Pelin lisääminen yhteystietoon
Pelin lisääminen yhteystietoon

Pinball -koneen alaosaan, räpylöiden väliin, lisäsin pelin kontaktin yli. Aina kun pallo osuu tähän kosketukseen, pelaaja menettää pallon. Rakenne, jonka tein, on pitkälti sama kuin pisteet. Vain täällä käytin kahta ruuvia ja pohjassa jälleen alumiinifoliota.

Vaihe 6: Kaapelireikien poraus

Kaapelireikien poraus
Kaapelireikien poraus
Kaapelireikien poraus
Kaapelireikien poraus
Kaapelireikien poraus
Kaapelireikien poraus

Ennen kuin aloitamme johdotuksen kaikkeen Arduinoon, meidän on ensin porattava pari reikää kaapeleille. Porasin reiän kummankin alumiinifolion palan läpi, joten yksi reikä alumiinifoliossa lähellä pisteitä ja yksi reikä alumiinifoliossa pelin lähellä kosketuksen yli.

Tämän lisäksi porasin myös reiän vasempaan alakulmaan seinien väliin ylimääräiseen Servo -palloporttiin johtavaa kaapelia varten.

Myös näytön alareunassa on oltava reikä nestekidenäyttöön kytketylle kaapelille.

Vaihe 7: Johdotus kaikkeen

Johdotus Kaikki
Johdotus Kaikki
Johdotus Kaikki
Johdotus Kaikki

Tein tämän kaavion saadakseni paremman yleiskuvan siitä, mihin kaikki kaapelit pitäisi viedä. Ristit ovat kaapeleiden liitoskohtia. Yritin juottaa mahdollisimman paljon tehdäkseni kaikesta hieman vakaamman ja luotettavamman. Johdotus kestää jonkin aikaa, mutta tämän jälkeen olet melkein perillä!

Vaihe 8: Lataa koodi

Lataa seuraava koodi Arduinollesi, jotta flipperikoneesi käynnistyy!

// Sisällytä lcd: n kirjasto

#Sisällytä #Sisällytä

// Alusta LCD -datanastat

LiquidCrystal lcd (7, 8, 9, 10, 11, 12);

// Luo servo

ServopalloGateServo;

// Luo muuttujat käyttämillemme nastoille

int gameoverPin = 6; int scorePin = 5; int kaiutinPin = 4; int ballGateServoPin = 3;

// Alusta pelimuuttujat flipperikoneelle

int pisteet = 0; int huipputulos = 500; bool huipputulosReached = false; int pallot = 3; int gameoverTimer = 0; int gameoverTimerDuration = 100; bool gameoverTriggered = epätosi;

// suorita tämä koodi kerran ensimmäisessä kehyksessä

void setup () {// Aseta pinMode käyttämillemme nastoille pinMode (gameoverPin, INPUT); pinMode (scorePin, INPUT);

// Alusta LCD antamalla leveys ja korkeus

lcd. alku (16, 2);

// Kiinnitä kuulaportin servo sopivaan tappiin

ballGateServo.attach (ballGateServoPin);

// Palauta portin servo lähtöasentoon

ballGateServo.write (0); }

// Suorita tämä koodi jokaisessa kehyksessä

void loop () {// Tallenna nastatulot int gameoverState = digitalRead (gameoverPin); int scoreState = digitalRead (scorePin);

// Lisää pisteisiin, jos syötettä vastaanotetaan

if (scoreState) {tone (speakerPin, 1000); pisteet += 10; } muu {noTone (4); }

// Vähennä palloista, jos peliaukko laukaistaan

if (gameoverState ja! gameoverTriggered) {pallot -= 1; gameoverTriggered = tosi; gameoverTimer = gameoverTimerDuration; }

// Käynnistä peliajastin heti, kun pallo ei kosketa pelin kosketinta

if (! gameoverState) {if (gameoverTimer> = 1) {gameoverTimer -= 1; } else {gameoverTriggered = false; }}

// Blink the gameover text to the lcd and reset the score and pallot

if (pallot <= 0) {lcd.setCursor (0, 0); for (int i = 5; i> = 1; i--) {lcd.clear (); viive (250); lcd.print ("GAME OVER"); lcd.setCursor (0, 1); lcd.print ("Yritätkö uudelleen?"); viive (250); } lcd.clear (); pisteet = 0; ballGateServo.write (0); highscoreReached = epätosi; pallot = 3; }

jos (pisteet> huipputulos ja! huipputulosReached) {

lcd.setCursor (0, 0); for (int i = 5; i> = 1; i--) {lcd.clear (); viive (250); lcd.print ("NEW HIGHSCORE"); lcd.setCursor (0, 1); lcd.print ("Äkillinen kuolema!"); viive (250); } lcd.clear (); pallot = 1; ballGateServo.write (120); huipputulos = pisteet; highscoreReached = totta; }

// Päivitä huipputulos, jos nykyinen tulos on korkeampi

if (pisteet> huipputulokset) {huipputulos = pisteet; }

// Aseta kohdistin riville 0

lcd.setCursor (0, 0); // Tulosta nykyinen (korkea) pisteet lcd: lle, jos (pisteet <= 0) {lcd.print ("Huipputulos:" + Jono (huipputulos) + ""); } else {lcd.print ("Pisteet:" + Jono (pisteet) + ""); }

// Aseta kohdistin riville 1

lcd.setCursor (0, 1);

// Tulosta nykyinen määrä palloja lcd: lle

lcd.print ("Pallot:" + Jono (pallot)); }

Suositeltava: