Sadržaj:

Arduino: Pinball stroj: 8 koraka (sa slikama)
Arduino: Pinball stroj: 8 koraka (sa slikama)

Video: Arduino: Pinball stroj: 8 koraka (sa slikama)

Video: Arduino: Pinball stroj: 8 koraka (sa slikama)
Video: It Became Unliveable! ~ Abandoned Home Of The Spenser's In The USA 2024, Lipanj
Anonim
Image
Image

Kako sam oduvijek volio i flipere i elektroniku, odlučio sam izgraditi vlastiti fliper. Odabrao sam Arduino za programiranje i elektroniku, jer je to vrlo pristupačna platforma koja je i kompaktna i laka za korištenje.

U ovom vodiču ću objasniti svoj razvojni proces, pa bi možda netko od vas entuzijasta mogao stvoriti nešto slično.

Korak 1: Izgradnja kućišta

Izgradnja slučaja
Izgradnja slučaja

Krenimo od kućišta flipera. Napravio sam prilično jednostavnu konstrukciju. Otpilio sam donju ploču i upotrijebio 4 sićušna drvena stupa u uglovima za spajanje zidnih komada. Veličina vašeg kućišta je vaš vlastiti izbor, odlučila sam ga učiniti malo manjim od originalnog flipera jer nisam planirala dodavati super spektakularne dodatke kako bi ispunila prostor. Koristio sam oba vijka i ljepilo kako bi kućište bilo što stabilnije. Straga sam izbušio dvije rupe u podu za dvije noge koje će fliperu dati kultni nagib. Opet, visina nogu ovisi o vama. Što više noge napravite, lopta će se brže kotrljati (prema dolje).

Korak 2: Izrada mehaničara peraje

Konstrukcija mehaničara peraja
Konstrukcija mehaničara peraja

Kako sam želio ograničiti cijenu ovog projekta, odlučio sam napraviti potpuno mehaničke peraje umjesto elektroničkih. Ako ste zainteresirani za elektroničke peraje, možete upotrijebiti konstrukciju koja je donekle ista, ali s takozvanim 'solenoidom' (na nju su mi bili preskupi solenoidi s dovoljno snage za upravljanje perajama).

Počeo sam izbušivši dvije rupe na dnu za točku zakretanja oba peraja. Izbušio sam rupe (po mom mišljenju) malo preblizu jedan drugome, a to je na kraju dovelo do toga da je igra bila previše laka. Zato pazite da peraje ne stavljate preblizu jedan drugome, osim ako ne želite jednostavan stil igre.

Također sam izbušio dvije rupe na obje bočne stjenke paralelno s rupama za peraje. Ove se rupe moraju koristiti za dva gumba na peraji.

Koristio sam opruge da povučem peraje natrag u izvorni položaj i napravio zaokretnu konstrukciju između peraja i gumba kako bi se oni rotirali pri pritisku gumba. Kako bih spriječio opruge da previše povlače peraje, stavio sam dva vijka koji drže peraje u izvornom položaju.

Korak 3: Postavljanje zidova

Postavljanje zidova
Postavljanje zidova

Postavio sam nekoliko zidova za preusmjeravanje flipera prema perajama. Vrlo su jednostavni za izradu. Jednostavno izbušite 3 rupe na dnu kućišta i gurnite tri drvena zatiča. Omotajte gumicu oko igala i gotovi ste.

Korak 4: Dodavanje bodovnih blokova

Dodavanje bodovnih blokova
Dodavanje bodovnih blokova
Dodavanje bodovnih blokova
Dodavanje bodovnih blokova

Bodovi s rezultatima jedan su od najvažnijih dijelova flipera, stoga provjerite jeste li ovaj dio odradili ispravno. Napravio sam tri bloka za bodove za svoj fliper, ali opet sve ovisi o vama.

Otpilio sam mali komad metle i omotao bakrenu žicu oko njega. Arduino će stalno napajati ovu bakrenu žicu s 5V. Lemio sam četiri opruge olovke sa strane radi boljeg kontakta s loptom.

Način na koji blokovi rezultata funkcioniraju je da lopta završi krug koji vodi do ulaznog pina na Arduinu. Dakle, ono što sam učinio je zalijepiti aluminijsku foliju na dno kućišta (NE DIRAJUĆI BAKAR) i spojiti foliju do igle na Arduinu. Kad god lopta pogodi i bakar i aluminij, krug je dovršen i Arduino će primiti signal.

Sve spojne blokove spojio sam pomoću aluminijske folije, ali imajte na umu da ljepljiva strana NE provodi električnu struju.

Korak 5: Dodavanje igre preko kontakta

Dodavanje igre preko kontakta
Dodavanje igre preko kontakta

Na dnu flipera, između peraja, dodao sam igru preko kontakta. Kad god lopta pogodi ovaj kontakt, igrač će izgubiti loptu. Konstrukcija koju sam napravio vrlo je ista kao i partiture. Samo sam ovdje upotrijebio dva vijka, a na dnu opet komad aluminijske folije.

Korak 6: Bušenje rupa za kabel

Bušenje rupa za kabele
Bušenje rupa za kabele
Bušenje rupa za kabele
Bušenje rupa za kabele
Bušenje rupa za kabele
Bušenje rupa za kabele

Prije nego počnemo ožičavati sve do Arduina, prvo moramo izbušiti nekoliko rupa za kabele. Izbušio sam rupu kroz oba komada aluminijske folije, tako da je jedna rupa u aluminijskoj foliji blizu razdjelnih blokova i jedna rupa u aluminijskoj foliji u blizini igre preko kontakta.

Osim toga, izbušio sam i rupu u donjem lijevom kutu, između zidova, za kabel koji vodi do dodatne kugle Servo.

Također bi trebao biti otvor za kabel spojen na LCD na dnu.

Korak 7: Ožičite sve

Ožičenje svega
Ožičenje svega
Ožičenje svega
Ožičenje svega

Napravio sam ovu shemu kako bih imao bolji pregled o tome gdje svi kabeli trebaju ići. Križevi su mjesta spajanja kabela. Pokušao sam lemiti što je više moguće kako bih sve učinio stabilnijim i pouzdanijim. Ožičenje će potrajati neko vrijeme, ali nakon što to učinite, gotovo ste stigli!

Korak 8: Prijenos koda

Prenesite sljedeći kôd na svoj Arduino kako bi vaš fliper zaživio!

// Uključi knjižnicu za lcd

#include #include

// Inicijalizacija pinova lcd podataka

LCD tekući kristal (7, 8, 9, 10, 11, 12);

// Napravite servo

Servo ballGateServo;

// Stvaranje varijabli za pinove koje koristimo

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

// Pokretanje varijabli igranja za fliper

int rezultat = 0; int najbolji rezultat = 500; bool highscoreReached = false; int kuglice = 3; int gameoverTimer = 0; int gameoverTimerDuration = 100; bool gameoverTriggered = false;

// pokrenite ovaj kod jednom u prvom okviru

void setup () {// Postavite pinMode za pinove koje koristimo pinMode (gameoverPin, INPUT); pinMode (scorePin, INPUT);

// Pokretanje lcd -a davanjem širine i visine

lcd.begin (16, 2);

// Pričvrstite servo sa kugličnim vratima na odgovarajući pin

ballGateServo.attach (ballGateServoPin);

// Vratite servo vrata na početni položaj

ballGateServo.write (0); }

// Pokreni ovaj kod svaki okvir

void loop () {// Hvatanje pin ulaza int gameoverState = digitalRead (gameoverPin); int scoreState = digitalRead (scorePin);

// Dodaje rezultat ako se primi ulaz

if (scoreState) {ton (speakerPin, 1000); ocjena += 10; } else {noTone (4); }

// Oduzmite loptice ako se aktivira gameover pit

if (gameoverState i! gameoverTriggered) {loptice -= 1; gameoverTriggered = istina; gameoverTimer = gameoverTimerDuration; }

// Pokreni mjerač vremena za prebacivanje igre čim lopta ne dodirne kontakt za promjenu igre

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

// Trepćite tekst prelaska na LCD i resetirajte rezultat i loptice

if (kuglice <= 0) {lcd.setCursor (0, 0); za (int i = 5; i> = 1; i--) {lcd.clear (); kašnjenje (250); lcd.print ("GAME OVER"); lcd.setCursor (0, 1); lcd.print ("Pokušati ponovo?"); kašnjenje (250); } lcd.clear (); rezultat = 0; ballGateServo.write (0); highscoreReached = false; kuglice = 3; }

if (rezultat> highscore i! highscoreReached) {

lcd.setCursor (0, 0); za (int i = 5; i> = 1; i--) {lcd.clear (); kašnjenje (250); lcd.print ("NEW HIGHSCORE"); lcd.setCursor (0, 1); lcd.print ("Iznenadna smrt!"); kašnjenje (250); } lcd.clear (); kuglice = 1; ballGateServo.write (120); najbolji rezultat = rezultat; highscoreReached = true; }

// Ažurirajte rezultat ako je trenutni rezultat veći

if (rezultat> rezultat) {rezultat = rezultat; }

// Postavite kursor na redak 0

lcd.setCursor (0, 0); // Ispis trenutnog (najvišeg) rezultata na lcd if (rezultat <= 0) {lcd.print ("Highscore:" + String (highscore) + ""); } else {lcd.print ("Score:" + String (score) + ""); }

// Postavite kursor na 1. redak

lcd.setCursor (0, 1);

// Ispis trenutne količine kuglica na lcd

lcd.print ("Loptice:" + String (kugle)); }

Preporučeni: