Talaan ng mga Nilalaman:

Arduino: Pinball Machine: 8 Hakbang (na may Mga Larawan)
Arduino: Pinball Machine: 8 Hakbang (na may Mga Larawan)

Video: Arduino: Pinball Machine: 8 Hakbang (na may Mga Larawan)

Video: Arduino: Pinball Machine: 8 Hakbang (na may Mga Larawan)
Video: Unbelievable Pinball Machine to Coffee Table Transformation | Insane Build 2024, Hunyo
Anonim
Image
Image

Tulad ng lagi kong minamahal na kapwa mga pinball machine, at electronics, nagpasya akong bumuo ng sarili kong pinball machine. Pinili ko ang Arduino para sa programa at electronics, dahil ito ay isang lubos na naa-access na platform na parehong compact at madaling gamitin.

Sa gabay na ito ipapaliwanag ko ang aking proseso ng pag-unlad, kaya marahil ang isa sa mga nakakaakit ay maaaring lumikha ng isang bagay na pareho.

Hakbang 1: Pagbubuo ng Kaso

Pagbuo ng Kaso
Pagbuo ng Kaso

Magsimula tayo sa kaso ng pinball machine. Gumawa ako ng isang medyo simpleng konstruksyon. Ginabas ko ang isang ilalim na plato, at ginamit ang 4 na maliliit na haligi na gawa sa kahoy sa mga sulok upang ikonekta ang mga piraso ng dingding. Ang laki ng iyong kaso ay iyong sariling pagpipilian, pinili kong gawin itong medyo mas maliit kaysa sa isang orihinal na pinball machine dahil hindi ko pinaplano ang pagdaragdag ng anumang sobrang kamangha-manghang mga extra upang punan ang puwang. Ginamit ko ang parehong mga turnilyo at pandikit upang gawing matatag ang kaso hangga't maaari. Sa likuran ay nag-drill ako ng dalawang butas sa piraso ng sahig para sa dalawang binti na magbibigay sa makina ng pinball ng iconic na ikiling. Muli, nasa iyo ang taas ng mga binti. Kung mas matangkad ang iyong mga binti, mas mabilis ang bola ay gumulong (pababa).

Hakbang 2: Pagbubuo ng Flipper Mechanic

Pagbuo ng Flipper Mechanic
Pagbuo ng Flipper Mechanic

Tulad ng nais kong limitahan ang gastos ng proyektong ito, nagpasya akong gumawa ng kumpletong mga mekanikal na flip sa halip na mga elektronik. Kung interesado ka sa mga elektronikong tsinelas, maaari kang gumamit ng isang konstruksyon na medyo pareho, ngunit sa isang tinatawag na 'solenoid' na konektado dito (ang mga solenoid na may sapat na lakas upang makontrol ang mga flip ay masyadong mahal para sa akin).

Nagsimula ako sa pamamagitan ng pagbabarena ng dalawang butas sa ilalim para sa pivot point ng parehong mga flip. Nag-drill ako ng mga butas (sa aking palagay) medyo malapit sa bawat isa, at naging sanhi ito ng laro na medyo masyadong madali sa huli. Kaya't mag-ingat na huwag mailagay ang mga flipper sa bawat isa, maliban kung nais mo ang isang madaling istilo ng gameplay.

Nag-drill din ako ng dalawang butas sa magkabilang dingding sa gilid na parallel sa mga butas ng flipper. Ang mga butas na ito ay gagamitin para sa dalawang mga pindutan ng flipper.

Gumamit ako ng mga bukal upang ibalik ang mga flipper sa orihinal na posisyon, at gumawa ng isang pivoting konstruksyon sa pagitan ng mga flip at mga pindutan upang paikutin sila kapag pinindot ang mga pindutan. Upang pigilan ang mga bukal mula sa paghugot ng pabalik ng mga flipper, inilagay ko ang dalawang mga turnilyo upang hawakan ang mga flipper sa kanilang orihinal na posisyon.

Hakbang 3: paglalagay ng mga pader

Paglalagay ng mga pader
Paglalagay ng mga pader

Naglagay ako ng isang pares ng mga pader upang i-redirect ang pinball patungo sa mga flip. Napakadali nilang gawin. Mag-drill lamang ng 3 butas sa ilalim ng kaso, at itulak sa tatlong mga pin na kahoy. Balot ng isang goma sa paligid ng mga pin at tapos ka na.

Hakbang 4: Pagdaragdag ng Mga Bloke ng Kalidad

Pagdaragdag ng Mga Bloke ng Kalidad
Pagdaragdag ng Mga Bloke ng Kalidad
Pagdaragdag ng Mga Bloke ng Kalidad
Pagdaragdag ng Mga Bloke ng Kalidad

Ang mga bloke ng puntos ay isa sa pinakamahalagang bahagi ng pinball machine, kaya tiyaking tama ang iyong bahaging ito. Gumawa ako ng tatlong mga bloke ng puntos para sa aking machine ng pinball, ngunit muli nasa iyo ang lahat.

Inilabas ko ang isang maliit na piraso ng isang walis, at binalot ito ng tanso na tanso. Papalakasin ng arduino ang tanso na tanso na ito na patuloy na may 5V. Naghinang ako ng apat na spring spring sa gilid para sa mas mahusay na pakikipag-ugnay sa bola.

Ang paraan na gumana ang iskor ay gumagana, ay na ang bola ay nakumpleto ang isang circuit na humahantong sa isang input pin sa Arduino. Kaya't ang ginawa ko ay ang tape ng aluminyo palara sa ilalim ng kaso (HINDI HINDI KUMIKITA SA COPPER) at i-wire ang palara sa isang pin sa Arduino. Tuwing ang bola ay tumama sa parehong tanso at aluminyo, ang circuit ay kumpleto at ang Arduino ay makakatanggap ng isang senyas.

Ikinonekta ko ang lahat ng mga bloke ng puntos nang sama-sama gamit ang aluminyo foil, ngunit tandaan na ang malagkit na bahagi ay HINDI nagsasagawa ng kuryente.

Hakbang 5: Pagdaragdag ng Laro Sa Pag-contact

Pagdaragdag ng Laro Sa Pag-contact
Pagdaragdag ng Laro Sa Pag-contact

Sa ilalim ng makina ng pinball, sa pagitan ng mga tsinelas, nagdagdag ako ng isang laro sa paglipas ng contact. Kailan man tumama ang bola sa contact na ito, mawawalan ng bola ang manlalaro. Ang konstruksyon na ginawa ko ay halos kapareho ng mga puntos na marka. Dito lamang ako gumamit ng dalawang mga turnilyo, at muli ang isang piraso ng aluminyo palara sa ilalim.

Hakbang 6: Ang pagbabarena ng mga Cable Holes

Pagbabarena ng mga Cable Holes
Pagbabarena ng mga Cable Holes
Pagbabarena ng mga Cable Holes
Pagbabarena ng mga Cable Holes
Pagbabarena ng mga Cable Holes
Pagbabarena ng mga Cable Holes

Bago namin simulan ang pag-kable ng lahat hanggang sa Arduino, kailangan muna nating mag-drill ng ilang mga butas para sa mga kable. Nag-drill ako ng isang butas sa pamamagitan ng parehong mga piraso ng aluminyo foil, kaya isang butas sa aluminyo palara malapit sa mga bloke ng iskor, at isang butas sa aluminyo palara malapit sa laro sa contact.

Bukod dito, nag-drill din ako ng butas sa kaliwang ibabang bahagi, sa pagitan ng mga dingding, para sa cable na patungo sa sobrang ball gate ng Servo.

Dapat ding magkaroon ng isang butas para sa cable na konektado sa LCD sa ilalim.

Hakbang 7: Pag-kable ng Lahat

Kable ng Lahat Up
Kable ng Lahat Up
Kable ng Lahat Up
Kable ng Lahat Up

Ginawa ko ang eskematiko na ito upang magkaroon ng isang mas mahusay na pangkalahatang ideya ng kung saan dapat pumunta ang lahat ng mga kable. Ang mga krus ay ang mga puntos kung saan kumokonekta ang mga cable. Sinubukan kong maghinang hangga't maaari upang gawing mas matatag at maaasahan ang lahat. Ang mga kable ay magtatagal, ngunit pagkatapos nito ay tapos na ikaw ay halos doon!

Hakbang 8: Pag-upload ng Code

I-upload ang sumusunod na code sa iyong Arduino upang mabuhay ang iyong pinball machine!

// Isama ang library para sa lcd

# isama ang # isama

// Ipasimula ang mga lcd data pin

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

// Lumikha ng isang servo

Servo ballGateServo;

// Lumikha ng mga variable para sa mga pin na ginagamit namin

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

// Initialize gameplay variable para sa pinball machine

int iskor = 0; int highscore = 500; bool highscoreReached = false; int bola = 3; int gameoverTimer = 0; int gameoverTimerDuration = 100; bool gameoverTriggered = false;

// patakbuhin ang code na ito nang isang beses sa unang frame

void setup () {// Itakda ang pinMode para sa mga pin na ginagamit namin pinMode (gameoverPin, INPUT); pinMode (scorePin, INPUT);

// Simulan ang lcd sa pamamagitan ng pagbibigay ng lapad at taas

lcd.begin (16, 2);

// Ikabit ang servo ng ball gate sa naaangkop na pin

ballGateServo.attach (ballGateServoPin);

// I-reset ang gate servo sa panimulang posisyon

ballGateServo.write (0); }

// Patakbuhin ang code na ito bawat solong frame

void loop () {// Capture the pin inputs int gameoverState = digitalRead (gameoverPin); int scoreState = digitalRead (scorePin);

// Idagdag sa iskor kung natanggap ang input

kung (scoreState) {tone (speakerPin, 1000); puntos + = 10; } iba pa {noTone (4); }

// Ibawas mula sa mga bola kung ang gameover pit ay na-trigger

kung (gameoverState at! gameoverTriggered) {bola - = 1; gameoverTriggered = totoo; gameoverTimer = gameoverTimerDuration; }

// Simulan ang timer ng gameover sa lalong madaling hindi nahahawakan ng bola ang contact sa gameover

kung (! gameoverState) {kung (gameoverTimer> = 1) {gameoverTimer - = 1; } iba pa {gameoverTriggered = false; }}

// Blink ang gameover text sa lcd at i-reset ang iskor at mga bola

kung (bola <= 0) {lcd.setCursor (0, 0); para sa (int i = 5; i> = 1; i--) {lcd.clear (); pagkaantala (250); lcd.print ("GAME OVER"); lcd.setCursor (0, 1); lcd.print ("Subukang muli?"); pagkaantala (250); } lcd.clear (); puntos = 0; ballGateServo.write (0); highscoreReached = false; bola = 3; }

kung (puntos> highscore at! highscoreReached) {

lcd.setCursor (0, 0); para sa (int i = 5; i> = 1; i--) {lcd.clear (); pagkaantala (250); lcd.print ("BAGONG HIGHSCORE"); lcd.setCursor (0, 1); lcd.print ("Biglang Kamatayan!"); pagkaantala (250); } lcd.clear (); bola = 1; ballGateServo.write (120); highscore = iskor; highscoreReached = totoo; }

// I-update ang highscore kung mas mataas ang kasalukuyang iskor

kung (puntos> highscore) {highscore = iskor; }

// Itakda ang cursor sa linya 0

lcd.setCursor (0, 0); // Print the current (high) score to the lcd if (score <= 0) {lcd.print ("Highscore:" + String (highscore) + ""); } iba pa {lcd.print ("Iskor:" + String (iskor) + ""); }

// Itakda ang cursor sa linya 1

lcd.setCursor (0, 1);

// I-print ang kasalukuyang dami ng mga bola sa lcd

lcd.print ("Bola:" + String (bola)); }

Inirerekumendang: