Satura rādītājs:
Video: Flappy Bird uz ATtiny85 un OLED displeja SSD 1306: 6 soļi (ar attēliem)
2024 Autors: John Day | [email protected]. Pēdējoreiz modificēts: 2024-01-30 10:56
Sveiki visiem, Šodien es jums parādīšu pamata flappy putnu klonu, ko es izveidoju, un to, kā jūs varat izveidot līdzīgu spēli. Es būtībā kopā ar jums izskatīšu savu kodu un paskaidrošu, kā tas darbojas. Šī spēle ir veidota, lai darbotos ar ATtiny85, kura frekvence ir 1 MHz, ar I2C OLED displeju. Uz priekšu!
1. darbība: aparatūra
Ja jūs neesat ieinteresēts faktiski izveidot spēles shēmu, bet saprotat aiz tās esošo teoriju, varat izlaist šo darbību.
Manai spēlei ir vajadzīgas divas pogas, ATtiny85, I2C OLED 128x64px ekrāns un kāds enerģijas avots. Mana pamācāmā vizītkarte/spēļu konsole: ATtiny85 un OLED ekrāns parāda, kā izveidot tāfeli, kurā ir viss nepieciešamais! Ja jūs neinteresē mana dēļa izgatavošana, izņemiet savu maizes dēli, un es jums pastāstīšu specifikācijas. Jūs varat izmantot jebkuru ATtiny85 variantu. Es iesaku šādus OLED displejus.
- Pievienojiet divu spiedpogu vienu pusi pie ATtiny85 tapām 2 un 3. Šiem vadiem pievienojiet arī 10k omu rezistoru, kas savienots ar zemi (nolaižamais rezistors).
- Pievienojiet šo spiedpogu otru pusi spriegumam. Kad poga nav nospiesta, tapas stāvoklis būs zems. Nospiežot, tapas stāvoklis būs augsts.
- Pievienojiet 7. tapu displeja SCL tapai un 5. tapu displeja SDA tapai. Atbilstoši pieslēdziet strāvas tapas (VCC un GND) displejā.
- Visbeidzot, pieslēdziet ATtiny 4. tapu pie zemes un 8. tapu pie sprieguma.
2. solis: programmatūra
Šeit ir pievienota mape ar visiem failiem, kas nepieciešami spēles palaišanai. Divi faili, FlappyBird.ino un WallFunctions.h, ir ļoti labi komentēti jūsu lasīšanas priekam. Jūs varat augšupielādēt FlappyBird.ino skici savā ATtiny85 (1MHz) un spēlēt prom! Ja šīs spēles teorijas apguve jūs interesē vai vēlaties izveidot savu spēli, lasiet tālāk!
Manā spēlē joprojām ir dažas problēmas. I2C nav labākais veids, kā jebkādā veidā pārsūtīt datus. Saskaņā ar šo ziņu displejs var pieņemt datus tikai aptuveni 100KHz, tāpēc pat tad, ja ATtiny pulksteņa ātrumu sasniegsim līdz 8MHz, I2C kanāls joprojām būs sašaurinājums. Displejs var maksimāli izvadīt aptuveni 10 kadrus sekundē. Jo vairāk atsevišķu attēlu displejā jāzīmē, jo lēnāks ir viss process. Tādējādi mana spēle ir diezgan vienkārša, jo jūs nevarat panākt, lai sienas ļoti ātri pārvietotos pa ekrānu! Tālāk ir sniegti daži izaicinājumi, ja domājat, ka esat izpildījis uzdevumu:
- Lai padarītu spēli grūtāku, noskaidrojiet, vai atstarpes starp sienām var būt 2, nevis 4. Tam nevajadzētu būt pārāk grūti, kad saprotat, kā darbojas mana programma:). Lūdzu, ievietojiet komentāros, ja varat to izmantot!
- Vēl viena lieta, kas manā spēlē trūkst, ir punktu sistēma un veids, kā parādīt rezultātu un to saglabāt. Skatiet, vai varat to īstenot!
- Visbeidzot, tā vietā, lai sienas pārvietotu vienu kolonnu vienlaikus, mēģiniet panākt, lai katra siena vienlaikus pārvietotos pa vienam pikselim, lai nodrošinātu vienmērīgāku kustību.
3. solis: Flappy Bird ATtiny85: teorija
Lai gan mūsu izmantotajam displejam ir 64 pikseļi, ko izmantot spēlei, elementus ir iespējams izvietot tikai 8 pikseļu blokos. Tādējādi ir tikai 8 iespējamās y koordinātas. Lai atvieglotu lietas, programmatūrā es šādi sadalīju visu ekrānu, izveidojot režģi no 16 blokiem līdz 8 blokiem, kur katrs bloks ir 8x8 pikseļi. Lai aizpildītu katru bloku, katrs sprite spēlē ir 8x8 pikseļi. Tādējādi viss ir daudz vieglāk pārvaldāms. Ja paskatās augšējā attēlā, varat redzēt, kā es sadalīju ekrānu. Katra siena sastāv no 6 blokiem ar caurumu 2 bloku augstumā, padarot katras sienas kopējo augstumu 8 blokus.
Programmā katra siena ir attēlota kā struktūra, ko sauc par sienu. Katrai sienas struktūrai ir divas īpašības - holePosition un aile. 'holePosition' ir skaitlis 0-6, jo 8 bloku sienā ir tikai 7 iespējamās pozīcijas 2 blokus augstam caurumam. “kolonna” ir skaitlis 0–15, jo ekrānā ir iespējamas 16 bloku kolonnas.
Ieteicams:
Arduino displeja temperatūra TM1637 LED displejā: 7 soļi
Arduino displeja temperatūra TM1637 LED displejā: šajā apmācībā mēs iemācīsimies parādīt temperatūru, izmantojot LED displeju TM1637 un DHT11 sensoru un Visuino. Noskatieties video
Arduino displeja laiks TM1637 LED displejā, izmantojot RTC DS1307: 8 soļi
Arduino displeja laiks TM1637 LED displejā, izmantojot RTC DS1307: Šajā apmācībā mēs iemācīsimies parādīt laiku, izmantojot RTC DS1307 moduli un LED displeju TM1637 un Visuino. Noskatieties video
GPS uzraudzība ar OLED displeja projektu: 5 soļi (ar attēliem)
GPS uzraudzība ar OLED displeja projektu: Sveiki visiem, šajā ātrajā rakstā es dalīšos ar jums savā projektā: GPS modulis ATGM332D ar SAMD21J18 mikrokontrolleri un SSD1306 OLED 128*64 displeju, es tam izveidoju īpašu PCB Eagle Autodesk un to ieprogrammēju izmantojot Atmel studio 7.0 un ASF
Grafika SSD diskā 1306 I2C OLED 128x64 displejā ar CircuitPython, izmantojot Itsybitsy M4 Express: 13 soļi (ar attēliem)
Grafika SSD1306 I2C OLED 128x64 displejā ar CircuitPython, izmantojot Itsybitsy M4 Express: SSD1306 OLED displejs ir mazs (0,96 "), lēts, plaši pieejams I2C, vienkrāsains grafiskais displejs ar 128x64 pikseļiem, kas ir viegli sasaistāms (tikai 4 vadi) uz mikroprocesoru izstrādes plates, piemēram, Raspberry Pi, Arduino vai
Displeja temperatūra P10 LED displeja modulī, izmantojot Arduino: 3 soļi (ar attēliem)
Displeja temperatūra P10 LED displeja modulī, izmantojot Arduino: Iepriekšējā apmācībā ir teikts, kā parādīt tekstu Dot Matrix LED displeja P10 modulī, izmantojot Arduino un DMD savienotāju, ko varat pārbaudīt šeit. Šajā apmācībā mēs sniegsim vienkāršu projekta apmācību, izmantojot displeja līdzekli P10 moduli