Turinys:
- 1 žingsnis: Craps
- 2 veiksmas: prekiautojo grynųjų pinigų rodymas
- 3 žingsnis: programos aprašymas
- 4 žingsnis: pagrindinis komunikacijos kodas
- 5 žingsnis: galutinis kodas ir vaizdo įrašas
Video: AVR surinkėjo pamoka 11: 5 žingsniai
2024 Autorius: John Day | [email protected]. Paskutinį kartą keistas: 2024-01-30 10:44
Sveiki atvykę į 11 vadovėlį!
Šioje trumpoje pamokoje mes pagaliau sukursime pirmąją galutinio projekto dalį.
Pirmas dalykas, kurį turėtumėte padaryti, yra pereiti prie paskutinio šios pamokos žingsnio ir žiūrėti vaizdo įrašą. Tada grįžk čia. [stabtelėti, kol tai darai …] Gerai. Dabar tęskite.
Jei dar neatspėjote, mes kuriame „Craps“žaidimą! Žinoma, tai, kad aš kuriu „craps“žaidimą, tikrai nereiškia, kad jūs turite. Tikiuosi, kad tai savaime suprantama. Bet kokiu atveju naudinga naudoti mikrovaldiklius, kad būtų galima valdyti segmentuotus ekranus ir pan., Ir bendrauti tarpusavyje - tai čia daugiausia ir darome. Galite parašyti kodą, kad galėtumėte juos naudoti, kaip jums patinka. Kol kas ketinu juos koduoti, kad jie paleistų „craps“, nors vėliau galbūt nuspręsiu pakeisti segmentinių ekranų paskirtį ir padaryti ką nors kita.
Priežastis, dėl kurios aš tai kuriu, yra ta, kad galvoju, jog galiausiai galėčiau norėti viso dydžio „Vegas Craps“stalo mano „vyro urve“, esančiame mano namo rūsyje. Tačiau nė vienas iš mano draugų neturi nė menkiausio supratimo, kaip elgtis, įmušti įvarčius ar išmokėti „craps“statymus ir metimus. Taigi aš supratau, kad būtų šaunu, jei stalas atliktų visą prekiautojo darbą už mus! Kai statome statymą ant stalo, mes taip pat galime paspausti nedidelį mygtuką šalia kvadrato, kuriame yra mūsų žetonai, rodantį, kiek ten įdėta, tada mikrovaldiklis gali apskaičiuoti to kvadrato išmokėjimą po kauliukų metimo ir jį parodyti. Vis dar nesu tikras, kaip organizuosiu šį aspektą. Viena mintis buvo ta, kad kiekvieno žmogaus bus paprašyta atlikti visus savo statymus paeiliui, kad valdytojas prieš įrašydamas kitą žaidėją įrašytų, kur yra kiekvieno asmens pinigai ir pan. Tada po metimo kompiuteris gali parodyti išmokas kiekviename kvadrate ir taip pat gali išlaikyti veikiančius „bendrus pinigus“kiekvienam žaidėjui.
Vienai šios pamokos viršelio nuotraukai aš tiesiog turėjau panaudoti nuotrauką, kurioje šią vasarą prie pokerio stalo Vegase traukiu 5 tūzus. Heheh. Palepink mane.
Čia yra nuoroda į visą mano AVR surinkėjo vadovėlių kolekciją:
1 žingsnis: Craps
Šioje pamokoje mes sukursime tik paprasčiausią paskutinio „Craps“žaidimo dalį. Tai vadinama „The Pass Line“ir galite statyti. Viską, ką reikia žinoti apie žaidimo „perdavimo liniją“, galite sužinoti peržiūrėję trumpą 2 minučių trukmės mokomąjį vaizdo įrašą, kurį pridėjau prie šio žingsnio.
Mes sukursime dar 4 skaitmenų ekraną, kuris stebės prekiautojo grynuosius pinigus taip, kaip dabartinis 4 skaitmenų ekranas seka žaidėjo pinigus. Pardavėjas pradės nuo 20 USD, o žaidėjas-nuo 20 USD (visi galimi žaidimo pinigai yra 9999 USD-didžiausias mūsų 4 skaitmenų rodymas, tačiau mums reikės tik 20 USD už šį pirmąjį žaidimo gabalą arba kitaip) būtų nuobodu kraštutiniais atvejais ir sunku laimėti ar pralaimėti per tinkamą laiką). Jei žaidėjas paima visus pardavėjo pinigus, žaidėjas laimi. Jei žaidėjas praranda visus savo pinigus, laimi prekiautojas.
Kaip laimėti ar prarasti pinigus? Na, tie, kurie žaidėte „Craps“, matėte, kaip gatvėje žmonės „šaudo kauliukus“ar matė, kaip jie žaidžia prieš kazino Vegase, jau žinos. Likusiems jums leiskite trumpai apibūdinti žaidimo „pass line“dalį, kurią šiandien koduosime.
„Craps“buvo žaidžiamas šimtus metų, datuojamas kryžiaus žygių laikais. Jį vaidino kariai Antrojo pasaulinio karo apkasuose, jis buvo žaidžiamas gatvėse, buvo žaidžiamas kazino ir lošimo salėse. Tai prasidėjo tik nuo perdavimo linijos, o visi kiti dalykai buvo pridėti prie jos vėliau. Mes stebėsime tą pačią pažangą.
Perėjimo linija veikia taip. Jūs atliekate statymą ir tada metate kauliuką. Pirmasis ritinys vadinamas „išeinančiu ritiniu“. Jei žaidime „2“(gyvatės akys), 3 (tūzas tūzas) ar 12 (automobiliuose su dėžute), jūs prarasite statymą ir jis bus vadinamas „craps“. Jei meti 7 (natūralus) arba 11 (yo arba yo-leven), tu laimi. Jei metate bet kurį kitą skaičių, šis skaičius tampa jūsų „tašku“. Nustačius „tašką“, jūs ir toliau metate kauliukus, siekdami dar kartą pataikyti į tašką prieš numesdami 7. Jei gausite tašką prieš metant 7, laimėsite net pinigus. Taigi statymas už dolerį laimi dolerį iš prekiautojo. Jei gausite 7, kol jūsų taškas nebus išmuštas, tai vadinama „septyniais“ir jūs prarasite statymą pardavėjui.
Po to vėl pradedi. Padėkite statymą ant perdavimo linijos ir mesti kauliukus, 7 ar 11 pergalių, 2, 3 arba 12 pralaimėjimų.
Yra daug daugiau statymų rūšių: „nepraeiti“, „perduoti koeficientus“, „nepraleisti koeficientų“, „ateiti statymas“, „nevykti“, „laukas“, „ragas“, „ sunkūs būdai ir tt ir tt ir tt Išsamią informaciją galite rasti čia:
en.wikipedia.org/wiki/Craps
Kaip jau minėjau aukščiau, kol kas mes koduosime tik žaidimo perdavimo linijos dalį, kuri buvo viskas, ką jie turėjo tą dieną, kai vaikai už vienas kito pietų pinigus mėtydavo kauliukus į sieną, todėl čia ir pradėsime.
Tačiau prieš pradėdami koduoti daiktus, sukurkite prekiautojo grynųjų pinigų ekraną. Tam noriu naudoti vieną iš didesnių 4 skaitmenų ekranų, kuriuos galite gauti iš „Sparkfun“ar kitur. Nuo šiol nesiruošiu išvardyti medžiagos apie šias pamokas. Jei jūs iš tikrųjų viską kūrėte kartu su manimi, jūs jau žinote, kur gauti medžiagų ir kokios jos yra. Man beprasmiška juos išvardyti ar kiek jie kainuoja.
Taigi, paimkime vieną iš mūsų prototipų plokščių, didelį 4 skaitmenų ekraną, kitą „ATmega328p“, kad valdytumėte tą ekraną, ir sukurkite jį taip, kaip mes darėme su kauliukais ir žaidėjo ekranu anksčiau. Mes taip pat prijungsime energijos, programavimo ir TWI ryšių antraštes, kaip ir kiti.
2 veiksmas: prekiautojo grynųjų pinigų rodymas
Pardavėjo ekraną kuriame taip pat, kaip ir žaidėjo 4 skaitmenų ekraną paskutinėje pamokoje. Vieninteliai skirtumai yra tai, kad jis yra didesnis ir turi mažiau kaiščių, todėl mes jį sutvarkysime ir prijungsime kitaip.
Pridėjau šio ekrano laidų nuotrauką. Matote, kad jis yra didesnis ir turi mažiau smeigtukų nei mūsų žaidimo pinigų ekranas. Paveikslėlis yra iš „sparkfun“puslapio, kuriame gavau ekraną, ir rodo, kurie smeigtukai yra kiekvieno skaitmens galia, o kurie smeigtukai valdo kiekvieną skaitmens segmentą.
Kaip įprasta, pirmiausia turėtumėte prijungti ekraną prie savo prototipinės lentos ir išbandyti kiekvieną segmentą, kad įsitikintumėte, jog suprantate, kaip jis prijungtas. Tada turėtumėte prijungti jį prie AVR mikrovaldiklio kaiščių savo duonos lentoje ir paleisti jį iš ten, kol šioje instrukcijoje veiks visas mūsų kodas. Galiausiai, pabaigoje turėtumėte pastatyti išorinę plokštę ir ją lituoti. Tada, kai bandysite galutinį produktą, žinosite, kad visos problemos kyla iš jūsų litavimo ir pjovimo, o ne kodo. Be to, nepamirškite gerai žinomos dailidės aksiomos „išmatuokite du kartus ir supjaustykite vieną kartą“arba, jei gaminate plokštes: „supjaustykite du kartus, lituokite vieną kartą“. Kaip matote paveikslėlyje, aš pagaliau palūžau ir nusipirkau tobulą „Dremel“priedą tokiam darbui. „Deimantinių taškų rinkinys“. Tai kainavo 5 dolerius, tačiau tai yra daug mažiau nei pykčio valdymo terapija, kurią atliekant pjovimo darbai atliekami per daug kartų iš eilės.
Aš naudoju 330 omų rezistorius šiam ekranui. COM kaiščiai pereina per rezistorių į GND, o galia patenka į bet kurį segmentą, kurį norite rodyti. Aš naudoju PC0 per PC3 COM kaiščiams ir PB0, PB1, PB2, PB3, PB4, PD5, PD6 ir PD7 segmentams.
Čia yra raktas, kad padidintumėte savo galimybes tai padaryti teisingai:
- suplanuokite grandinę
- nutraukite grandinę
- patikrinkite savo laidus
- pritvirtinkite rezistorius, dangtelius ir kristalų osciliatorių
- dar kartą patikrinkite jungtis ir laidus
- pritvirtinkite išorinius laidus
- prijunkite mikrovaldiklį
- dar kartą patikrinkite laidus
- pritvirtinkite 4 skaitmenų ekraną
- patikrinkite kiekvieną skaitmenį pora laidų iš duonos lentos
- atidėkite jį ir parašykite kodą, žinodami, kad vėliau tikriausiai turėsite koreguoti dalykus ir tikėdamiesi, kad neuždengėte ryšio, kurį reikia nutraukti.
Parodžiau savo laidų darbų nuotraukų seriją. Supraskite, kad galite laisvai jungti laidus savo nuožiūra. Labai tikėtina, kad galite rasti geresnį žemėlapį nei aš ir turėtumėte jį naudoti. Niekas šiuose vadovėliuose nepriklauso nuo to, kaip prijungti jūsų komponentai, jei jie turi teisingus išvesties prievadus. Kas man primena. Atkreipkite dėmesį, kad dabar dvi antraštės yra skirtos SDA, o dvi - SCL? Kodėl manote, kad mes tai padarėme?
Dabar, kaip matote iš pridėto kodo pamokos pabaigoje, aš tiesiog iškirpiau ir įklijavau kodą iš paskutinės pamokos grotuvo ekrano į naują prekiautojo ekrano failą. Tada perėjau ir pakeičiau „segmentų“paieškos lentelę, kad ji atitiktų naują kaiščių žemėlapį, pažymėdama, kad šiam vaizdui „com“kaiščiai yra sumalti, o segmentai yra 5 V, o ne atvirkščiai, kaip buvo kitam ekranui. Aš taip pat pakeičiau prievadų inicializaciją, kad atspindėtų naujus laidus, pakeičiau pardavėjo kasos ekrano adresą į 0b1000000, kad kauliukų volelis galėtų su juo kalbėtis, pakeičiau „ciklo“paprogramę, kad ji išjungtų PC0 per PC3 „com“smeigtukai, kai nori maitinti tam tikrą segmentą, o aš pakeičiau rodomą „skaitmenį“, nes naujos laidų skaitmenys yra priešingos eilės (jei palikote jį tokį, koks buvo ir bandėte parodyti 1234) būtų rodomas kaip 4321).
Čia yra naujas registro žemėlapis:
(PD7, PD6, PD5, PB4, PB3, PB2, PB1, PB0) = (dešimtainis taškas, c, g, b, f, a, e, d)
kur 1 yra įjungtas, o 0 - išjungtas.
Dabar išbandykite ekraną, pirmiausia nustatydami pradinę ekrano vertę į įvairius skaičius, kad įjungus jie juos rodytų. Tai parodys, ar viskas veikia tinkamai.
Tada pakeiskite diceroller kodą, kad jis naudotų naują vergo adresą, sujunkite juos ir paleiskite. Tai turėtų veikti tiksliai taip, kaip mes padarėme paskutinėje pamokoje, išskyrus tai, kad kauliukų ritiniai dabar rodomi naujame ekrane.
Puiku! Dabar esame pasirengę parašyti naują kauliukų ritinėlio kodą, kad jis palaikytų ryšį tiek su žaidėjo, tiek su prekiautojo ekranu.
3 žingsnis: programos aprašymas
Mūsų žaidimo kodas veiks taip, kad mes laikysime kauliukų ritinėlį pagrindiniu ir pridėsime prekiautojo ekraną kaip papildomą vergą. Kauliukų volelis valdys žaidimą ir gautus grynųjų pinigų pakeitimus nusiųs pardavėjui, o žaidėjas parodys po kiekvieno metimo. Kol kas tik turėsime, kad „Pass Line“statymas būtų 10 USD kiekvieną kartą, todėl mums dar nereikės pernelyg komplikuotis, kai žaidėjas keičia savo statymą. Vėliau, kai tik mechanikai dirbs, pridėsime kitą valdiklį, kuris bus papildomas kapitonas, kuris valdys lažybas ir išmokėjimus, o mūsų kauliukų ritinys išliks pagrindinis, bet naudojamas tik kauliukams mesti. Tai leis mums įsitraukti į TWI arbitražą, susidūrimus ir kitus svarbius nuoseklaus ryšio aspektus, kai turite kelis šeimininkus ir vergus. Taip pat pridėsime keletą atskirų 7 skaitmenų ekranų su mygtukais po jais, kurie leis mums lažintis dėl kitų tipų ritinių, tačiau visa tai bus pateikiama būsimuose vadovėliuose. Kol kas mes tik norime, kad kauliukų ritinys būtų šeimininkas, o du ekranai - vergai. Kai paspausime mygtuką, kodas nuspręs, ar išmokėti natūralų, imti pinigus iš „craps“, ar šakotis į „taškinę“ritinių seriją iki laimėjimo ar septinto.
Pirmiausia parašykime vergų tvarką. Tai paprasta tuo, kad viskas, ką jie padarys, yra žiūrėti SDA eilutę pagal savo adresą, jei jiems paskambins, jie perskaitys naują numerį ir jį parodys. Tai viskas! Jiems net nereikia grįžti prie kapitono, nes kapitonas stebės jų sumas ir atliks visus išmokų skaičiavimus prieš juos atnaujindamas. Būsimuose vadovėliuose vergai rašys šeimininkui (pavyzdžiui, kai turime vienetinius 7 skaitmenų ekranus su lažybų sumos mygtukais, jie turės pasakyti šeimininkui, kiek statoma už kiekvieną ekraną, todėl mes kreipkitės į juos adresu + perskaitykite skambutį su kapitonu „pagrindinio imtuvo režimu“), bet mes tuo laiku pasieksime.
Kol kas viską paskatina kauliukų metimo mygtuko paspaudimas, po to skaičiavimas arba tolesnis mygtuko paspaudimas ir galiausiai pranešimas kiekvienam ekranui su naujomis sumomis. Po kiekvieno išmokėjimo bus atliktas testas, siekiant nustatyti, ar žaidėjas laimėjo ar pralaimėjo, kitaip tariant, ar prekiautojo pinigai po metimo tampa nuliniai, ar žaidėjo pinigai tampa nuliniai po metimo (nei prekiautojas, nei žaidėjas) gali būti neigiamas, nes jiems bus leidžiama statyti tik 10 USD arba bet ką, kas liko, jei jis yra mažesnis nei 10 USD).
Taigi taip ir veiks. Imkime kodavimą.
4 žingsnis: pagrindinis komunikacijos kodas
Dabar galime parašyti kauliukų ritinėlio bendravimo tvarką. Tai taip pat beveik identiška tai, ką rašėme praėjusį kartą, išskyrus tai, kad bendrausime su dviem skirtingais vergais, o ne tik su vienu. Atminkite, kad kiekvienam vergui naudojame skirtingą adresą. Turėtumėte patys modifikuoti kodą, tada tiesiog išbandyti jį su kiekvienu adresu ir įsitikinti, kad jis veikia taip pat, kaip ir paskutinė pamoka, išskyrus kiekvieną atskirą ekraną.
Pridėsiu kiekvieno komponento kodą, kuris tiesiog parodo ritinio rezultatą, kad jį būtų galima naudoti, kad ekranai tinkamai veiktų ir patikrintų laidus.
Žaidimo kodavimas neįveda nieko naujo, kaip surinkimo kalbos komandos ar AVR mikrovaldiklio komponentai, todėl nemanau, kad man reikia jį pereiti eilute. Tikriausiai pastebėjote, kad kai pristatome ką nors naujo, kiekvieną eilutę išsamiai peržiūriu iki to, kad jus erzina, o ne užmigdo. Kita vertus, to nedarysiu, jei nebus pristatyta nieko naujo. Taip yra ir šiandien. Taigi manau, kad jau esate pasiruošęs žaisti su kodu, perskaityti kodą, jį išanalizuoti, suprasti kodą, kritikuoti kodą, šaipytis iš kodo ir juoktis iš vaikino, kuris parašė kodą. Taigi aš leisiu jums eiti pirmyn ir tai padaryti. Beveik neabejotina, kad rasite daug vietų, kurias galite patobulinti ar bent supaprastinti tai, ką parašiau.
Aš, kaip įprasta, pridedu galutinę dviejų ekranų ir diceroller kodo versiją kitame žingsnyje kartu su vaizdo įrašu, kuriame aš išbandau tą dalyką.
5 žingsnis: galutinis kodas ir vaizdo įrašas
Pridėjau vaizdo įrašą ir 3 programas. Pastebėsite, kad lažybas ir pradinį prekiautoją bei žaidėjo pinigus galite pataisyti programos viršuje naudodami.equ pareiškimus.
Kitoje pamokoje pridėsime galimybę statyti už įvairius dalykus, kurie padarys žaidimą įdomesnį. Įdomus šiuolaikinių „Craps“dalykas yra tas, kad jūs turite daugybę skirtingų būdų statyti ir stengtis padidinti savo šansus. Tiesą sakant, „Craps“yra didžiausias kazino žaidimas! … JEI žinai, kaip žaisti. Kita vertus, jei nežinote, kaip žaisti, tai tampa vienu mažiausių šansų žaidimų.
Kai turėsime daugiau dalykų, dėl kurių galime statyti pinigus, padidinsiu bendrą žaidimo pinigų sumą.
Turėčiau būti linksma!
Pasimatysim kitą kartą!
Rekomenduojamas:
AVR surinkėjo pamoka 2: 4 žingsniai
2 AVR surinkėjo pamoka: ši pamoka yra „AVR surinkėjo 1 vadovo“tęsinys. Jei dar neperžiūrėjote 1 vadovo, turėtumėte sustoti ir pirmiausia tai padaryti. Šioje pamokoje mes tęsime „atmega328p u“surinkimo kalbos programavimo tyrimą
AVR surinkėjo pamoka 1: 5 žingsniai
1 AVR surinkėjo pamoka: nusprendžiau parašyti daugybę pamokų, kaip parašyti „Atmega328p“, kuris yra „Arduino“naudojamas mikrovaldiklis, surinkimo kalbos programas. Jei žmonės ir toliau domėsis, aš ir toliau kursiu vieną kartą per savaitę, kol baigsis
AVR surinkėjo pamoka 6: 3 žingsniai
AVR surinkėjo pamoka 6: Sveiki atvykę į 6 mokymo programą! Šiandienos pamoka bus trumpa, kurioje mes sukursime paprastą būdą perduoti duomenis tarp vieno „atmega328p“ir kito naudojant du juos jungiančius prievadus. Tada mes paimsime kauliukų ritinį iš 4 mokymo programos ir registro
AVR surinkėjo pamoka 8: 4 žingsniai
„AVR Assembler 8“pamoka: Sveiki atvykę į 8 mokymo programą! Šioje trumpoje pamokoje mes šiek tiek nukreipsime nuo naujų surinkimo kalbos programavimo aspektų pristatymo, kad parodytume, kaip perkelti mūsų prototipų kūrimo komponentus į atskirą " spausdintą " grandinės plokštė
AVR surinkėjo pamoka 9: 7 žingsniai
AVR surinkėjo pamoka 9: Sveiki atvykę į 9 vadovą. Šiandien parodysime, kaip valdyti 7 segmentų ekraną ir 4 skaitmenų ekraną, naudojant mūsų ATmega328P ir AVR surinkimo kalbos kodą. Tai darydami turėsime nukrypti, kaip naudoti kaminą