INHOUDSOPGAWE:

Arduino: flippermasjien: 8 stappe (met foto's)
Arduino: flippermasjien: 8 stappe (met foto's)

Video: Arduino: flippermasjien: 8 stappe (met foto's)

Video: Arduino: flippermasjien: 8 stappe (met foto's)
Video: Using 28BYJ-48 Stepper Motor Push button Speed with 8 projects: Ultimate Video Tutorial Lesson 107 2024, November
Anonim
Image
Image

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

Bou die saak
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

Die bou van die Flipper -werktuigkundige
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

Plaas die mure
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

Voeg die tellingblokke by
Voeg die tellingblokke by
Voeg die tellingblokke by
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

Voeg die spel oor kontak by
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

Boor die kabelgate
Boor die kabelgate
Boor die kabelgate
Boor die kabelgate
Boor die kabelgate
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

Alles bedek
Alles bedek
Alles bedek
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)); }

Aanbeveel: