Obsah:

Arduino: Pinball Machine: 8 kroků (s obrázky)
Arduino: Pinball Machine: 8 kroků (s obrázky)

Video: Arduino: Pinball Machine: 8 kroků (s obrázky)

Video: Arduino: Pinball Machine: 8 kroků (s obrázky)
Video: CS50 2014 - Week 7 2024, Červen
Anonim
Image
Image

Protože jsem vždy miloval jak hrací automaty, tak elektroniku, rozhodl jsem se postavit si vlastní pinball. Pro programování a elektroniku jsem si vybral Arduino, protože je to vysoce přístupná platforma, která je kompaktní a snadno se používá.

V této příručce vysvětlím svůj vývojový proces, takže možná jeden z vás nadšenců by mohl vytvořit něco podobného.

Krok 1: Stavba pouzdra

Budování případu
Budování případu

Začněme případem hracího automatu. Vyrobil jsem celkem jednoduchou konstrukci. Odřízl jsem spodní desku a pomocí 4 malých dřevěných pilířů v rozích spojil části stěn. Velikost vašeho pouzdra je vaše vlastní volba, rozhodl jsem se, že bude o něco menší než původní hrací automat, protože jsem neplánoval přidat žádné super velkolepé doplňky, které by zaplnily prostor. Použil jsem oba šrouby a lepidlo, aby bylo pouzdro co nejstabilnější. Na zadní straně jsem vyvrtal dva otvory v podlaze pro dvě nohy, které dodají stroji pinball ikonický náklon. Výška nohou je opět na vás. Čím vyšší nohy uděláte, tím rychleji se míč bude kutálet (směrem dolů).

Krok 2: Konstrukce mechaniky Flipper

Konstrukce mechanismu Flipper
Konstrukce mechanismu Flipper

Protože jsem chtěl omezit náklady na tento projekt, rozhodl jsem se, že místo elektronických vyrobím plně mechanické ploutve. Pokud vás zajímají elektronické ploutve, můžete použít konstrukci, která je poněkud stejná, ale je k ní připojen takzvaný „solenoid“(solenoidy s dostatečným výkonem pro ovládání ploutví byly pro mě příliš drahé).

Začal jsem vyvrtáním dvou otvorů ve spodní části pro otočný bod obou ploutví. Vyvrtal jsem otvory (podle mého názoru) příliš blízko sebe, a to způsobilo, že hra byla nakonec příliš snadná. Dávejte si tedy pozor, abyste ploutve neumístili příliš blízko sebe, pokud tedy nechcete jednoduchý styl hraní.

Také jsem vyvrtal dva otvory v obou bočních stěnách rovnoběžně s otvory pro ploutve. Tyto otvory mají být použity pro dvě tlačítka ploutve.

Pomocí pružin jsem stáhl ploutve zpět do původní polohy a mezi ploutvemi a knoflíky jsem vytvořil otočnou konstrukci, která je otáčela při stisknutí tlačítek. Aby pružiny nezatáhly ploutve příliš dozadu, umístil jsem dva šrouby, které drží ploutve v jejich původní poloze.

Krok 3: Umístění zdí

Umístění zdí
Umístění zdí

Umístil jsem pár stěn, abych přesměroval pinball směrem k ploutvím. Jejich výroba je velmi jednoduchá. Jednoduše vyvrtejte 3 otvory ve spodní části pouzdra a zasuňte tři dřevěné kolíky. Kolíky omotejte gumičkou a máte hotovo.

Krok 4: Přidání bloků skóre

Přidání bloků skóre
Přidání bloků skóre
Přidání bloků skóre
Přidání bloků skóre

Skóre bloky jsou jednou z nejdůležitějších částí hracího automatu, takže tuto část udělejte správně. Vytvořil jsem tři bodovací bloky pro svůj hrací automat, ale opět je to všechno na vás.

Odpílil jsem malý kousek koštěte a omotal měděným drátem. Arduino bude tento měděný drát napájet nepřetržitě 5V. Na stranu jsem připájel čtyři pružiny pera pro lepší kontakt s míčem.

Bloky skóre fungují tak, že míč dokončí obvod, který vede ke vstupnímu kolíku na Arduinu. Co jsem tedy udělal, bylo nalepit hliníkovou fólii na spodní část skříně (NEDOTÝKAT SE MĚDĚ) a fólii drátovat až ke kolíku na Arduinu. Kdykoli koule zasáhne měď i hliník, obvod je kompletní a Arduino obdrží signál.

Spojil jsem všechny zářezové bloky dohromady pomocí hliníkové fólie, ale mějte na paměti, že lepivá strana NEVEDE elektřinu.

Krok 5: Přidání hry přes kontakt

Přidání hry přes kontakt
Přidání hry přes kontakt

Ve spodní části hracího automatu, mezi ploutve, jsem přidal hru přes kontakt. Kdykoli míč zasáhne tento kontakt, hráč ztratí míč. Konstrukce, kterou jsem vyrobil, je do značné míry stejná jako skóre. Pouze zde jsem použil dva šrouby a na spodní části opět kousek alobalu.

Krok 6: Vrtání kabelových otvorů

Vrtání kabelových otvorů
Vrtání kabelových otvorů
Vrtání kabelových otvorů
Vrtání kabelových otvorů
Vrtání kabelových otvorů
Vrtání kabelových otvorů

Než začneme zapojovat vše až k Arduinu, musíme nejprve vyvrtat pár otvorů pro kabely. Vyvrtal jsem díru skrz oba kusy hliníkové fólie, takže jeden otvor v hliníkové fólii poblíž bloků skóre a jeden otvor v hliníkové fólii poblíž hry přes kontakt.

Kromě toho jsem také dole vlevo dole, mezi zdmi, vyvrtal otvor pro kabel vedoucí k servu pro extra kulovou bránu.

V dolní části by měl být také otvor pro kabel připojený k LCD.

Krok 7: Zapojení všeho

Zapojení všeho
Zapojení všeho
Zapojení všeho
Zapojení všeho

Vytvořil jsem toto schéma, abych měl lepší přehled o tom, kam by měly jít všechny kabely. Kříže jsou body, kde se propojují kabely. Snažil jsem se co nejvíce pájet, aby bylo všechno o něco stabilnější a spolehlivější. Zapojení bude nějakou dobu trvat, ale poté, co to uděláte, jste téměř tam!

Krok 8: Nahrání kódu

Nahrajte následující kód do svého Arduina, aby váš pinball automat ožil!

// Zahrnout knihovnu pro lcd

#include #include

// Inicializujte datové piny LCD

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

// Vytvořte servo

Servo míčGateServo;

// Vytvořte proměnné pro piny, které používáme

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

// Inicializace herních proměnných pro hrací automat

int skóre = 0; int highscore = 500; bool highscoreReached = false; int koule = 3; int gameoverTimer = 0; int gameoverTimerDuration = 100; bool gameoverTriggered = false;

// spusťte tento kód jednou na prvním snímku

void setup () {// Nastavte pinMode pro piny, které používáme pinMode (gameoverPin, INPUT); pinMode (scorePin, INPUT);

// Inicializujte LCD zadáním šířky a výšky

lcd.begin (16, 2);

// Připojte servo kulové brány k příslušnému čepu

ballGateServo.attach (ballGateServoPin);

// Resetujte servo brány do výchozí polohy

ballGateServo.write (0); }

// Spusťte tento kód každý jednotlivý snímek

void loop () {// Zachycení pinových vstupů v gameoverState = digitalRead (gameoverPin); int scoreState = digitalRead (scorePin);

// Přidání do skóre, pokud je přijat vstup

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

// Odečtěte od koulí, pokud je spuštěna hrací jamka

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

// Spusťte časovač pro ukončení hry, jakmile se míč nedotkne kontaktu pro přehrání

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

// Mrkněte textem hry na LCD a resetujte skóre a míče

if (balls <= 0) {lcd.setCursor (0, 0); pro (int i = 5; i> = 1; i--) {lcd.clear (); zpoždění (250); lcd.print („GAME OVER“); lcd.setCursor (0, 1); lcd.print („Zkusit znovu?“); zpoždění (250); } lcd.clear (); skóre = 0; ballGateServo.write (0); highscoreReached = false; koule = 3; }

if (score> highscore and! highscoreReached) {

lcd.setCursor (0, 0); pro (int i = 5; i> = 1; i--) {lcd.clear (); zpoždění (250); lcd.print („NOVÉ VYSOKÉ JÁDRO“); lcd.setCursor (0, 1); lcd.print („Náhlá smrt!“); zpoždění (250); } lcd.clear (); koule = 1; ballGateServo.write (120); highscore = skóre; highscoreReached = true; }

// Pokud je aktuální skóre vyšší, aktualizujte nejvyšší skóre

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

// Nastavte kurzor na řádek 0

lcd.setCursor (0, 0); // Vytiskne aktuální (vysoké) skóre na lcd if (skóre <= 0) {lcd.print ("Highscore:" + String (highscore) + ""); } else {lcd.print ("Skóre:" + Řetězec (skóre) + ""); }

// Nastavte kurzor na řádek 1

lcd.setCursor (0, 1);

// Vytiskněte aktuální množství kuliček na lcd

lcd.print ("Koule:" + Řetězec (koule)); }

Doporučuje: