Inhoudsopgave:
2025 Auteur: John Day | [email protected]. Laatst gewijzigd: 2025-01-13 06:57
Omdat ik altijd van zowel flipperkasten als elektronica heb gehouden, besloot ik mijn eigen flipperkast te bouwen. Ik koos Arduino voor de programmering en elektronica, omdat het een zeer toegankelijk platform is dat zowel compact als gebruiksvriendelijk is.
In deze gids zal ik mijn ontwikkelproces uitleggen, zodat misschien een van jullie enthousiastelingen iets soortgelijks kan maken.
Stap 1: De zaak bouwen
Laten we beginnen met het geval van de flipperkast. Ik heb een vrij eenvoudige constructie gemaakt. Ik zaagde een bodemplaat af en gebruikte 4 kleine houten pilaren in de hoeken om de muurstukken met elkaar te verbinden. De grootte van je koffer is je eigen keuze, ik heb ervoor gekozen om het een beetje kleiner te maken dan een originele flipperkast omdat ik niet van plan was om super spectaculaire extra's toe te voegen om de ruimte op te vullen. Ik heb zowel schroeven als lijm gebruikt om de behuizing zo stabiel mogelijk te maken. Aan de achterkant heb ik twee gaten in het vloerstuk geboord voor de twee poten die de flipperkast de iconische kanteling zullen geven. Nogmaals, de hoogte van de benen is helemaal aan jou. Hoe hoger je de benen maakt, hoe sneller de bal (naar beneden) zal rollen.
Stap 2: De Flipper Mechanic construeren
Omdat ik de kosten van dit project wilde beperken, besloot ik om volledig mechanische flippers te maken in plaats van elektronische. Als je geïnteresseerd bent in elektronische flippers, kun je een constructie gebruiken die enigszins hetzelfde is, maar dan met een zogenaamde 'solenoïde' eraan (solenoïdes met voldoende vermogen om de flippers aan te sturen waren te duur voor mij).
Ik begon met het boren van twee gaten in de bodem voor het draaipunt van beide flippers. Ik heb de gaten (naar mijn mening) iets te dicht op elkaar geboord, waardoor het spel uiteindelijk iets te gemakkelijk werd. Zorg er dus voor dat je de flippers niet te dicht bij elkaar plaatst, tenzij je een makkelijke speelstijl wilt.
Ik heb ook twee gaten geboord in beide zijwanden evenwijdig aan de flippergaten. Deze gaten worden gebruikt voor de twee flipperknoppen.
Ik gebruikte veren om de flippers terug in de oorspronkelijke positie te trekken, en maakte een scharnierende constructie tussen de flippers en de knoppen om ze te laten draaien wanneer de knoppen worden ingedrukt. Om te voorkomen dat de veren de flippers te ver terugtrekken, heb ik twee schroeven geplaatst om de flippers in hun oorspronkelijke positie te houden.
Stap 3: De muren plaatsen
Ik heb een paar muren geplaatst om de flipperkast naar de flippers te leiden. Ze zijn heel eenvoudig te maken. Boor eenvoudig 3 gaten in de bodem van de koffer en duw er drie houten pinnen in. Wikkel een elastiekje om de pinnen en je bent klaar.
Stap 4: De scoreblokken toevoegen
De scoreblokken zijn een van de meest cruciale onderdelen van de flipperkast, dus zorg ervoor dat je dit onderdeel goed doet. Ik heb drie scoreblokken gemaakt voor mijn flipperkast, maar nogmaals, dit is allemaal aan jou.
Ik zaagde een klein stukje van een bezemsteel af en wikkelde er koperdraad omheen. De arduino zal deze koperdraad constant van stroom voorzien met 5V. Ik heb vier penveren aan de zijkant gesoldeerd voor een beter contact met de bal.
De manier waarop de scoreblokken werken, is dat de bal een circuit voltooit dat leidt naar een invoerpin op de Arduino. Dus wat ik deed, was aluminiumfolie op de bodem van de behuizing plakken (DE KOPER NIET AANRAKEN) en de folie op een pin op de Arduino aansluiten. Telkens wanneer de bal zowel het koper als het aluminium raakt, is het circuit voltooid en ontvangt de Arduino een signaal.
Ik heb alle scoreblokken met elkaar verbonden met behulp van de aluminiumfolie, maar houd er rekening mee dat de plakkerige kant GEEN elektriciteit geleidt.
Stap 5: Het Game Over-contact toevoegen
Onderaan de flipperkast, tussen de flippers, heb ik een game over contact toegevoegd. Telkens wanneer de bal dit contact raakt, verliest de speler een bal. De constructie die ik heb gemaakt is vrijwel hetzelfde als de scoreblokken. Alleen hier heb ik twee schroeven gebruikt, en weer een stukje aluminiumfolie aan de onderkant.
Stap 6: De kabelgaten boren
Voordat we alles gaan aansluiten op de Arduino, moeten we eerst een paar gaten voor de kabels boren. Ik boorde een gat door beide stukken aluminiumfolie, dus een gat in de aluminiumfolie in de buurt van de scoreblokken en een gat in de aluminiumfolie bij het spel over contact.
Daarnaast heb ik linksonder, tussen de muren, een gat geboord voor de kabel naar de extra kogelpoort Servo.
Er moet ook een gat zijn voor de kabel die aan de onderkant is aangesloten op het LCD-scherm.
Stap 7: Alles aansluiten
Ik heb dit schema gemaakt om een beter overzicht te hebben van waar alle kabels moeten komen. De kruisjes zijn de punten waar kabels op aansluiten. Ik heb geprobeerd zoveel mogelijk te solderen om alles een beetje stabieler en betrouwbaarder te maken. De bedrading zal even duren, maar daarna ben je er bijna!
Stap 8: De code uploaden
Upload de volgende code naar je Arduino om je flipperkast tot leven te laten komen!
// Voeg de bibliotheek voor de lcd toe
#include #include
// Initialiseer de lcd-gegevenspinnen
LiquidCrystal-lcd (7, 8, 9, 10, 11, 12);
// Maak een servo
ServobalGateServo;
// Maak variabelen voor de pinnen die we gebruiken
int gameoverPin = 6; int scorePin = 5; int luidsprekerPin = 4; int ballGateServoPin = 3;
// Initialiseer gameplay-variabelen voor de flipperkast
int-score = 0; int hoge score = 500; bool highscoreReached = false; int ballen = 3; int gameoverTimer = 0; int gameoverTimerDuration = 100; bool gameoverTriggered = false;
// voer deze code één keer uit bij het eerste frame
void setup () {// Stel de pinMode in voor de pinnen die we gebruiken pinMode (gameoverPin, INPUT); pinMode(scorePin, INPUT);
// Initialiseer het lcd-scherm door de breedte en hoogte op te geven
lcd.begin (16, 2);
// Bevestig de balpoortservo aan de juiste pin
ballGateServo.attach (ballGateServoPin);
// Reset de poortservo naar de startpositie
ballGateServo.write(0); }
// Voer deze code elk frame uit
void loop () {// Leg de pin-ingangen vast int gameoverState = digitalRead (gameoverPin); int scoreState = digitalRead (scorePin);
// Toevoegen aan de score als invoer is ontvangen
if (scoreState) { tone(speakerPin, 1000); score += 10; } else { noTone(4); }
// Trek af van de ballen als de gameover pit wordt geactiveerd
if (gameoverState en !gameoverTriggered) { balls -= 1; gameoverTriggered = waar; gameoverTimer = gameoverTimerDuur; }
// Start de gameover-timer zodra de bal het gameover-contact niet raakt
if (!gameoverState) { if (gameoverTimer >= 1) { gameoverTimer -= 1; } else { gameoverTriggered = false; } }
// Knipper de gameover-tekst naar het lcd-scherm en reset de score en ballen
if (ballen <= 0) { lcd.setCursor (0, 0); voor (int i = 5; i>= 1; i--) { lcd.clear(); vertraging (250); lcd.print("SPEL OVER"); lcd.setCursor(0, 1); lcd.print("Probeer het opnieuw?"); vertraging (250); } lcd.clear(); score = 0; ballGateServo.write(0); highscoreReached = false; ballen = 3; }
if (score > highscore en !highscoreReached) {
lcd.setCursor(0, 0); voor (int i = 5; i > = 1; i--) { lcd.clear(); vertraging (250); lcd.print("NIEUWE HIGHSCORE"); lcd.setCursor(0, 1); lcd.print("Plotselinge dood!"); vertraging (250); } lcd.clear(); ballen = 1; ballGateServo.write(120); hoge score = score; highscoreReached = waar; }
// Werk de highscore bij als de huidige score hoger is
if (score > highscore) { highscore = score; }
// Zet de cursor op regel 0
lcd.setCursor(0, 0); // Print de huidige (hoge) score naar het lcd if (score <= 0) { lcd.print("Highscore: " + String (highscore) + " "); } else { lcd.print("Score: " + String(score) + " "); }
// Zet de cursor op regel 1
lcd.setCursor(0, 1);
// Print het huidige aantal ballen naar het lcd
lcd.print("Balls: " + String(ballen)); }