Innehållsförteckning:

Arduino: flipperspel: 8 steg (med bilder)
Arduino: flipperspel: 8 steg (med bilder)

Video: Arduino: flipperspel: 8 steg (med bilder)

Video: Arduino: flipperspel: 8 steg (med bilder)
Video: PnP Pinball #09 test wiring all solenoids to PCB | Building a DIY pinball whitewood arduino 2024, Juni
Anonim
Image
Image

Eftersom jag alltid har älskat både flipperspel och elektronik bestämde jag mig för att bygga min egen flipperspel. Jag valde Arduino för programmering och elektronik, eftersom det är en mycket tillgänglig plattform som är både kompakt och lätt att använda.

I denna guide kommer jag att förklara min utvecklingsprocess, så kanske en av er entusiaster kan skapa något lika.

Steg 1: Bygga fallet

Bygga fallet
Bygga fallet

Låt oss börja med fallet med flipperspel. Jag gjorde en ganska enkel konstruktion. Jag sågade av en bottenplatta och använde 4 små träpelare i hörnen för att ansluta väggbitarna. Storleken på ditt fodral är ditt eget val, jag valde att göra det lite mindre än en original flipperspel eftersom jag inte planerade att lägga till några super spektakulära tillbehör för att fylla utrymmet. Jag använde både skruvar och lim för att göra fodralet så stadigt som möjligt. På baksidan borrade jag två hål i golvstycket för de två benen som ger flippmaskinen den ikoniska lutningen. Återigen är höjden på benen helt upp till dig. Ju längre du gör benen, desto snabbare kommer bollen att rulla (nedåt).

Steg 2: Konstruera Flipper Mechanic

Konstruera Flipper Mechanic
Konstruera Flipper Mechanic

Eftersom jag ville begränsa kostnaden för detta projekt bestämde jag mig för att göra helt mekaniska flippers istället för elektroniska. Om du är intresserad av elektroniska flippor kan du använda en konstruktion som är lite densamma, men med en så kallad 'solenoid' ansluten till den (solenoider med tillräckligt med ström för att styra flipporna var för dyra för mig).

Jag började med att borra två hål i botten för båda svängarnas svängpunkt. Jag borrade hålen (enligt min mening) lite för nära varandra, och det gjorde att spelet blev lite för lätt i slutändan. Så var försiktig så att du inte placerar flipporna för nära varandra, såvida du inte vill ha en enkel spelstil.

Jag borrade också två hål i båda sidoväggarna parallellt med flipphålen. Dessa hål ska användas för de två flipperknapparna.

Jag använde fjädrar för att dra tillbaka flipporna till sitt ursprungliga läge och gjorde en svängbar konstruktion mellan flipporna och knapparna för att få dem att rotera när knapparna trycks ned. För att stoppa fjädrarna från att dra tillbaka flipporna för långt, placerade jag två skruvar för att hålla flipporna i sitt ursprungliga läge.

Steg 3: Placera väggarna

Placera väggarna
Placera väggarna

Jag placerade ett par väggar för att omdirigera flipperspelet mot flipporna. De är väldigt enkla att göra. Borra bara 3 hål i botten av fodralet och skjut in tre träpinnar. Linda ett gummiband runt stiften och du är klar.

Steg 4: Lägga till poängblocken

Lägga till poängblocken
Lägga till poängblocken
Lägga till poängblocken
Lägga till poängblocken

Scoreblocken är en av de mest avgörande delarna i flipperspelet, så se till att du gör den här delen rätt. Jag gjorde tre poängblock för min flipperspel, men återigen är det upp till dig.

Jag sågade av en liten bit kvaststick och virade koppartråd runt den. Arduino kommer att driva denna koppartråd konstant med 5V. Jag lödde fyra pennfjädrar åt sidan för bättre kontakt med bollen.

Det sätt som poängblocken fungerar på är att bollen slutför en krets som leder till en ingångsstift på Arduino. Så det jag gjorde var att tejpa aluminiumfolie på botten av fodralet (INTE RÖRA KOPPAREN) och vira folien till en stift på Arduino. När kulan träffar både koppar och aluminium är kretsen komplett och Arduino kommer att ta emot en signal.

Jag kopplade ihop alla blocken med aluminiumfolien, men tänk på att den klibbiga sidan INTE leder elektricitet.

Steg 5: Lägga till spelet över kontakt

Lägga till spelet över kontakt
Lägga till spelet över kontakt

Längst ner på flipperspelmaskinen, mellan flipporna, lade jag till ett spel över kontakt. Närhelst bollen träffar denna kontakt förlorar spelaren en boll. Konstruktionen jag gjorde är mycket densamma som poängblocken. Bara här använde jag två skruvar, och återigen en bit aluminiumfolie på botten.

Steg 6: Borra kabelhålen

Borrning av kabelhålen
Borrning av kabelhålen
Borrning av kabelhålen
Borrning av kabelhålen
Borrning av kabelhålen
Borrning av kabelhålen

Innan vi börjar ansluta allt till Arduino måste vi borra ett par hål för kablarna först. Jag borrade ett hål genom båda bitarna av aluminiumfolie, så ett hål i aluminiumfolien nära blocken och ett hål i aluminiumfolien nära spelet över kontakt.

Förutom detta borrade jag också ett hål längst ner till vänster, mellan väggarna, för kabeln som leder till den extra kulporten Servo.

Det bör också finnas ett hål för kabeln ansluten till LCD -skärmen längst ner.

Steg 7: Anslut allt

Ansluta allt
Ansluta allt
Ansluta allt
Ansluta allt

Jag gjorde den här schemat för att få en bättre överblick över var alla kablar ska gå. Korsen är de punkter där kablar ansluts. Jag försökte lödas så mycket som möjligt för att göra allt lite mer stabilt och pålitligt. Kabeldragningen kommer att ta lite tid, men när detta är gjort är du nästan där!

Steg 8: Ladda upp koden

Ladda upp följande kod till din Arduino för att få din flipperspel att leva!

// Inkludera biblioteket för LCD -skärmen

#inkludera #inkludera

// Initiera lcd -datapinnarna

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

// Skapa en servo

ServobollGateServo;

// Skapa variabler för stiften vi använder

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

// Initiera spelvariabler för flipperspel

int poäng = 0; int highscore = 500; bool highscoreReached = false; int bollar = 3; int gameoverTimer = 0; int gameoverTimerDuration = 100; bool gameoverTriggered = false;

// kör den här koden en gång i den första ramen

void setup () {// Ställ in pinMode för stiften vi använder pinMode (gameoverPin, INPUT); pinMode (scorePin, INPUT);

// Initiera LCD -skärmen genom att ange bredden och höjden

lcd.begin (16, 2);

// Fäst kulportens servo på lämplig stift

ballGateServo.attach (ballGateServoPin);

// Återställ grindserven till utgångsläget

ballGateServo.write (0); }

// Kör den här koden varenda ram

void loop () {// Fånga pin -ingångarna int gameoverState = digitalRead (gameoverPin); int scoreState = digitalRead (scorePin);

// Lägg till poängen om input tas emot

if (scoreState) {tone (speakerPin, 1000); poäng += 10; } annat {noTone (4); }

// Subtrahera från bollarna om gameover -gropen utlöses

if (gameoverState och! gameoverTriggered) {bollar -= 1; gameoverTriggered = true; gameoverTimer = gameoverTimerDuration; }

// Starta gameover -timern så snart bollen inte vidrör gameover -kontakten

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

// Blinka gameover -texten till LCD -skärmen och återställ poängen och bollarna

if (bollar <= 0) {lcd.setCursor (0, 0); för (int i = 5; i> = 1; i--) {lcd.clear (); fördröjning (250); lcd.print ("SPEL OVER"); lcd.setCursor (0, 1); lcd.print ("Försök igen?"); fördröjning (250); } lcd.clear (); poäng = 0; ballGateServo.write (0); highscoreReached = false; bollar = 3; }

if (poäng> highscore och! highscoreReached) {

lcd.setCursor (0, 0); för (int i = 5; i> = 1; i--) {lcd.clear (); fördröjning (250); lcd.print ("NEW HIGHSCORE"); lcd.setCursor (0, 1); lcd.print ("Plötslig död!"); fördröjning (250); } lcd.clear (); bollar = 1; ballGateServo.write (120); highscore = poäng; highscoreReached = true; }

// Uppdatera poängen om den nuvarande poängen är högre

if (poäng> highscore) {highscore = poäng; }

// Ställ markören på rad 0

lcd.setCursor (0, 0); // Skriv ut aktuell (hög) poäng till lcd if (poäng <= 0) {lcd.print ("Highscore:" + String (highscore) + ""); } annat {lcd.print ("Poäng:" + Sträng (poäng) + ""); }

// Ställ markören på rad 1

lcd.setCursor (0, 1);

// Skriv ut den aktuella mängden bollar till LCD -skärmen

lcd.print ("Bollar:" + Sträng (bollar)); }

Rekommenderad: