Sadržaj:
2025 Autor: John Day | [email protected]. Zadnja izmjena: 2025-01-13 06:57
Kako sam oduvijek volio flipere i elektroniku, odlučio sam da napravim svoju fliper mašinu. 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 neko od vas entuzijasta mogao stvoriti nešto slično.
Korak 1: Izgradnja kućišta
Počnimo sa slučajem fliper mašine. 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čio sam ga učiniti malo manjim od originalne fliper mašine jer nisam planirao dodavati nikakve super spektakularne dodatke koji će popuniti prostor. Koristio sam i vijke i ljepilo kako bi kućište bilo što stabilnije. Straga sam izbušio dvije rupe u komadu poda za dvije noge koje će fliper mašini dati ikonski nagib. Opet, visina nogu ovisi o vama. Što više noge napravite, lopta će se brže kotrljati (prema dolje).
Korak 2: Konstrukcija mehaničara za prevrtanje
Kako sam htio ograničiti troškove ovog projekta, odlučio sam napraviti potpuno mehaničke peraje umjesto elektronskih. 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 tako što sam izbušio dvije rupe na dnu za tačku okretanja oba peraja. Izbušio sam rupe (po mom mišljenju) malo preblizu jedan drugom, i 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 rupe trebaju se koristiti za dva dugmeta na peraji.
Koristio sam opruge da povučem peraje natrag u prvobitni položaj i napravio zaokretnu konstrukciju između peraja i dugmadi kako bih ih rotirao kada se pritisnu dugmad. Da spriječim opruge da previše povlače peraje, stavio sam dva vijka da držim peraje u njihovom izvornom položaju.
Korak 3: 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 igla. Omotajte gumicu oko igala i gotovi ste.
Korak 4: Dodavanje bodovnih blokova
Blokovi za bodove jedan su od najvažnijih dijelova fliper mašine, pa se potrudite da ovaj dio obavite ispravno. Napravio sam tri bloka za bodove za svoju fliper mašinu, 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 za olovku sa strane radi boljeg kontakta s loptom.
Način na koji blokovi rezultata funkcionišu 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
Na dnu fliper mašine, 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 i opet komad aluminijske folije na dnu.
Korak 6: 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 blokova za bodove, a 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
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, skoro ste stigli!
Korak 8: Učitavanje koda
Prenesite sljedeći kôd na svoj Arduino kako bi vaša fliper mašina zaživjela!
// Uključuje biblioteku za lcd
#include #include
// Inicijalizacija pinova lcd podataka
LiquidCrystal lcd (7, 8, 9, 10, 11, 12);
// Kreirajte servo
Servo ballGateServo;
// Kreiranje varijabli za pinove koje koristimo
int gameoverPin = 6; int scorePin = 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);
// Pokrećemo lcd davanjem širine i visine
lcd.begin (16, 2);
// Pričvrstite servo sa kugličnim vratima na odgovarajuću iglu
ballGateServo.attach (ballGateServoPin);
// Vratite servo vrata na početnu poziciju
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); rezultat += 10; } else {noTone (4); }
// Oduzmite loptice ako se aktivira gameover pit
if (gameoverState i! gameoverTriggered) {loptice -= 1; gameoverTriggered = true; 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 igre na LCD i resetirajte rezultat i loptice
if (kuglice <= 0) {lcd.setCursor (0, 0); for (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> rezultat i! rezultat postignut) {
lcd.setCursor (0, 0); for (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 red 0
lcd.setCursor (0, 0); // Odštampa trenutni (visoki) rezultat na LCD -u if (rezultat <= 0) {lcd.print ("Highscore:" + String (highscore) + ""); } else {lcd.print ("Score:" + String (score) + ""); }
// Postavite kursor na red 1
lcd.setCursor (0, 1);
// Odštampajte trenutnu količinu kuglica na LCD -u
lcd.print ("Loptice:" + niz (kuglice)); }