Orodha ya maudhui:

Chomeka na Ucheze Vifungo vya Arcade: Hatua 7 (na Picha)
Chomeka na Ucheze Vifungo vya Arcade: Hatua 7 (na Picha)

Video: Chomeka na Ucheze Vifungo vya Arcade: Hatua 7 (na Picha)

Video: Chomeka na Ucheze Vifungo vya Arcade: Hatua 7 (na Picha)
Video: WALKING DEAD COMPLETE GAME FROM START LIVE 2024, Novemba
Anonim
Chomeka na Cheza Vifungo vya Arcade
Chomeka na Cheza Vifungo vya Arcade

Hivi majuzi nilianza kutumia Arduino kutengeneza miradi yangu. Kama mbuni ninapenda kutengeneza mwingiliano wa kawaida wa michezo yangu / miradi ya maingiliano.

Shida moja niliyoipata kwa kuwa kutumia mawasiliano ya serial ni ngumu sana na inakabiliwa na shida na mende na nilitaka suluhisho la haraka na rahisi kuniruhusu nitumie vifungo vya nje kudhibiti michezo yangu.

Kama nilitaka kuziba na kucheza kifaa ambacho unaweza kutumia mara moja na kompyuta yoyote, nilinunua Arduino Leonardo. Inakaribia kufanana na Uno, lakini na tofauti chache. Tofauti kuu ambayo nitatumia kwa faida yangu kwa mradi huu ni uwezo wa kutenda kama kujificha. Kifaa cha kujificha, au kiolesura cha kibinadamu ni itifaki ya USB inayoruhusu kompyuta yako kutambua na kukubali pembejeo kutoka kwa kibodi na panya ya kompyuta bila kulazimisha kusanikisha madereva maalum kwa kila kifaa.

Kumbuka: unaweza pia kutumia Uno, ikiwa unasasisha firmware, kama inavyoonyeshwa hapa.

Hatua ya 1: Vifaa

Kwa mradi huu utahitaji:

1x Mdhibiti mdogo wa uwezo wa kujificha (kuna wachache kama Arduino micro, Kutokana na Leonardo, nitatumia Arduino Leonardo)

1x USB kwa kebo ya arduino (kwa Leonardo ni USB ndogo)

Vifungo vya 3x Arcade (nilinunua hizi)

1x mkate wa mkate usiouzwa

Vipinzani vya 3x 10k ohm

Vipinzani vya 3x 220 ohm

Waya za jumper

Kwa kweli unaweza kuongeza vifungo zaidi, au kuuza kila kitu kwenye ubao wa mkate ili kufanya mambo yawe ya kudumu zaidi.

Hatua ya 2: Prototyping

Kuweka mfano
Kuweka mfano
Kuweka mfano
Kuweka mfano
Kuweka mfano
Kuweka mfano

Kwa hivyo, kabla ya kununua vifungo vya uwanja ambao nilitaka kutumia nilijaribu hii kwa vifungo vya kawaida vya kushinikiza. Funga vifungo kwa njia ya kawaida, naamini nilitumia vipinzani vya 10K ohm.

Programu, shukrani kwa Leonardo, ni rahisi sana. Lazima ujumuishe maktaba ya Kinanda. Nilitumia mfano wastani wa Arduino "Ujumbe wa kibodi" kama msingi wa nambari yangu.

Sasa swali ni jinsi unavyotaka vifungo vyako vifanye kazi. Kimsingi una chaguo mbili, vitufe vya kifungo kimoja na mkondo wa herufi endapo utasukumwa. Inategemea mradi wako nini ungetaka.

Ikiwa unataka mfano mmoja wa kitu kutokea ikiwa kitufe kinabanwa, kama kuruka au kuzima / kuzima basi utachagua njia moja ya kushinikiza. Kwa njia hii unaangalia hali ya kitufe, iko juu au chini? Halafu unalinganisha na hali iliyopita, ilikuwa tayari juu au chini? Ikiwa kitufe kilichopita ni sawa na hali ya kifungo cha sasa hakuna kinachotokea. Lakini ikiwa hali ya kifungo inabadilika, kama vile bonyeza na kutolewa kifungo kuna kitu kinachotokea. Katika nambari yangu inaandika barua tu wakati kitufe kinasukumwa, sio wakati kinatolewa lakini unaweza kubadilisha hii.

# pamoja na "Kinanda.h"

kifungo cha int intLeft = A0; // pini ya kuingiza kwa kifungo cha kushinikiza

kifungo cha int intRight = A1; kifungo cha int intUp = A2;

int previousButtonStateLeft = JUU; // kwa kuangalia hali ya kifungo cha kushinikiza

int previousButtonStateRight = JUU; int previousButtonStateUp = JUU;

usanidi batili () {

// fanya kifungo cha kushinikiza Kitufe: pinMode (kifungoLeft, INPUT); pinMode (kifungoHaki, INPUT); pinMode (kifungoUp, INPUT); // kuanzisha udhibiti juu ya kibodi: Keyboard.begin (); }

kitanzi batili () {

// soma kitufe cha kushinikiza: int buttonStateLeft = digitalRead (buttonLeft); // ikiwa hali ya kifungo imebadilika, ikiwa ((buttonStateLeft! = previousButtonStateLeft) // na kwa sasa imeshinikizwa: && (buttonStateLeft == HIGH)) {// andika ujumbe Kinanda.print ("a"); } // // hifadhi hali ya kitufe cha sasa kwa kulinganisha wakati ujao: previousButtonStateLeft = buttonStateLeft;

// soma kifungo cha kushinikiza:

kifungo cha ndaniStateRight = dijitiSoma (kitufe cha kulia); // ikiwa hali ya kifungo imebadilika, ikiwa ((buttonStateRight! = previousButtonStateRight) // na kwa sasa imeshinikizwa: && (buttonStateRight == HIGH)) {// chapa ujumbe wa Kinanda.print ("w"); } // // hifadhi hali ya kifungo cha sasa kwa kulinganisha wakati ujao: previousButtonStateRight = buttonStateRight;

// soma kifungo cha kushinikiza:

kifungo cha ndaniStateUp = digitalRead (buttonUp); // ikiwa hali ya kifungo imebadilika, ikiwa ((buttonStateUp! = previousButtonStateUp) // na kwa sasa imeshinikizwa: && (buttonStateUp == HIGH)) {// andika ujumbe Keyboard.print ("d"); } // // hifadhi hali ya kitufe cha sasa kwa kulinganisha wakati ujao: previousButtonStateUp = buttonStateUp; }

Ikiwa unataka kitu kitokee kwa muda mrefu kama kitufe kinasukumwa, kama unavyotaka kwa harakati ya kushoto au kulia, acha tu iandike barua bila kuangalia hali ya kitufe kilichopita. Kumbuka kukumbuka ucheleweshaji mdogo ili kuizuia iwe wazimu na kukabiliana na vitufe vyovyote ambavyo vifungo vyako vinaweza kuwa navyo. Kuna njia nzuri zaidi za kutatua shida hii, lakini hii ni rahisi na haraka.

# pamoja na "Kinanda.h"

kifungo cha int intLeft = A0; // pini ya kuingiza kwa kifungo cha kushinikiza

kifungo cha int intRight = A1; kifungo cha int intUp = A2;

usanidi batili () {

// fanya kifungo cha kushinikiza Kitufe: pinMode (kifungoLeft, INPUT); pinMode (kifungoHaki, INPUT); pinMode (kifungoUp, INPUT); // kuanzisha udhibiti juu ya kibodi: Keyboard.begin (); }

kitanzi batili () {

// soma kitufe cha kushinikiza: int buttonStateLeft = digitalRead (buttonLeft); ikiwa (buttonStateLeft == HIGH) // ikiwa kitufe kinabanwa {// chapa ujumbe wa Kinanda.print ("a"); kuchelewesha (50); // Kuchelewa kwa kukwepa na kukuwezesha kupata kompyuta}

// soma kifungo cha kushinikiza:

kifungo cha ndaniStateRight = dijitiSoma (kitufe cha kulia); ikiwa (buttonStateRight == HIGH) // ikiwa kitufe kinabanwa {// chapa ujumbe wa Kinanda.print ("w"); kuchelewesha (50); // Kuchelewa kwa kurudi na kukuruhusu kupata kompyuta}

// soma kifungo cha kushinikiza:

kifungo cha ndaniStateUp = digitalRead (buttonUp); ikiwa (buttonStateUp == HIGH) // ikiwa kifungo kibonye {// chapa ujumbe Keyboard.print ("d"); kuchelewesha (50); // Kuchelewa kwa kukwepa na kukuwezesha kupata kompyuta}}}

Daima unaweza kutumia mchanganyiko wa njia zote mbili, kulingana na kile kinachofaa mahitaji yako.

Hatua ya 3: Kukata Laser kwa Kesi

Laser Kukata Kesi
Laser Kukata Kesi

Kwa kesi hiyo nilitumia 3 mm mdf, na kuingiza 2mm Plexiglas. Niliongeza kuingiza kama ninataka kuongeza taa za ndani ndani ya kesi hiyo baadaye ili kuifanya iwe nzuri na yenye kung'aa.

Niliingiza vipimo vyangu kwa makercase na kupakua faili ya svg. Niliifungua kwenye Illustrator na nikaongeza mashimo mahali nilipotaka. Ikiwa huna Illustrator unaweza kutumia Inkscape kwa hatua hii.

Huna haja ya kutumia mkataji wa laser kwa kweli, kwani hii ni sanduku rahisi na mashimo machache ndani yake. Inapaswa kuwa rahisi kutosha kuunda kwa kutumia zana za jadi za nguvu (au hata zana za mkono!) Mimi ni mvivu sana na nilikuwa na ufikiaji wa mkataji wa laser.

Hatua ya 4: Kufunga vifungo vya Arcade

Kufunga Vifungo vya Arcade
Kufunga Vifungo vya Arcade
Kufunga Vifungo vya Arcade
Kufunga Vifungo vya Arcade
Kufunga Vifungo vya Arcade
Kufunga Vifungo vya Arcade

Kitufe cha Arcade (au yangu angalau) kina sehemu tatu. Kitambaa cha plastiki, mmiliki wa LED (pamoja na LED ndani yake) na swichi ndogo. Kubadilisha ndogo ni kitufe halisi cha kitufe na ndio utahitaji kuungana na Arduino yako. Kuna vituo vitatu (biti za chuma ambazo hutoka nje, ambapo utaunganisha waya zako) kwenye swichi ndogo. Yule aliye juu (au chini, unachotaka) ni ardhi. Vituo vingine viwili ni Open Normal (NO) na Normal Closed (NC). HAKUNA maana kwamba ikiwa swichi imebanwa inafanya unganisho. NC inamaanisha kuwa ikiwa kitufe kinabanwa huvunja unganisho. Tutatumia HAPANA kwa mradi huu. Niliandika ardhi, HAPANA na NC kwenye swichi yangu ndogo kwenye picha.

Vifungo vyangu vimewashwa kwa hivyo niliuzia waya kwa mmiliki wa LED. Hakikisha kuweka rangi kwenye waya wako ili ujue ni upande upi ni anode na ni ipi cathode (pande nzuri na hasi za LED).

Niliuza pini za kichwa kwenye waya zangu, kuzifanya ziwe rahisi kutumia na ubao wa mkate usiouzwa. Niliuza waya kwa pini ya kichwa na kuweka joto kidogo neli kuzunguka ili kuwafanya wawe hodari zaidi.

Hatua ya 5: Weka Vifungo na Unganisha kwenye Bodi yako

Weka Vifungo na Unganisha kwenye Bodi yako
Weka Vifungo na Unganisha kwenye Bodi yako
Weka Vifungo na Unganisha kwenye Bodi yako
Weka Vifungo na Unganisha kwenye Bodi yako
Weka Vifungo na Unganisha kwenye Bodi yako
Weka Vifungo na Unganisha kwenye Bodi yako
Weka Vifungo na Unganisha kwenye Bodi yako
Weka Vifungo na Unganisha kwenye Bodi yako

Sasa ni wakati wa kuweka vifungo vyako vya arcade katika kesi yako. Ondoa pete ya kufuli kutoka kwenye kasha la plastiki na ubandike kupitia shimo kwenye kesi hiyo. Piga pete ya kufuli upande wa pili ili kupata kitufe mahali pake. Fimbo kwenye kishika LED na uipindue ili kuifunga iwe mahali. Tembeza kwenye swichi ndogo (kuna watu mashuhuri kidogo na mashimo ambayo yanalingana na kila mmoja kuishikilia).

Ili kuunganisha swichi kwenye ubao ondoa vifungo vya kushinikiza unaweza kuwa umeongeza au haujaongeza. Unganisha waya inayoongoza kutoka chini ya ubadilishaji mdogo kwenda chini ya Arduino na kontena (ambapo mguu wa kitufe cha kushinikiza ulikuwa). Unganisha waya inayoongoza kutoka NO ya kubadili ndogo hadi 5v ya Arduino.

Kwa waya za LED unganisha waya hasi chini na chanya kupitia kontena la 220OHM kwa 5v. Ukiwatia waya kama hii watakuwa kila wakati. Unaweza kuwaongeza kwenye nambari na uwape kuwasha na kuzima kwa usawazishaji na vifungo ikiwa unataka.

Hatua ya 6: Coding Hell

Kwa hivyo, sasa umeambatisha vitufe vyako vipya kwako nambari ya zamani na ghafla haifanyi kazi kama inavyostahili tena. Herufi zinaonekana mbili au tatu kwa wakati na haifanyi kazi kama inavyostahili na michezo rahisi ya HTML5. Karibu ujipunguze kuzimu.

Kwanza fanya vitu vya kwanza. Nambari tuliandika wakati wa kuiga? inafanya kazi vizuri na ni rahisi, lakini sio kifahari. Ikiwa unataka kuongeza vifungo zaidi lazima unakili na ubandike vijisehemu vya nambari na ubadilishe maadili yote ndani yao. Ukisahau mmoja wao unaingia kuzimu ya kurekebisha hitilafu. Gundua mandhari hapa? Kuandika ni kuzimu, lakini ni furaha sana, kutatua shida kuzimu.

Tunataka nambari fupi nzuri. Kwa hivyo tutabadilisha vitufe vyote vya kibinafsi kuwa safu. Kwa njia hii, ikiwa unataka kuongeza vifungo zaidi lazima ubadilishe tu kitufe, pini ambapo ziko na pato lao. Pia tunabadilisha pembejeo muhimu kuwa ASCII kwa sababu… inafanya kazi vizuri?

Sasa ikiwa uko kama mimi utaandika njia rahisi na rahisi ya kutumia vifungo na haitafanya kazi vizuri kama vile ungependa. Kwa hivyo unatengeneza matoleo mapya (kumbuka watoto, nyongeza za kuongeza!), Jaribu vitu tofauti, andika nambari ngumu zaidi ambayo bado haifanyi kazi vizuri na mwishowe urudi kwa nambari rahisi uliyoandika masaa kadhaa iliyopita NA uone kosa ndogo ambalo mara moja hutengeneza kila kitu.

Wacha nikuepushe na safari hiyo, hii hapa nambari ya kufanya kazi:

Kanusho: maandishi haya yaliandikwa baada ya masaa ya kuweka alama na kurekebisha hitilafu nambari rahisi sana. Tafadhali puuza ishara zozote za kuchanganyikiwa na uzingatia nambari ya kufanya kazi iliyochapishwa hapa chini;)

# pamoja na "Kinanda.h" #fafanua kitufeKiwango cha 3

Ink buttonPin = {

A0, A1, A2}; // Vifungo viko wapi? Barua ya barua = {97, 100, 119}; // Barua katika ASCII, hapa: a, d, w int buttonState [buttonAmount]; // Je! Kifungo kimesukuma au la?

usanidi batili () {

kwa (int i = 0; i <buttonAmount; i ++) {// mzunguko kupitia pinMode ya safu (buttonPin , INPUT); // weka pini zote kuingiza}}

kitanzi batili () {

kwa (int i = 0; i <buttonAmount; i ++) // mzunguko kupitia safu ya {buttonState = digitalRead (buttonPin ); // Je! Vifungo vinafanya nini? ikiwa (buttonState == HIGH) {// Ikiwa kitufe kinabanwa Keyboard.press (asciiLetter ); // tuma barua inayolingana} mwingine // ikiwa kitufe hakikubanwa {Kinanda.tafadhali (asciiLetter ); // toa barua}}

}

Hatua ya 7: Kila kitu hufanya kazi

Furahia kuziba kwako na ucheze mdhibiti wa kawaida!

Ikiwa ulipenda mafunzo haya, tafadhali fikiria kunipigia kura kwenye mashindano!

Ilipendekeza: