Obsah:

Arduino: Pinball Machine: 8 krokov (s obrázkami)
Arduino: Pinball Machine: 8 krokov (s obrázkami)

Video: Arduino: Pinball Machine: 8 krokov (s obrázkami)

Video: Arduino: Pinball Machine: 8 krokov (s obrázkami)
Video: It Became Unliveable! ~ Abandoned Home Of The Spenser's In The USA 2024, Jún
Anonim
Image
Image

Pretože som vždy miloval pinball a elektroniku, rozhodol som sa postaviť svoj vlastný pinball. Arduino som si vybral pre programovanie a elektroniku, pretože je to vysoko prístupná platforma, ktorá je kompaktná a ľahko sa používa.

V tejto príručke vysvetlím svoj vývojový proces, takže možno jeden z vás nadšencov dokáže vytvoriť niečo podobné.

Krok 1: Zostavenie puzdra

Budovanie prípadu
Budovanie prípadu

Začnime s prípadom hracieho automatu. Urobil som celkom jednoduchú stavbu. Odrezal som spodnú dosku a pomocou 4 malých drevených stĺpikov v rohoch spojil diely steny. Veľkosť vášho puzdra je na vás, ja som sa rozhodol urobiť ho o niečo menší ako originálny pinball, pretože som neplánoval pridať žiadne super efektné doplnky na vyplnenie priestoru. Použil som skrutky aj lepidlo, aby bolo puzdro čo najstabilnejšie. Na zadnej strane som vyvŕtal dva otvory v podlahovom diele pre dve nohy, ktoré dodajú hre pinball ikonický náklon. Výška nôh je opäť na vás. Čím vyššie nohy urobíte, tým rýchlejšie sa bude loptička otáčať (smerom dole).

Krok 2: Konštrukcia mechanika plutiev

Konštrukcia mechanika plutiev
Konštrukcia mechanika plutiev

Keďže som chcel obmedziť náklady na tento projekt, rozhodol som sa, že namiesto elektronických vyrobím plne mechanické plutvy. Ak vás zaujímajú elektronické plutvy, môžete použiť konštrukciu, ktorá je do istej miery rovnaká, ale je k nej pripojený takzvaný „solenoid“(solenoidy s dostatočným výkonom na ovládanie plutiev boli pre mňa príliš drahé).

Začal som vŕtaním dvoch otvorov do spodnej časti pre otočný bod oboch plutiev. Vŕtal som diery (podľa mňa) príliš blízko seba, a preto bola hra nakoniec príliš jednoduchá. Dávajte si teda pozor, aby ste plutvy neumiestňovali príliš blízko seba, pokiaľ nechcete jednoduchý štýl hry.

Vyvŕtal som tiež dva otvory do oboch bočných stien rovnobežne s otvormi na plutvy. Tieto otvory majú byť použité pre dve plutvové gombíky.

Použil som pružiny na stiahnutie plutiev späť do pôvodnej polohy a medzi plutvami a gombíkmi som urobil otočnú konštrukciu, aby sa pri stlačení tlačidiel otáčali. Aby pružiny neťahali plutvy príliš dozadu, umiestnil som dve skrutky, ktoré držia plutvy v pôvodnej polohe.

Krok 3: Umiestnenie stien

Umiestnenie múrov
Umiestnenie múrov

Položil som pár stien, aby som pinball presmeroval na plutvy. Ich výroba je veľmi jednoduchá. Jednoducho vyvŕtajte 3 otvory v spodnej časti puzdra a zatlačte tri drevené čapy. Otočte gumičku okolo špendlíkov a máte hotovo.

Krok 4: Pridanie blokov skóre

Pridanie blokov skóre
Pridanie blokov skóre
Pridanie blokov skóre
Pridanie blokov skóre

Bloky skóre sú jednou z najdôležitejších častí hracieho automatu, preto túto časť urobte správne. Vytvoril som tri bloky skóre pre svoj pinball, ale opäť je to všetko na vás.

Odpílil som malý kúsok metly a omotal som ho medeným drôtom. Arduino bude tento medený drôt napájať nepretržite 5V. Na stranu som spájkoval štyri pružiny pera, aby som mal lepší kontakt s loptou.

Bloky skóre fungujú tak, že lopta dokončí obvod, ktorý vedie k vstupnému kolíku na Arduine. Čo som teda urobil, som na spodok puzdra nalepil hliníkovú fóliu (NEDOTÝKAJÚC SA MOPY) a fóliu navinul až na kolík na Arduine. Kedykoľvek loptička zasiahne meď a hliník, obvod je kompletný a Arduino dostane signál.

Pripojil som všetky bloky skóre dohromady pomocou hliníkovej fólie, ale majte na pamäti, že lepkavá strana NEVEDIE elektrický prúd.

Krok 5: Pridanie hry cez kontakt

Pridanie hry cez kontakt
Pridanie hry cez kontakt

V spodnej časti hracieho automatu, medzi plutvy, som pridal hru o kontakt. Kedykoľvek lopta zasiahne tento kontakt, hráč stratí loptu. Konštrukcia, ktorú som vyrobil, sa do značnej miery zhoduje s blokami partitúry. Len tu som použil dve skrutky a na spodnej časti opäť kúsok alobalu.

Krok 6: Vŕtanie káblových otvorov

Vŕtanie káblových otvorov
Vŕtanie káblových otvorov
Vŕtanie káblových otvorov
Vŕtanie káblových otvorov
Vŕtanie káblových otvorov
Vŕtanie káblových otvorov

Predtým, ako začneme všetko zapojovať do Arduina, musíme najskôr vyvŕtať niekoľko otvorov pre káble. Cez oba kusy hliníkovej fólie som vyvŕtal dieru, takže jeden otvor v hliníkovej fólii v blízkosti blokov skóre a jeden otvor v hliníkovej fólii v blízkosti hry cez kontakt.

Okrem toho som tiež vľavo dole, medzi stenami, vyvŕtal otvor na kábel vedúci k servu s extra guľovou bránou.

V spodnej časti by mal byť aj otvor pre kábel pripojený k LCD.

Krok 7: Zapojenie všetkého

Zapojenie všetkého
Zapojenie všetkého
Zapojenie všetkého
Zapojenie všetkého

Túto schému som urobil, aby som mal lepší prehľad o tom, kam by mali ísť všetky káble. Kríže sú body, kde sa spájajú káble. Snažil som sa spájkovať čo najviac, aby bolo všetko o niečo stabilnejšie a spoľahlivejšie. Zapojenie bude nejaký čas trvať, ale keď to urobíte, budete skoro tam!

Krok 8: Odovzdanie kódu

Nahrajte nasledujúci kód do svojho Arduina, aby váš pinball automat ožil!

// Zahrňte knižnicu pre lcd

#include #include

// Inicializujte dátové piny lcd

LiquidCrystal lcd (7, 8, 9, 10, 11, 12);

// Vytvorte servo

Servo loptaGateServo;

// Vytvorte premenné pre piny, ktoré používame

int gameoverPin = 6; int skórePin = 5; int reproduktorPin = 4; int ballGateServoPin = 3;

// Inicializácia herných premenných pre hrací automat

int skóre = 0; int najvyššie skóre = 500; bool highscoreReached = false; int gule = 3; int gameoverTimer = 0; int gameoverTimerDuration = 100; bool gameoverTriggered = false;

// spustite tento kód raz v prvom rámci

void setup () {// Nastavte pinMode pre piny, ktoré používame pinMode (gameoverPin, INPUT); pinMode (scorePin, INPUT);

// Inicializujte LCD zadaním šírky a výšky

lcd.begin (16, 2);

// Upevnite servo brány s guľovou hlavou na príslušný kolík

ballGateServo.attach (ballGateServoPin);

// Reset serva brány do východiskovej polohy

ballGateServo.write (0); }

// Spustite tento kód v každom jednom rámci

void loop () {// Zachyťte vstupy pinov v gameoverState = digitalRead (gameoverPin); int scoreState = digitalRead (scorePin);

// Pridajte k skóre, ak je prijatý vstup

if (scoreState) {tone (speakerPin, 1000); skóre += 10; } else {noTone (4); }

// Odpočítajte od loptičiek, ak je spustená hracia jamka

if (gameoverState and! gameoverTriggered) {balls -= 1; gameoverTriggered = true; gameoverTimer = gameoverTimerDuration; }

// Spustite hrací čas, akonáhle sa loptička nedotkne kontaktu na prechod

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

// Mrknite textom hry na LCD a resetujte skóre a loptičky

if (guličky <= 0) {lcd.setCursor (0, 0); pre (int i = 5; i> = 1; i--) {lcd.clear (); oneskorenie (250); lcd.print („HRA NAD“); lcd.setCursor (0, 1); lcd.print („Skúsiť znova?“); oneskorenie (250); } lcd.clear (); skóre = 0; ballGateServo.write (0); highscoreReached = false; loptičky = 3; }

if (score> highscore and! highscoreReached) {

lcd.setCursor (0, 0); pre (int i = 5; i> = 1; i--) {lcd.clear (); oneskorenie (250); lcd.print („NOVÝ VYSOKÝ VÝKON“); lcd.setCursor (0, 1); lcd.print („Náhla smrť!“); oneskorenie (250); } lcd.clear (); loptičky = 1; ballGateServo.write (120); najvyššie skóre = skóre; highscoreReached = true; }

// Aktualizujte najvyššie skóre, ak je aktuálne skóre vyššie

if (score> highscore) {highscore = score; }

// Nastav kurzor na riadok 0

lcd.setCursor (0, 0); // Vytlačí aktuálne (vysoké) skóre na lcd if (skóre <= 0) {lcd.print ("Highscore:" + String (highscore) + ""); } else {lcd.print ("Skóre:" + Reťazec (skóre) + ""); }

// Nastav kurzor na riadok 1

lcd.setCursor (0, 1);

// Vytlačte aktuálne množstvo guličiek na LCD

lcd.print ("Lopty:" + Reťazec (gule)); }

Odporúča: