INHOUDSOPGAWE:
2025 Outeur: John Day | [email protected]. Laas verander: 2025-01-13 06:56
Aangesien ek nog altyd lief was vir beide flippermasjiene en elektronika, het ek besluit om my eie flipperkasmasjien te bou. Ek het Arduino gekies vir die programmering en elektronika, want dit is 'n hoogs toeganklike platform wat kompak en maklik is om te gebruik.
In hierdie gids sal ek my ontwikkelingsproses verduidelik, sodat miskien een van u entoesiaste iets kan skep.
Stap 1: Bou die saak
Kom ons begin met die geval van die flippermasjien. Ek het 'n redelik eenvoudige konstruksie gemaak. Ek het 'n onderplaat afgesaag en 4 klein houtpilare in die hoeke gebruik om die muurstukke met mekaar te verbind. Die grootte van u omhulsel is u eie keuse; ek het besluit om dit 'n bietjie kleiner te maak as 'n oorspronklike flipperkast, aangesien ek nie van plan was om ekstra skouspelagtige bykomstighede by te voeg om die ruimte vol te maak nie. Ek het skroewe en gom gebruik om die saak so bestendig moontlik te maak. Agter het ek twee gate in die vloerstuk geboor vir die twee bene wat die flipperkastie die ikoniese kantel sal gee. Die hoogte van die bene is weer aan u. Hoe langer jy die bene maak, hoe vinniger rol die bal (afwaarts).
Stap 2: Die bou van die Flipper -werktuigkundige
Omdat ek die koste van hierdie projek wou beperk, het ek besluit om volledig meganiese flippers te maak in plaas van elektroniese. As u geïnteresseerd is in elektroniese flippers, kan u 'n konstruksie gebruik wat ietwat dieselfde is, maar met 'n sogenaamde 'solenoïde' daaraan gekoppel (solenoïdes met genoeg krag om die flippers te beheer was vir my te duur).
Ek het begin deur twee gate in die onderkant te boor vir die draaipunt van albei flippers. Ek het die gate (na my mening) 'n bietjie te na aan mekaar geboor, en dit het veroorsaak dat die spel uiteindelik 'n bietjie te maklik was. Wees dus versigtig om nie die flippers te naby aan mekaar te plaas nie, tensy u 'n maklike spelstyl wil hê.
Ek het ook twee gate in albei die sywande parallel met die flippergate geboor. Hierdie gate moet gebruik word vir die twee flipper knoppies.
Ek het vere gebruik om die flippers terug te trek na die oorspronklike posisie, en ek het 'n draaibare konstruksie tussen die flippers en die knoppies gemaak om hulle te laat draai wanneer die knoppies ingedruk word. Om te keer dat die vere die vouers te ver terugtrek, het ek twee skroewe geplaas om die flippers in hul oorspronklike posisie te hou.
Stap 3: Plaas die mure
Ek het 'n paar mure geplaas om die flipper na die flippers te lei. Hulle is baie eenvoudig om te maak. Boor net 3 gate in die onderkant van die kas en druk drie houtpenne in. Draai 'n rekkie om die penne en jy is klaar.
Stap 4: Voeg die tellingblokke by
Die tellingblokke is een van die belangrikste dele van die flippermasjien, dus maak seker dat u hierdie deel reg doen. Ek het drie tellingblokke vir my flippermasjien gemaak, maar dit is alles aan jou.
Ek het 'n klein stukkie besemstok afgesaag en koperdraad daaroor toegedraai. Die arduino sal hierdie koperdraad voortdurend met 5V voed. Ek het vier penvere aan die kant gesoldeer vir beter kontak met die bal.
Die manier waarop die tellingblokke werk, is dat die bal 'n stroombaan voltooi wat lei tot 'n invoerpen op die Arduino. Wat ek dus gedoen het, was om aluminiumfoelie aan die onderkant van die omhulsel vas te plak (om die koper nie aan te raak nie) en om die foelie vas te maak tot 'n pen op die Arduino. As die bal beide die koper en die aluminium tref, is die kring voltooi en die Arduino sal 'n sein ontvang.
Ek het al die puntblokke met die aluminiumfoelie verbind, maar hou in gedagte dat die klewerige kant NIE elektrisiteit gelei nie.
Stap 5: Voeg die spel oor kontak by
Aan die onderkant van die flippermasjien, tussen die flippers, het ek 'n speletjie oor kontak bygevoeg. Elke keer as die bal hierdie kontak raak, sal die speler 'n bal verloor. Die konstruksie wat ek gemaak het, is baie dieselfde as die tellingblokke. Net hier het ek twee skroewe gebruik, en weer 'n stuk aluminiumfoelie aan die onderkant.
Stap 6: Boor die kabelgate
Voordat ons alles na die Arduino begin bedrieg, moet ons eers 'n paar gate vir die kabels boor. Ek het 'n gat deur albei stukke aluminiumfoelie geboor, so een gat in die aluminiumfoelie naby die puntblokke en een gat in die aluminiumfoelie naby die spel oor kontak.
Verder het ek ook 'n gat links onder, tussen die mure, geboor vir die kabel wat na die ekstra balhek Servo lei.
Daar moet ook 'n gat vir die kabel aan die onderkant van die LCD wees.
Stap 7: Alles bedek
Ek het hierdie skema gemaak om 'n beter oorsig te kry van waarheen al die kabels moet gaan. Die kruise is die punte waar kabels verbind word. Ek het soveel as moontlik probeer soldeer om alles 'n bietjie bestendiger en betroubaarder te maak. Die bedrading sal 'n rukkie neem, maar nadat dit klaar is, is jy amper daar!
Stap 8: Laai die kode op
Laai die volgende kode op na u Arduino om u flippermasjien lewendig te maak!
// Sluit die biblioteek vir die lcd in
#include #include
// Initialiseer die lcd -datapennetjies
LiquidCrystal lcd (7, 8, 9, 10, 11, 12);
// Skep 'n servo
ServobalGateServo;
// Skep veranderlikes vir die penne wat ons gebruik
int gameoverPin = 6; int scorePin = 5; int speakerPin = 4; int ballGateServoPin = 3;
// Initialiseer spelveranderlikes vir die flippermasjien
int telling = 0; int highscore = 500; bool highscoreReached = false; int balle = 3; int gameoverTimer = 0; int gameoverTimerDuration = 100; bool gameoverTriggered = vals;
// voer hierdie kode een keer in die eerste raam uit
ongeldige opstelling () {// Stel die pinMode in vir die penne wat ons pinMode gebruik (gameoverPin, INPUT); pinMode (scorePin, INPUT);
// Initialiseer die lcd deur die breedte en hoogte te gee
lcd.begin (16, 2);
// Bevestig die balhek -servo aan die toepaslike pen
ballGateServo.attach (ballGateServoPin);
// Stel die hek -servo terug in die beginposisie
ballGateServo.write (0); }
// Begin hierdie kode elke enkele raam
leemte -lus () {// Vang die peninvoer in gameoverState = digitalRead (gameoverPin); int scoreState = digitalRead (scorePin);
// Voeg by tot die telling as insette ontvang word
if (scoreState) {toon (speakerPin, 1000); telling += 10; } anders {noTone (4); }
// Trek van die balle af as die gameover -put ontstaan
as (gameoverState en! gameoverTriggered) {balls -= 1; gameoverTriggered = waar; gameoverTimer = gameoverTimerDuration; }
// Begin die gameover -timer sodra die bal nie die gameover -kontak raak nie
as (! gameoverState) {if (gameoverTimer> = 1) {gameoverTimer -= 1; } anders {gameoverTriggered = false; }}
// Knip die gameover -teks na die lcd en stel die telling en balle terug
as (balle <= 0) {lcd.setCursor (0, 0); vir (int i = 5; i> = 1; i--) {lcd.clear (); vertraging (250); lcd.print ("GAME OVER"); lcd.setCursor (0, 1); lcd.print ("Probeer weer?"); vertraging (250); } lcd.clear (); telling = 0; ballGateServo.write (0); highscoreReached = vals; balle = 3; }
if (score> highscore en! highscoreReached) {
lcd.setCursor (0, 0); vir (int i = 5; i> = 1; i--) {lcd.clear (); vertraging (250); lcd.print ("NUWE HOOGKERN"); lcd.setCursor (0, 1); lcd.print ("Skielike dood!"); vertraging (250); } lcd.clear (); balle = 1; ballGateServo.write (120); hoë telling = telling; highscoreReached = true; }
// Werk die hoë telling op as die huidige telling hoër is
as (telling> hoë telling) {hoë telling = telling; }
// Stel die wyser op reël 0
lcd.setCursor (0, 0); // Druk die huidige (hoë) telling na die lcd as (telling <= 0) {lcd.print ("Hoogste telling:" + String (hoë telling) + ""); } anders {lcd.print ("Telling:" + Snaar (telling) + ""); }
// Stel die wyser op reël 1
lcd.setCursor (0, 1);
// Druk die huidige hoeveelheid balle op die lcd
lcd.print ("Balls:" + String (balls)); }