Tartalomjegyzék:

AVR összeszerelő bemutató 11: 5 lépés
AVR összeszerelő bemutató 11: 5 lépés

Videó: AVR összeszerelő bemutató 11: 5 lépés

Videó: AVR összeszerelő bemutató 11: 5 lépés
Videó: Horizon Fitness T11 futópad 2024, November
Anonim
AVR összeszerelő oktatóanyag 11
AVR összeszerelő oktatóanyag 11
AVR összeszerelő oktatóanyag 11
AVR összeszerelő oktatóanyag 11
AVR összeszerelő oktatóanyag 11
AVR összeszerelő oktatóanyag 11

Üdvözöljük a 11. oktatóanyagban!

Ebben a rövid oktatóanyagban végre elkészítjük a végső projektünk első részét.

Az első dolog, amit meg kell tennie, menjen el az oktatóanyag utolsó lépéséhez, és nézze meg a videót. Akkor gyere vissza ide. [szünet, amíg ezt csinálod …] Oké. Most folytassa.

Ha még nem sejtette, Craps játékot építünk! Természetesen az, hogy craps játékot építek, természetesen nem jelenti azt, hogy muszáj. Remélem, ez magától értetődik. Mindenesetre hasznos a mikrokontrollerek használata a szegmentált kijelzők stb. Vezérléséhez, és az egymással való kommunikációhoz - itt elsősorban ezt tesszük. Írhat kódot a használatához, ha úgy tetszik. Egyelőre kódolni fogom őket, hogy craps-t játsszanak, bár később úgy dönthetek, hogy a szegmentált kijelzőket valami másra tervezem.

Azért építem ezt, mert arra gondolok, hogy esetleg egy teljes méretű Vegas Craps asztalt szeretnék a házam alagsorában lévő "férfi barlangomba". Azonban egyik barátomnak sincs fogalma arról, hogyan kell kezelni, pontozni vagy kifizetni a craps fogadásokat és dobásokat. Ezért gondoltam, hogy jó lenne, ha az asztal elvégezné az összes kereskedői munkát helyettünk! Amikor tétet teszünk az asztalra, egy kis nyomógombot is megnyomhatunk a négyzet mellett, amelyen a zsetonjaink láthatók, és azt mutatják, hogy mennyit helyeztek oda, majd a mikrokontroller kiszámíthatja az adott négyzet kifizetését a kockadobás után, és megjeleníti azt. Még mindig nem vagyok biztos benne, hogyan fogom megszervezni ezt a szempontot. Az egyik gondolatom az volt, hogy mindenkit felkérnek arra, hogy soronként tegye meg minden fogadását, hogy a vezérlő rögzítse, hol van az egyes személyek pénze, mielőtt rögzíti a következő játékost, és így tovább. Ezután a dobás után a számítógép megjelenítheti a kifizetéseket minden mezőn, és futó "teljes készpénzt" is tarthat minden játékos számára.

Ennek az oktatóanyagnak az egyik borítóképéhez csak egy képet kellett használnom, amelyen nyáron 5 ászt húztam a Vegas -i pókerasztalnál. Heheh. Kényeztesse.

Itt egy link az AVR összeszerelő oktatóanyagaim teljes gyűjteményéhez:

1. lépés: Craps

Craps!
Craps!
Craps!
Craps!
Craps!
Craps!

Ebben az oktatóanyagban csak az utolsó Craps játék legegyszerűbb részét fogjuk elkészíteni. Ezt "The Pass Line" -nak hívják, és fogadhat rá. Mindent megtudhat, amit a játék "passzvonal" részéről tudnia kell, ha megnézi a rövid, 2 perces oktatóvideót, amelyet ehhez a lépéshez csatoltam.

Felépítünk egy másik 4 számjegyű kijelzőt, amely ugyanúgy nyomon követi a kereskedő készpénzét, mint a jelenlegi 4 számjegyű kijelzőn a játékos készpénze. A kereskedő 20 dollárral kezdődik, a játékos pedig 20 dollárral (a játék összes lehetséges pénze 9999 dollár-a négyjegyű kijelzőnk maximális száma, de csak 20 dollárra lesz szükségünk a játék első darabjához, vagy más módon) fárasztó lenne a végletekben, és nehezen nyerhet vagy veszíthet tisztességes idő alatt). Ha a játékos viszi el az osztó összes pénzét, a játékos nyer. Ha a játékos elveszíti minden pénzét, akkor az osztó nyer.

Hogyan nyer vagy veszít pénzt? Nos, azok, akik játszottak Craps -szel, látták, hogy az emberek "kockát lőnek" az utcán, vagy látták, ahogy a Vegas -i kaszinó ellen játszanak, már tudják. A többiek számára hadd adjak egy rövid leírást a játék "pass line" részéről, amelyet ma kódolni fogunk.

A Craps -t több száz éve játszották, a keresztes háborúk idejéből. A csapatok a második világháború lövészárkaiban játszották, az utcákon játszották, a kaszinókban és a szerencsejátékokban játszották. Csak a passz vonallal kezdődött, és az összes többi dolgot később hozzáadták hozzá. Ugyanezt a fejlődést fogjuk követni.

A hágóvonal így működik. Tétet tesz, majd dobja a kockát. Az első tekercset "kijáratos tekercsnek" nevezik. Ha 2-es (kígyószemű), 3-as (ász-kettes) vagy 12-es (dobozos autók) kapnak a kijáraton, elveszíti a tétjét, és "craps" -nek hívják. Ha dob egy 7-est (természetes) vagy egy 11-est (yo, vagy yo-leven), nyer. Ha bármilyen más számot dob, akkor ez a szám lesz a "pontja". A "pont" megállapítása után folytatja a kockadobást azzal a céllal, hogy a 7 -es dobása előtt ismét eltalálja a pontot. Ha megkapja a pontját, mielőtt 7 -et dob, még pénzt is nyer. Tehát egy dollár fogadás nyer egy dollárt a kereskedőtől. Ha 7 -et kap a pontja dobása előtt, akkor ezt hetesnek nevezzük, és elveszíti a tétet az osztónál.

Ezt követően kezdje újra. Tegyen fogadást a passzvonalra és dobja a kockát, 7 vagy 11 győzelem, 2, 3 vagy 12 vereség.

Sokkal többféle fogadás létezik: "nem passzol", "átadási esély", "nem adja meg az esélyeket", "jöjjön fogadás", "ne jöjjön fogadás", "mező", "kürt", " kemény utak ", stb stb stb. Részleteket itt talál:

en.wikipedia.org/wiki/Craps

Ahogy fentebb mondtam, egyelőre csak a játék passzvonalát fogjuk kódolni, ez volt minden, ami abban az időben volt, amikor a gyerekek dobtak kockákat a falnak egymás ebédpénze miatt, és így itt kezdjük.

Mielőtt azonban elkezdenénk kódolni a dolgokat, építsük fel a kereskedő készpénz kijelzőjét. Ehhez szeretném használni a Sparkfun-ból vagy máshonnan beszerezhető nagyobb négyjegyű kijelző egyikét. Mostantól nem fogom felsorolni az oktatóanyagokkal kapcsolatos anyagokat. Ha valójában mindent velem együtt épített, akkor már tudja, hol lehet beszerezni az anyagokat és melyek azok. Felesleges felsorolnom őket, vagy mennyibe kerülnek.

Fogjuk hát az egyik prototípus-táblánkat, egy nagy, 4 számjegyű kijelzőt, egy másik ATmega328p-t a kijelző vezérlésére, és építsük fel, mint a kockahengerrel és a lejátszó kijelzőjével korábban. Fejléceket is csatolunk az áramellátáshoz, a programozáshoz és a TWI kommunikációhoz, mint a többi.

2. lépés: A kereskedő készpénz kijelzője

A kereskedő készpénz kijelzője
A kereskedő készpénz kijelzője
A kereskedő készpénz kijelzője
A kereskedő készpénz kijelzője
A kereskedő készpénz kijelzője
A kereskedő készpénz kijelzője

Az osztó kijelzőjét ugyanúgy készítjük el, mint a játékos 4 számjegyű kijelzőjén az utolsó oktatóanyagban. Az egyetlen különbség az, hogy nagyobb, és kevesebb csapja van, ezért másként fogjuk elrendezni és bekötni.

Csatoltam egy képet a kijelző kábelezéséről. Láthatja, hogy nagyobb, és kevesebb tűvel rendelkezik, mint a játékpénztárunk kijelzője. A kép a sparkfun oldalról származik, ahol megkaptam a kijelzőt, és megmutatja, hogy melyik érintkezők tápellátása van az egyes számjegyekhez, és melyik csapok szabályozzák az egyes szegmenseket egy számjegyben.

A szokásos módon először a kijelzőt kell csatlakoztatnia a prototípus kenyérsütő lapjához, és tesztelnie kell az egyes szegmenseket, hogy megbizonyosodjon arról, hogy érti, hogyan van bekötve. Ezután csatlakoztassa az AVR mikrokontroller csapjaihoz a kenyértábláján, és futtassa onnan, amíg az összes kódunk működik ebben az oktatóanyagban. Végül a végén fel kell építeni a külső táblát, és rá kell forrasztani. Aztán amikor teszteli a végterméket, tudni fogja, hogy minden probléma a forrasztási és vágási munkájából származik, és nem a kódból. Továbbá ne felejtsük el az ácsból jól ismert axiómát "kétszer mérni, és egyszer vágni", vagy áramköri lapok készítése esetén: "kétszer vágni, egyszer forrasztani". Amint a képen is látszik, végül összetörtem, és megvettem a tökéletes Dremel tartozékot ehhez a munkához. "Gyémántpont készlet". 5 dollárba került, de ez sokkal kevesebb, mint a Haragkezelési Terápia költsége, amely azzal jár, hogy túl sokszor egymás után felvillan a vágási munkám.

Ehhez a kijelzőhöz 330 ohmos ellenállásokat használok. A COM csapok az ellenálláson átmennek a GND -re, és a tápellátás a megjeleníteni kívánt szegmensre megy. A PC0 -t a PC3 -on keresztül fogom használni a COM -tűkhöz, és a PB0, PB1, PB2, PB3, PB4, PD5, PD6 és PD7 -et a szegmensekhez.

Itt van a kulcs ahhoz, hogy maximalizálja az esélyeit, hogy rendben legyen:

  1. feltérképezni az áramkört
  2. vágja le az áramkört
  3. ellenőrizze a vezetékeket
  4. rögzítse az ellenállásokat, a kupakokat és a kristályoszcillátort
  5. ellenőrizze újra a csatlakozásokat és a vezetékeket
  6. csatlakoztassa a külső vezetékeket
  7. csatlakoztassa a mikrokontrollert
  8. ellenőrizze újra a vezetékeket
  9. csatolja a 4 számjegyű kijelzőt
  10. ellenőrizze az egyes számjegyeket egy pár vezetékkel a kenyértábláról
  11. tegye félre, és írja be a kódot, tudva, hogy később valószínűleg módosítania kell a dolgokat, és remélve, hogy nem fedte le a kapcsolatot, amelyet meg kell szakítani.

Megmutattam egy sor képet a vezetékes munkámról. Kérjük, vegye figyelembe, hogy bármikor szabadon vezetékezheti a sajátját. Nagyon valószínű, hogy talál egy jobb térképet, mint én, és érdemes használni. Ezekben az oktatóanyagokban semmi sem függ az összetevők bekötésének módjától, amennyiben a megfelelő kimeneti portokkal rendelkeznek. Ami eszembe jut. Figyelje meg, hogy most két fejléc megy az SDA -hoz, kettő pedig az SCL -hez? Miért gondolod, hogy ezt tettük?

Most, ahogy az oktatóanyag végén található mellékelt kódból is látható, egyszerűen kivágtam és beillesztettem a kódot az utolsó oktatóanyag lejátszó kijelzőjéről egy új fájlba a kereskedő kijelzőjére. Aztán átmentem, és megváltoztattam a "szegmensek" keresési táblázatot, hogy megfeleljen az új tűtérképnek, megjegyezve, hogy ehhez a kijelzőhöz a "com" csapok le vannak csiszolva, és a szegmensek 5 V -osak, nem pedig fordítva, mint a másik kijelzőnél. Megváltoztattam a portok inicializálását is, hogy tükrözzék az új vezetékeket, a kereskedőpénztár címét 0b1000000 -ra változtattam, hogy a kockahenger képes legyen vele beszélni, a "ciklus" alprogramot úgy módosítottam, hogy kikapcsolja a A PC0 -n keresztül a PC3 -as "com" érintkezők, amikor egy adott szegmenst akar táplálni, és megváltoztattam a megjelenő "számjegyet", mivel az új vezetékek számai ellentétes sorrendben vannak (ha úgy hagyta, ahogy volt, és megpróbálta megjeleníteni az 1234 -et) helyette 4321 -ként tűnt volna fel).

Íme az új nyilvántartási térkép:

(PD7, PD6, PD5, PB4, PB3, PB2, PB1, PB0) = (tizedespont, c, g, b, f, a, e, d)

ahol 1 BE és 0 KI.

Most tesztelje a kijelzőt úgy, hogy először a kijelző inicializált értékét különböző számokra állítja, hogy bekapcsoláskor megjelenjen. Ez megmondja, hogy minden megfelelően működik -e.

Ezután módosítsa a diceroller kódot úgy, hogy az a slave új címét használja, kapcsolja össze és futtassa. Pontosan úgy kell viselkednie, mint az előző oktatóanyagban, kivéve, hogy a kockadobások most megjelennek az új kijelzőn.

Nagy! Most készen állunk arra, hogy megírjuk az új kockadobó kódot, hogy kommunikáljon a lejátszó kijelzőjével és az osztó kijelzőjével.

3. lépés: Programvázlat

Programvázlat
Programvázlat
Programvázlat
Programvázlat
Programvázlat
Programvázlat

A kód így fog működni a játékunkban, hogy a kockahengert megtartjuk mesterként, és hozzáadjuk az osztó kijelzőjét további szolgaként. A kockahenger irányítja a játékot, és az ebből eredő készpénzes változásokat elküldi az osztónak, és a játékos minden dobás után megjelenik. Egyelőre csak a passzvonal tétje lesz 10 dollár minden alkalommal, így még nem kell túl bonyolulttá válnunk, amikor a játékos megváltoztatja a tétet. Később, miután a szerelők dolgoznak, hozzáadunk egy másik kontrollert, amely egy további mester lesz, aki irányítja a fogadásokat és a kifizetéseket, és a kockadobónk mester marad, de csak a kockák dobására szolgál. Ez lehetővé teszi számunkra, hogy bekapcsolódjunk a TWI választottbírósági eljárásba, ütközésekbe és a soros kommunikáció egyéb fontos aspektusaiba, ha több ura és szolga van. Ezenkívül számos egyjegyű, nyomógombokkal ellátott kijelzőt is hozzáadunk hozzájuk, amelyek lehetővé teszik számunkra, hogy más típusú tekercsekre fogadjunk, de mindez a későbbi oktatóanyagokban fog megjelenni. Egyelőre csak a kockahengert akarjuk mesterként, a két kijelzőt pedig szolgaként. Amikor megnyomjuk a gombot, a kód eldönti, hogy kifizeti-e a természeteset, pénzt vesz el egy craps-ből, vagy elágazik-e egy "pont" dobássorozatig, amíg nem nyer vagy nem nyer.

Először írjuk le a rabszolga rutinokat. Ezek annyiban egyszerűek, hogy csak annyit fognak tenni, hogy figyelik az SDA sort a címükre, ha hívják őket, elolvassák az új számot, hogy megjelenítse és megjelenítse. Ez minden! Még csak vissza sem kell beszélniük a mesterrel, mivel a mester nyomon követi azok összegét, és elvégzi az összes kifizetési számítást, mielőtt frissítené őket. A későbbi oktatóprogramokban a rabszolgák vissza fognak írni a mesternek (például, ha egyetlen 7 számjegyű kijelzőnk van a fogadási összeg nyomógombjaival, akkor meg kell mondaniuk a mesternek, hogy mennyi tétet tesznek minden kijelzőn, és így címezze őket + olvasási hívás a mesterrel "master fogadó módban"), de erre időben eljutunk.

Egyelőre mindent a kocka dobás gomb megnyomása, majd egy számítás vagy további gombnyomás indít el, végül egy üzenet az összes kijelzőhöz az új összegekkel. Minden kifizetés után tesztre kerül sor annak megállapítására, hogy a játékos nyert -e vagy vesztett -e, más szóval, ha a kereskedő készpénze nulla lesz egy dobás után, vagy ha a játékos készpénze nulla lesz egy dobás után (sem a kereskedő, sem a játékos negatív lehet, mivel csak 10 dollárt fogadhatnak, vagy bármit, ami marad, ha kevesebb, mint 10 dollár).

Tehát ez így fog működni. Vegyük a kódolást.

4. lépés: Mester kommunikációs kód

Kommunikációs mesterkód
Kommunikációs mesterkód

Most megírhatjuk a kockahenger kommunikációs rutinját. Ez is majdnem azonos azzal, amit legutóbb írtunk, azzal a különbséggel, hogy két különböző rabszolgával fogunk kommunikálni, nem pedig csak egyel. Vegye figyelembe, hogy minden slave esetében más címet használunk. A kódot saját maga kell módosítania, majd egyszerűen tesztelnie kell minden címmel, és meg kell győződnie arról, hogy ugyanúgy működik, mint az utolsó oktatóanyag, kivéve minden különálló kijelzőt.

Csatolom minden egyes alkatrész kódját, amely egyszerűen megjeleníti a tekercs eredményét, hogy felhasználható legyen a kijelzők megfelelő működéséhez és a vezetékek ellenőrzéséhez.

A játék kódolása semmi újdonságot nem mutat be az összeszerelési nyelvi parancsok vagy az AVR mikrovezérlő összetevői tekintetében, így nem érzem úgy, hogy soronként kellene végigmennem rajta. Valószínűleg észrevette, hogy amikor valami újat mutatunk be, minden egyes sort apró részletekben végigmegyek, egészen addig, hogy elkeserítselek, ha nem altatlak el. Másrészt nem teszem ezt, ha nincs új bevezetés. Ma ez a helyzet. Úgy gondolom, hogy mostanra készen áll arra, hogy játsszon a kóddal, olvassa el a kódot, elemezze a kódot, értse meg a kódot, kritizálja a kódot, gúnyolja a kódot, és nevessen a fickón, aki írta a kódot. Úgyhogy hagyom, hogy előre menjen, és ezt tegye. Szinte biztos, hogy sok olyan helyet talál, ahol javíthat vagy legalábbis egyszerűsítheti az általam írtakat.

Szokásom szerint a következő lépésben csatoltam a két kijelző és a diceroller kódjának végleges verzióját, valamint egy videót, amelyen teszteltem a dolgot.

5. lépés: Végső kód és videó

Csatoltam a videót és a 3 programot. Észre fogja venni, hogy a tétet, valamint a kezdő kereskedőt és a játékos készpénzt a program tetején rögzítheti.equ nyilatkozatokkal.

A következő oktatóanyagban hozzáadjuk azt a lehetőséget, hogy különböző dolgokra fogadjunk, ami izgalmasabbá teszi a játékot. A modern Craps érdekessége, hogy sokféle módja van a fogadásoknak, és megpróbálja maximalizálni az esélyeit. Valójában a Craps a legnagyobb esélyű játék a kaszinóban! … HA tudod, hogyan kell játszani. Másrészt, ha nem tudod, hogyan kell játszani, akkor ez lesz az egyik legalacsonyabb esélyű játék.

Amint több dologra kell fogadnunk, akkor növelni fogom a játék teljes összegét.

Vidámnak kellene lennem!

Találkozunk legközelebb!

Ajánlott: