Sisällysluettelo:

AVR -kokoonpanon opetusohjelma 11: 5 vaihetta
AVR -kokoonpanon opetusohjelma 11: 5 vaihetta

Video: AVR -kokoonpanon opetusohjelma 11: 5 vaihetta

Video: AVR -kokoonpanon opetusohjelma 11: 5 vaihetta
Video: Как использовать SSD1306 128x32 OLED-дисплей I2C с кодом Arduino 2024, Heinäkuu
Anonim
AVR -kokoonpanon opetusohjelma 11
AVR -kokoonpanon opetusohjelma 11
AVR -kokoonpanon opetusohjelma 11
AVR -kokoonpanon opetusohjelma 11
AVR -kokoonpanon opetusohjelma 11
AVR -kokoonpanon opetusohjelma 11

Tervetuloa opetusohjelmaan 11!

Tässä lyhyessä opetusohjelmassa rakennamme vihdoin viimeisen projektimme ensimmäisen osan.

Ensimmäinen asia, jonka sinun pitäisi tehdä, on siirtyä tämän opetusohjelman viimeiseen vaiheeseen ja katsoa video. Palaa sitten tänne. [tauko, kun teet sen …] Okei. Jatka nyt.

Jos et ole jo arvannut, rakennamme Craps -pelin! Tietysti se, että rakennan craps -peliä, ei tietenkään tarkoita, että sinun on pakko. Toivottavasti se on sanomattakin selvää. Joka tapauksessa on hyödyllistä käyttää mikro -ohjaimia segmentoitujen näyttöjen jne. Ohjaamiseen ja kommunikointiin toistensa kanssa - tätä teemme pääasiassa täällä. Voit kirjoittaa koodin käyttääksesi niitä haluamallasi tavalla. Tällä hetkellä aion koodata heidät pelaamaan crapsia, vaikka saatan myöhemmin päättää käyttää uudelleen segmentoituja näyttöjä tekemään jotain muuta.

Rakennan tätä siksi, että ajattelen, että saattaisin lopulta haluta täysikokoisen Vegas Craps -pöydän "mieheluolaani" taloni kellarissa. Kukaan ystävistäni ei kuitenkaan aavistakaan, miten käsitellä, tehdä pisteitä tai maksaa craps -vetoja ja -rullia. Joten ajattelin, että olisi hienoa saada pöytä tekemään kaikki jälleenmyyntityöt puolestamme! Kun asetamme panoksen pöydälle, voimme myös painaa pientä painiketta sen neliön vieressä, jossa sirumme näyttävät, kuinka paljon sinne on sijoitettu, jolloin mikro -ohjain voi laskea voiton kyseiselle neliölle nopanheiton jälkeen ja näyttää sen. En ole vieläkään aivan varma, miten järjestän tämän näkökohdan. Yksi ajatukseni oli, että jokaista henkilöä pyydetään asettamaan kaikki panoksensa vuorotellen, jotta ohjain kirjaa kunkin henkilön rahat ennen seuraavan pelaajan tallentamista ja niin edelleen. Sitten heiton jälkeen tietokone voi näyttää voitot jokaisella ruudulla ja voi myös pitää käynnissä olevan "kokonaisrahan" kullekin pelaajalle.

Yhdessä tämän opetusohjelman kansikuvasta jouduin käyttämään kuvaa, jossa vedin viisi ässää Vegasin pokeripöydässä tänä kesänä. Heheh. Hemmottele minua.

Tässä on linkki koko AVR-kokoonpanon opetusohjelmien kokoelmaan:

Vaihe 1: Craps

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

Tässä opetusohjelmassa rakennamme vain viimeisen Craps -pelin yksinkertaisimman osan. Tätä kutsutaan "The Pass Line" ja voit lyödä vetoa siitä. Voit oppia kaiken mitä sinun tarvitsee tietää pelin "pass line" -osiosta katsomalla tähän vaiheeseen liittämäni lyhyt 2 minuutin opetusvideo.

Rakennamme toisen 4-numeroisen näytön, joka seuraa jälleenmyyjän käteistä samalla tavalla kuin nykyinen 4-numeroinen näyttö seuraa pelaajan käteistä. Jakaja aloittaa 20 dollarilla ja pelaaja 20 dollarilla (pelin mahdollinen raha on yhteensä 9999 dollaria-korkein 4-numeroinen näyttömme, mutta tarvitsemme vain 20 dollaria tästä pelin ensimmäisestä osasta tai muuten olisi äärimmäisen tylsä ja vaikea voittaa tai hävitä kunnollisessa ajassa). Jos pelaaja ottaa kaikki jakajan rahat, pelaaja voittaa. Jos pelaaja menettää kaikki rahansa, jakaja voittaa.

Kuinka voitat tai menetät rahaa? Ne teistä, jotka ovat pelanneet Crapsia, nähneet ihmisiä "ampumassa noppaa" kadulla tai nähneet sen pelaavan Vegasin kasinoa vastaan, tietävät jo. Muille teille annan teille lyhyen kuvauksen pelin "pass line" -osiosta, jonka koodaamme tänään.

Crapsia on pelattu satoja vuosia ristiretkien ajalta. Sitä soittivat joukot toisen maailmansodan kaivoissa, sitä soitettiin kaduilla, sitä pelattiin kasinoissa ja uhkapelisaleissa. Se alkoi vain syöttölinjalla ja kaikki muut asiat lisättiin siihen myöhemmin. Seuraamme samaa kehitystä.

Pääsylinjan tapa on tämä. Panostat ja heität noppaa. Ensimmäistä rullaa kutsutaan "come-out-telaksi". Jos saat 2 (käärmeen silmät), 3 (ässäkaksikko) tai 12 (laatikkoautot) lähtöpelissä, menetät panoksesi ja sitä kutsutaan "crapsiksi". Jos heität 7 (luonnollinen) tai 11 (yo tai yo-leven), voitat. Jos heität jotain muuta numeroa, tästä numerosta tulee "pisteesi". Kun "piste" on muodostettu, jatkat nopan heittoa tavoitteena lyödä piste uudelleen ennen kuin heität 7. Jos saat pisteesi ennen kuin 7 heitetään, voitat jopa rahaa. Joten dollarin panos voittaa dollarin jälleenmyyjältä. Jos saat 7 ennen pisteesi heittämistä, tätä kutsutaan "seitsemäksi ulos" ja menetät panoksesi jakajalle.

Sen jälkeen aloitat uudelleen. Aseta veto syöttölinjalle ja heitä noppaa, 7 tai 11 voittoa, 2, 3 tai 12 tappiota.

Vedonlyöntejä on monia muitakin, "älä läpäise", "läpäise kertoimia", "älä läpäise kertoimia", "tule panostamaan", "älä tule panostamaan", "kenttä", "sarvi", " vaikeita tapoja "jne. jne. jne. Löydät lisätietoja täältä:

en.wikipedia.org/wiki/Craps

Kuten sanoin edellä, toistaiseksi koodaamme vain pelin pass line -osan, joka oli kaikki mitä heillä oli silloin, kun lapset heittivät noppaa seinää vasten toistensa lounasrahalle, joten tästä aloitamme.

Kuitenkin, ennen kuin aloitamme tavaroiden koodaamisen, rakennetaan jälleenmyyjän käteisnäyttö. Tätä varten haluan käyttää yhtä suurimmista 4-numeroisista näytöistä, jotka saat Sparkfunista tai muualta. Tästä lähtien en aio luetella näiden opetusohjelmien materiaaleja. Jos olet itse rakentanut kaiken kanssani, tiedät jo mistä voit hankkia materiaalit ja mitä ne ovat. Minun on turha luetella niitä tai kuinka paljon ne maksavat.

Otetaan siis yksi prototyyppikorteistamme, suuri 4-numeroinen näyttö, toinen ATmega328p, joka ohjaa tätä näyttöä, ja rakentaa se samalla tavalla kuin noppatelalla ja soittimen näytöllä. Liitämme myös otsikot teholle, ohjelmoinnille ja TWI -viestinnälle aivan kuten muutkin.

Vaihe 2: Jälleenmyyjän käteisnäyttö

Jälleenmyyjän käteisnäyttö
Jälleenmyyjän käteisnäyttö
Jälleenmyyjän käteisnäyttö
Jälleenmyyjän käteisnäyttö
Jälleenmyyjän käteisnäyttö
Jälleenmyyjän käteisnäyttö

Rakennamme jakajan näytön samalla tavalla kuin viimeisen opetusohjelman soittimen 4-numeroisen näytön kanssa. Ainoat erot ovat, että se on suurempi ja siinä on vähemmän nastoja, joten järjestämme sen ja johdotamme sen eri tavalla.

Olen liittänyt kuvan tämän näytön johdotuksista. Näet, että se on suurempi ja siinä on vähemmän nastoja kuin pelikoneemme näyttö. Kuva on kipinöintisivulta, jolta sain näytön, ja se näyttää, mitkä nastat ovat teholtaan kullekin numerolle ja mitkä nastat ohjaavat jokaista numeron osaa.

Kuten tavallista, aloita liittämällä näyttö prototyyppiseen leipälevyyn ja testaa jokainen segmentti varmistaaksesi, että ymmärrät, miten se on kytketty. Sitten sinun pitäisi kytkeä se AVR -mikrokontrollerin nastoihin leipälevylläsi ja käyttää sitä sieltä, kunnes kaikki koodimme toimivat tässä opetusohjelmassa. Lopuksi sinun pitäisi rakentaa ulkoinen levy ja juottaa se päälle. Sitten kun testaat lopputuotetta, tiedät, että kaikki ongelmat johtuvat juotos- ja leikkaustyöstäsi, eivät koodista. Älä myöskään unohda puusepän tunnettua aksioomaa "mittaa kahdesti ja leikkaa kerran" tai piirilevyjen valmistuksessa: "leikkaa kahdesti, juota kerran". Kuten kuvasta näkyy, hajoin lopulta ja ostin täydellisen Dremel -lisälaitteen tällaiseen työhön. "Diamond Point Set". Se maksoi 5 taalaa, mutta se on paljon pienempi kuin vihan hallintaterapian kustannukset, jotka liittyvät leikkaustyöni tehostamiseen liian monta kertaa peräkkäin.

Käytän tässä näytössä 330 ohmin vastuksia. COM -nastat kulkevat vastuksen kautta GND: hen ja teho menee mihin segmenttiin haluat näyttää. Aion käyttää PC0: ta PC3: n kautta COM -nastoille ja PB0, PB1, PB2, PB3, PB4, PD5, PD6 ja PD7 segmenteille.

Tässä on avain maksimoida mahdollisuutesi saada se oikein:

  1. kartoita piiri
  2. katkaise piiri
  3. tarkista johdot
  4. kiinnitä vastukset, korkit ja kideoskillaattori
  5. tarkista kytkennät ja johdotus uudelleen
  6. kiinnitä ulkoiset johdot
  7. liitä mikrokontrolleri
  8. tarkista johdotus uudelleen
  9. liitä 4-numeroinen näyttö
  10. tarkista jokainen numero leipälevyn johtoparilla
  11. aseta se sivuun ja kirjoita koodi tietäen, että sinun on todennäköisesti muokattava asioita myöhemmin ja toivoen, ettet ole peittänyt katkaistavaa yhteyttä.

Olen näyttänyt sarjan kuvia johdotustyöstäni. Huomaa, että voit vapaasti johdottaa omasi haluamallasi tavalla. On hyvin todennäköistä, että löydät paremman kartan kuin minä ja sinun pitäisi käyttää sitä. Mikään näistä opetusohjelmista ei riipu siitä, miten komponentit on kytketty, kunhan niillä on oikeat lähtöportit. Mikä muistuttaa minua. Huomaatko, että nyt SDA: ssa on kaksi otsikkoa ja SCL: ssä kaksi? Miksi luulet meidän tehneen niin?

Nyt, kuten opetusohjelman lopussa olevasta koodista näet, leikkasin ja liitin koodin viimeisen opetusohjelman soittonäytöstä uuteen tiedostoon jakajan näyttöön. Sitten kävin läpi ja muutin "segmentit" -hakutaulukon vastaamaan uutta nastakarttaa ja huomasin, että tässä näytössä "com" -nastat on maadoitettu ja segmenttien nastat ovat 5 V: n sijaan päinvastoin kuin toisessa näytössä. Muutin myös porttien alustuksen vastaamaan uutta johdotusta, muutin jälleenmyyjän kassanäytön osoitteeksi 0b1000000 niin, että noppapeli voi puhua hänen kanssaan, muutin "syklin" aliohjelman niin, että se sammuttaa PC0 - PC3 "com" nastat, kun se haluaa syöttää virtaa tietylle segmentille, ja muutin näytössä näkyvää "numeroa", koska uuden johdotuksen numerot ovat päinvastaisessa järjestyksessä (jos jätit sen sellaisenaan ja yritit näyttää 1234 sen olisi näytetty sen sijaan numerolla 4321).

Tässä uusi rekisterikartta:

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

jossa 1 on PÄÄLLÄ ja 0 POIS PÄÄLTÄ.

Testaa nyt näyttö asettamalla ensin näytön alustusarvo eri numeroiksi niin, että kun se kytkeytyy päälle, se näyttää ne. Tämä kertoo, toimiiko kaikki oikein.

Muokkaa sitten diceroller -koodia niin, että se käyttää orjan uutta osoitetta, kytke ne yhteen ja suorita se. Sen pitäisi toimia täsmälleen samalla tavalla kuin viime opetusohjelmassa, paitsi että noppapullot näkyvät nyt uudessa näytössä.

Loistava! Nyt olemme valmiit kirjoittamaan uuden noppapullon koodin niin, että se kommunikoi sekä pelaajan näytön että jakajan näytön kanssa.

Vaihe 3: Ohjelman jäsennys

Ohjelman jäsennys
Ohjelman jäsennys
Ohjelman jäsennys
Ohjelman jäsennys
Ohjelman jäsennys
Ohjelman jäsennys

Tapa, jolla koodi toimii pelissämme, on, että pidämme noppapullin isäntänä ja lisäämme jakajan näytön ylimääräiseksi orjaksi. Noppapeli ohjaa peliä, ja se lähettää tuloksena olevat muutokset käteisellä jakajalle ja pelaaja näyttää jokaisen heiton jälkeen. Tällä hetkellä meillä on vain pass line -panos 10 dollaria joka kerta, joten meidän ei tarvitse olla liian monimutkaisia, kun pelaaja muuttaa panostaan. Myöhemmin, kun mekaniikka on toiminnassa, lisäämme toisen ohjaimen, joka on ylimääräinen päällikkö, joka ohjaa vedonlyöntiä ja voittoja, ja noppapullomme pysyy päällikkönä, mutta sitä käytetään vain nopan heittämiseen. Näin voimme päästä TWI -välimiesmenettelyyn, törmäyksiin ja muihin sarjaviestinnän tärkeisiin näkökohtiin, kun sinulla on useita isäntiä ja orjia. Lisäämme myös useita yksittäisiä 7-numeroisia näyttöjä, joiden alla on painikkeita, joiden avulla voimme lyödä vetoa muuntyyppisistä rullista, mutta kaikki tämä tulee tulevissa opetusohjelmissa. Toistaiseksi haluamme vain noppapullin isäntänä ja kaksi näyttöä orjina. Kun painamme painiketta, koodi päättää, maksetaanko luonnollisesti, otetaanko rahaa crapsista vai haarataanko "piste" -rullisarjaan, kunnes voitto tai seitsemän voitto.

Kirjoitetaan ensin orjarutiineja. Nämä ovat yksinkertaisia siinä mielessä, että he vain katsovat osoitteensa SDA -riviltä, jos heille soitetaan, he lukevat uuden numeron näyttääkseen ja näyttääkseen sen. Siinä kaikki! Heidän ei tarvitse edes puhua takaisin päällikölle, koska päällikkö seuraa niiden kokonaissummia ja tekee kaikki voittolaskelmat ennen niiden päivittämistä. Tulevissa opetusohjelmissa orjat kirjoittavat takaisin isännälle (esimerkiksi kun meillä on yksi 7-numeroinen näyttö, jossa on painikkeita vedonlyöntisummalle, heidän on kerrottava isännälle, kuinka paljon panostetaan jokaisesta näytöstä, ja niin osoita heille osoite + lue puhelu isännän kanssa "päävastaanottotilassa"), mutta pääsemme siihen ajoissa.

Toistaiseksi kaikki on aloitettu noppapallon painikkeen painalluksella, jota seuraa laskutoimitus tai lisäpainikkeiden painallus ja lopuksi viesti jokaiselle näytölle uusilla kokonaissummillaan. Jokaisen voiton jälkeen suoritetaan testi, jolla määritetään, onko pelaaja voittanut vai hävinnyt, toisin sanoen, jos jakajan käteisestä tulee nolla heiton jälkeen tai jos pelaajan käteisestä tulee nolla heiton jälkeen (ei jakaja tai pelaaja voi mennä negatiiviseksi, koska he saavat panostaa vain 10 dollaria tai muuta mitä jäljellä on, jos se on alle 10 dollaria).

Joten näin se tulee toimimaan. Otetaan koodaus.

Vaihe 4: Pääviestintäkoodi

Pääviestintäkoodi
Pääviestintäkoodi

Voimme nyt kirjoittaa noppapullin viestintärutiinin. Se on myös lähes identtinen viimeksi kirjoittamamme kanssa, paitsi että kommunikoimme kahden eri orjan kanssa yhden sijasta. Huomaa, että kullekin orjalle käytämme eri osoitetta. Sinun tulee muokata koodia itse ja testata se sitten jokaisella osoitteella ja varmistaa, että se toimii aivan kuten viimeinen opetusohjelma paitsi jokaisen erillisen näytön kanssa.

Liitän jokaisen komponentin koodin, joka näyttää vain rullan tuloksen, jotta sitä voidaan käyttää näyttöjen toimimiseen ja johdotusten tarkistamiseen.

Pelin koodaaminen ei tuo mitään uutta kokoonpanokielikomentojen tai AVR-mikro-ohjainkomponenttien suhteen, joten minusta tuntuu, ettei minun tarvitse käydä sitä läpi rivi kerrallaan. Olet varmaan huomannut, että kun esittelemme jotain uutta, käyn jokaisen rivin läpi yksityiskohtaisesti niin, että ärsytän sinua, jos en laita sinua nukkumaan. Toisaalta en tee sitä, jos mitään uutta ei ole esitelty. Näin on nykyään. Joten luulen, että olet jo valmis pelaamaan koodilla, lukemaan koodin, analysoimaan koodin, ymmärtämään koodin, arvostamaan koodia, pilkkaamaan koodia ja nauramaan koodin kirjoittaneelle kaverille. Joten annan sinun mennä eteenpäin ja tehdä sen. On lähes varmaa, että löydät monia paikkoja, joissa voit parantaa tai ainakin yksinkertaistaa kirjoitustani.

Olen tavalliseen tapaan liittänyt kahden näytön ja dicerollerin koodin lopullisen version seuraavassa vaiheessa yhdessä videon kanssa, jossa testaan asiaa.

Vaihe 5: Lopullinen koodi ja video

Olen liittänyt videon ja kolme ohjelmaa. Huomaat, että voit korjata panoksen sekä aloittavan jakajan ja pelaajan käteiset ohjelman yläosassa.equ -lausunnoilla.

Seuraavassa opetusohjelmassa lisäämme mahdollisuuden panostaa eri asioihin, mikä tekee pelistä jännittävämmän. Mielenkiintoinen asia nykyaikaisissa Crapsissa on se, että sinulla on lukuisia erilaisia tapoja panostaa ja yrittää maksimoida kertoimet. Itse asiassa Craps on kasinon korkeimmat kertoimet! … JOS osaat pelata sitä. Toisaalta, jos et tiedä kuinka pelata, siitä tulee yksi pienimmistä kertoimista.

Kun meillä on enemmän asioita, joihin panostaa rahaa, korotan pelin kokonaissummaa.

Minun pitäisi olla hauska!

Nähdään ensi kerralla!

Suositeltava: