Orodha ya maudhui:

Arduino: Mashine ya Pinball: Hatua 8 (na Picha)
Arduino: Mashine ya Pinball: Hatua 8 (na Picha)

Video: Arduino: Mashine ya Pinball: Hatua 8 (na Picha)

Video: Arduino: Mashine ya Pinball: Hatua 8 (na Picha)
Video: Псевдо-вирус на python 2024, Juni
Anonim
Image
Image

Kwa kuwa nimekuwa nikipenda mashine zote mbili za mpira wa miguu, na vifaa vya elektroniki, niliamua kujenga mashine yangu ya mpira. Nilichagua Arduino kwa programu na vifaa vya elektroniki, kwa sababu ni jukwaa linaloweza kupatikana sana ambalo ni dhabiti na rahisi kutumia.

Katika mwongozo huu nitaelezea mchakato wangu wa maendeleo, kwa hivyo labda mmoja wenu anaweza kuwasha kitu sawa.

Hatua ya 1: Kuunda Kesi

Kujenga Kesi hiyo
Kujenga Kesi hiyo

Wacha tuanze na kesi ya mashine ya mpira wa miguu. Nilifanya ujenzi rahisi. Nilikata sahani ya chini, na nikatumia nguzo 4 ndogo za mbao kwenye pembe kuunganisha vipande vya ukuta. Ukubwa wa kesi yako ni chaguo lako mwenyewe, nilichagua kuifanya iwe ndogo kuliko mashine ya asili ya mpira wa miguu kwani sikuwa na mpango wa kuongeza nyongeza za kuvutia ili kujaza nafasi. Nilitumia screws zote mbili na gundi ili kufanya kesi iwe thabiti iwezekanavyo. Nyuma nilichimba mashimo mawili kwenye kipande cha sakafu kwa miguu miwili ambayo itawapa mashine ya mpira wa miguu kuteleza kwa picha. Tena, urefu wa miguu yote ni juu yako. Kadri unavyokuwa na miguu mirefu, ndivyo mpira utakavyozunguka kwa kasi (kwenda chini).

Hatua ya 2: Kuunda Mitambo ya Flipper

Kuunda Fundi wa Flipper
Kuunda Fundi wa Flipper

Kama nilitaka kupunguza gharama ya mradi huu, niliamua kutengeneza viboko vya kiufundi badala ya zile za elektroniki. Ikiwa unavutiwa na mabawa ya elektroniki, unaweza kutumia ujenzi ambao ni sawa, lakini kwa ile inayoitwa 'solenoid' iliyounganishwa nayo (solenoids zilizo na nguvu ya kutosha kudhibiti mabawa zilikuwa ghali sana kwangu).

Nilianza kwa kuchimba mashimo mawili chini kwa kiini cha bawaba zote mbili. Nilichimba mashimo (kwa maoni yangu) karibu sana na kila mmoja, na hii ilisababisha mchezo kuwa rahisi sana mwishowe. Kwa hivyo kuwa mwangalifu usiweke viboko karibu sana na kila mmoja, isipokuwa ikiwa unataka mtindo rahisi wa mchezo wa kucheza.

Nilichimba pia mashimo mawili kwenye kuta zote za kando zinazofanana na mashimo ya mirija. Mashimo haya yatatumiwa kwa vifungo viwili vya kuning'inia.

Nilitumia chemchemi kuvuta mabawa nyuma kwenye nafasi ya asili, na nikafanya ujenzi wa pivoting kati ya mabawa na vifungo ili kuzifanya zunguke wakati vifungo vinabanwa. Ili kuzuia chemchemi kutoka kurudisha nyuma viboko mbali sana, niliweka screws mbili kushikilia viboko katika nafasi yao ya asili.

Hatua ya 3: Kuweka Kuta

Kuweka Kuta
Kuweka Kuta

Niliweka kuta kadhaa kuelekeza mpira wa miguu kuelekea mabawa. Ni rahisi sana kutengeneza. Chimba tu mashimo 3 chini ya kesi, na usukume kwenye pini tatu za mbao. Funga bendi ya mpira kuzunguka pini na umemaliza.

Hatua ya 4: Kuongeza Vitalu vya Alama

Kuongeza Vizuizi vya Alama
Kuongeza Vizuizi vya Alama
Kuongeza Vizuizi vya Alama
Kuongeza Vizuizi vya Alama

Vitalu vya alama ni moja ya sehemu muhimu zaidi kwenye mashine ya mpira wa miguu, kwa hivyo hakikisha unafanya sehemu hii sawa. Nilitengeneza alama tatu kwa mashine yangu ya mpira, lakini tena hii yote ni juu yako.

Nilikata kipande kidogo cha kijiti cha ufagio, na kuifunga waya wa shaba kuzunguka. Arduino itaimarisha waya huu wa shaba kila wakati na 5V. Niliuza chemchem nne za kalamu pembeni kwa mawasiliano bora na mpira.

Njia ambayo alama huzuia kufanya kazi, ni kwamba mpira unakamilisha mzunguko unaosababisha pini ya kuingiza kwenye Arduino. Kwa hivyo nilichofanya ni karatasi ya aluminium ya mkanda chini ya kesi (SIYO KUGUSA COPPER) na waya waya hadi kwenye pini kwenye Arduino. Wakati wowote mpira unapiga shaba na aluminium, mzunguko umekamilika na Arduino atapokea ishara.

Niliunganisha alama zote pamoja kwa kutumia karatasi ya aluminium, lakini kumbuka kuwa upande wenye nata HAUFANIKI umeme.

Hatua ya 5: Kuongeza Mchezo Juu ya Mawasiliano

Kuongeza Mchezo Juu ya Mawasiliano
Kuongeza Mchezo Juu ya Mawasiliano

Chini ya mashine ya mpira wa miguu, katikati ya viboko, niliongeza mchezo juu ya mawasiliano. Wakati wowote mpira unapopiga mawasiliano haya, mchezaji atapoteza mpira. Ujenzi nilioufanya ni sawa na alama za alama. Hapa tu nilitumia screws mbili, na tena kipande cha karatasi ya alumini chini.

Hatua ya 6: Kuchimba Mashimo ya Cable

Kuchimba Mashimo ya Cable
Kuchimba Mashimo ya Cable
Kuchimba Mashimo ya Cable
Kuchimba Mashimo ya Cable
Kuchimba Mashimo ya Cable
Kuchimba Mashimo ya Cable

Kabla ya kuanza wiring kila kitu hadi Arduino, tunahitaji kuchimba mashimo kadhaa kwa nyaya kwanza. Nilichimba shimo kupitia vipande vyote viwili vya karatasi ya aluminium, kwa hivyo shimo moja kwenye karatasi ya alumini karibu na vizuizi vya alama, na shimo moja kwenye karatasi ya alumini karibu na mchezo juu ya mawasiliano.

Mbali na hayo, pia nilichimba shimo chini kushoto, katikati ya kuta, kwa kebo inayoongoza kwenye lango la ziada la mpira Servo.

Inapaswa pia kuwa na shimo kwa kebo iliyounganishwa na LCD chini.

Hatua ya 7: Wiring Kila kitu Juu

Wiring Kila kitu Juu
Wiring Kila kitu Juu
Wiring Kila kitu Juu
Wiring Kila kitu Juu

Nilifanya mpango huu kuwa na muhtasari bora wa wapi nyaya zote zinapaswa kwenda. Misalaba ndio mahali ambapo nyaya huunganisha. Nilijaribu kutengenezea kadri inavyowezekana ili kufanya kila kitu kuwa thabiti zaidi na ya kuaminika. Wiring itachukua muda, lakini baada ya hii kukamilika uko karibu!

Hatua ya 8: Kupakia Nambari

Pakia nambari ifuatayo kwa Arduino yako ili kufanya mashine yako ya pinball iishi!

// Jumuisha maktaba ya lcd

#jumuisha #jumuisha

// Anzisha pini za data za LCD

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

// Unda servo

Mpira wa ServoGateServo;

// Tengeneza vigeuzi vya pini tunazotumia

mchezo wa mchezoPin = 6; alama ya ndaniPini = 5; sp speakerPin = 4; mpira wa ndaniGateServoPin = 3;

// Anzisha vigeuzi vya uchezaji wa mchezo wa mashine ya pinball

alama ya 0 = 0; alama ya juu = 500; bool highscoreReached = fika; mipira ya int = 3; mchezo wa mchezoTimer = 0; mchezo wa ndaniTimerDuration = 100; bool gameoverTriggered = uwongo;

// endesha nambari hii mara moja kwenye fremu ya kwanza

kuanzisha batili () {// Weka pinMode kwa pini tunazotumia pinMode (gameoverPin, INPUT); pinMode (alamaPini, INPUT);

// Anzisha LCD kwa kutoa upana na urefu

lcd kuanza (16, 2);

// Ambatanisha servo ya lango la mpira kwa pini inayofaa

mpiraGateServo.ambatanisha (mpiraGateServoPin);

// Rudisha servo ya lango hadi nafasi ya kuanzia

mpiraGateServo.andika (0); }

// Run code hii kila fremu moja

kitanzi batili () {// Piga pembejeo za pini int gameoverState = digitalRead (gameoverPin); alama ya ndaniState = dijitiSoma (alamaPini);

// Ongeza kwenye alama ikiwa pembejeo imepokelewa

ikiwa (alamaState) {toni (spikaPin, 1000); alama + = 10; } mwingine {noTone (4); }

// Ondoa kutoka kwa mipira ikiwa shimo la mchezo linasababishwa

ikiwa (gameoverState na! gameoverTriggered) {mipira - = 1; gameoverTriggered = kweli; gameoverTimer = gameoverTimerDuration; }

// Anza kipima muda cha mchezo mara tu mpira haugusi mawasiliano ya mchezo

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

// Blink maandishi ya mchezo kwa lcd na uweke alama tena na mipira

ikiwa (mipira <= 0) {lcd.setCursor (0, 0); kwa (int i = 5; i> = 1; i--) {lcd. wazi (); kuchelewesha (250); lcd.print ("MCHEZO JUU"); lcd.setCursor (0, 1); lcd.print ("Jaribu tena?"); kuchelewesha (250); } lcd. wazi (); alama = 0; mpiraGateServo.andika (0); highscoreReached = uongo; mipira = 3; }

ikiwa (alama> alama za juu na! alama ya juu imefikiwa) {

lcd.setCursor (0, 0); kwa (int i = 5; i> = 1; i--) {lcd. wazi (); kuchelewesha (250); lcd.print ("NEW HIGHORE"); lcd.setCursor (0, 1); lcd.print ("Kifo cha Ghafla!"); kuchelewesha (250); } lcd. wazi (); mipira = 1; mpiraGateServo.andika (120); alama ya juu = alama; highscoreReached = kweli; }

// Sasisha alama ya juu ikiwa alama ya sasa iko juu

ikiwa (alama> alama ya juu) {alama ya juu = alama; }

// Weka mshale kwenye mstari 0

lcd.setCursor (0, 0); // Chapisha alama ya sasa (ya juu) kwa lcd ikiwa (alama <= 0) {lcd.print ("Highscore:" + String (highscore) + ""); } mwingine {lcd.print ("Alama:" + Kamba (alama) + ""); }

// Weka mshale kwenye mstari wa 1

lcd.setCursor (0, 1);

// Chapisha kiwango cha sasa cha mipira kwa LCD

lcd.print ("Mipira:" + Kamba (mipira)); }

Ilipendekeza: