Mundarija:
Video: ATtiny85 va SSD1306 OLED displeyidagi Flappy Bird: 6 qadam (rasmlar bilan)
2024 Muallif: John Day | [email protected]. Oxirgi o'zgartirilgan: 2024-01-30 13:26
Salom hammaga
Bugun men sizga o'zim yaratgan qushlarning asosiy klonini va shunga o'xshash o'yinni qanday qilish kerakligini ko'rsataman. Men siz bilan kodimni ko'rib chiqaman va u har qadamda qanday ishlashini tushuntiraman. Bu o'yin I2C OLED displeyli, 1 MGts chastotali ATtiny85 da ishlash uchun qurilgan. Oldinga!
1 -qadam: Uskuna
Agar siz o'yin sxemasini tuzishni xohlamasangiz, lekin uning nazariyasini tushunsangiz, bu bosqichni o'tkazib yuborishingiz mumkin.
Mening o'yinim uchun ikkita tugma, ATtiny85, I2C OLED 128x64 pikselli ekran va quvvat manbai kerak. Mening yo'riqnomam/O'yin konsoli: ATtiny85 va OLED ekrani sizga kerakli hamma narsani o'z ichiga olgan taxtani qanday qurishni ko'rsatib beradi! Agar siz mening taxtamni yasashni xohlamasangiz, non panelidan chiqing, men sizga texnik xususiyatlarni aytib beraman. Siz ATtiny85 -ning istalgan variantidan foydalanishingiz mumkin. Men shunga o'xshash OLED -displeylarni tavsiya qilaman.
- ATtiny85 -dagi 2 va 3 -pinlarga ikkita tugmachaning bir tomonini ulang. Ushbu simlarga, shuningdek, erga ulangan 10k ohmli rezistor qo'shing (pastga tushadigan qarshilik).
- Ushbu tugmachalarning boshqa tomonini kuchlanish bilan bog'lang. Tugma bosilmaganda, pin holati past bo'ladi. U bosilganda, pin holati baland bo'ladi.
- 7 -pinni displeydagi SCL piniga va 5 -pinni displeydagi SDA piniga ulang. Quvvat pinlarini (VCC va GND) mos ravishda displeyga ulang.
- Nihoyat, ATtiny -dagi 4 -pinni erga va 8 -pinni kuchlanish bilan ulang.
2 -qadam: Dasturiy ta'minot
Bu erda o'yinni ishga tushirish uchun kerak bo'lgan barcha fayllar joylashgan papka biriktirilgan. FlappyBird.ino va WallFunctions.h fayllaridan ikkitasi o'qishdan zavqlanish uchun juda yaxshi izohlangan. Siz FlappyBird.ino eskizini ATtiny85 -ga (1 MGts chastotasida) yuklashingiz va o'ynab ketishingiz mumkin! Agar bu o'yinning nazariyasini o'rganish sizni qiziqtirsa yoki siz o'z o'yiningizni yaratmoqchi bo'lsangiz, o'qing!
O'yinimda hali ham bir nechta muammolar bor. I2C har qanday usulda ma'lumotlarni uzatishning eng yaxshi usuli emas. Bu xabarga ko'ra, displey faqat 100 kGts tezlikdagi ma'lumotlarni qabul qila oladi, shuning uchun ATtiny soat tezligini 8 MGts ga ko'targanimizda ham, I2C kanali hamon to'siq bo'ladi. Displey maksimal 10 kadr tezlikda chiqishi mumkin. Ekran qancha alohida rasm chizishi kerak bo'lsa, butun jarayon shunchalik sekinlashadi. Shunday qilib, mening o'yinim juda oson, chunki siz devorlarni ekran bo'ylab tez harakat qila olmaysiz! Agar siz o'z vazifangizni bajardingiz deb hisoblasangiz, quyida siz uchun ba'zi qiyinchiliklar mavjud:
- O'yinni qiyinlashtirish uchun, devorlar orasidagi masofani 4 o'rniga 2 ga bo'lishini bilib oling, mening dasturim qanday ishlashini tushunganingizdan keyin juda qiyin bo'lmasligi kerak:). Ishlay olsangiz, iltimos, izohlarda yozing!
- Mening o'yinimning yana bir kamchiligi - bu ballar tizimi va hisobni ko'rsatish va uni saqlash usuli. Qarang, siz buni amalga oshira olasizmi!
- Va nihoyat, devorlar birma -bir ustunni siljitmasdan, silliqroq harakat qilish uchun har bir devorni bir vaqtning o'zida bitta pikselga o'tkazishga harakat qiling.
3 -qadam: Flappy Bird ATtiny85: nazariya
Garchi biz foydalanadigan displeyda o'yin uchun foydalanish mumkin bo'lgan 64 pikselli balandlik bo'lsa -da, elementlarni faqat 8 pikselli bloklarga joylashtirish mumkin. Shunday qilib, faqat 8 ta y koordinatalari mavjud. Ishni osonlashtirish uchun, dasturiy ta'minotda men butun ekranni shunday ajratdim, har bir blok 8x8 pikselli 16 blokli 8 blokli panjara yasadim. Har bir blokni to'ldirish uchun o'yindagi har bir sprite 8x8 piksel. Bu hamma narsani boshqarishni ancha osonlashtiradi. Agar siz yuqoridagi rasmga qarasangiz, ekranni qanday ajratganimni ko'rasiz. Har bir devor 6 blokdan iborat bo'lib, teshiklari 2 blok balandlikda, har bir devorning umumiy balandligi 8 blokdan iborat.
Dasturda har bir devor devor deb nomlangan struktura sifatida tasvirlangan. Har bir devor tuzilishi ikkita xususiyatga ega - holePosition va ustun. "holePosition"-bu 0-6 raqami, chunki 2 blok balandlikdagi teshik uchun 8 blokli devorda atigi 7 ta pozitsiya mavjud. "ustun"-bu 0-15 raqami, chunki ekranda 16 ta blokli ustun bo'lishi mumkin.
Tavsiya:
Muskulli Flappy Bird: 9 qadam (rasmlar bilan)
Muskullar bilan ishlaydigan Flappy Bird: Siz eslaysizmi, qachonki Flappy Bird dunyoni bo'ron bilan egallab oldi va oxir -oqibat yaratuvchi uni mashhur do'konlardan olib tashlab, uni mashhur do'konlardan olib tashladi. Bu Flappy Bird, siz hech qachon ko'rmagansiz; javondan bir nechta kompozitsiyani birlashtirib
Visuino yordamida SSD1331 OLED displeyidagi (SPI) bitmap animatsiyasi: 8 qadam
Visuino yordamida SSD1331 OLED -displeyidagi (SPI) bitmap animatsiyasi: Ushbu qo'llanmada biz Visuino yordamida SSD1331 OLED -displeyda (SPI) oddiy animatsiya ko'rinishida bitmap tasvirini ko'rsatamiz va uning atrofida harakat qilamiz. Videoni tomosha qiling
ATtiny85 taqiladigan tebranish faolligini kuzatish va dasturlash ATtiny85 Arduino Uno bilan: 4 qadam (rasmlar bilan)
ATtiny85 taqiladigan tebranish faolligini kuzatish va dasturlash ATtiny85 Arduino Uno yordamida: taqiladigan harakatni kuzatish soatini qanday qilish mumkin? Bu turg'unlikni aniqlaganda tebranish uchun mo'ljallangan, taqiladigan gadjet. Siz ko'p vaqtingizni men kabi kompyuterda o'tkazasizmi? Siz buni sezmay soatlab o'tirasizmi? Keyin bu qurilma f
Itybitsy M4 Express yordamida SSD1306 I2C OLED 128x64 displeyidagi CircuitPython grafikasi: 13 qadam (rasmlar bilan)
Itybitsy M4 Express yordamida SSD1306 I2C OLED 128x64 displeyidagi CircuitPython grafikasi: SSD1306 OLED displeyi kichik (0,96 "), arzon, keng tarqalgan bo'lib sotiladigan, I2C, 128x64 pikselli monoxromli grafik displey bo'lib, u osonlikcha ulanadi (atigi 4 ta) simlar) Raspberry Pi, Arduino yoki mikroprotsessorlarni ishlab chiqish platalariga
Arduino yordamida P10 LED displeyidagi matnni ko'rsatish: 5 qadam (rasmlar bilan)
Matnni P10 LED displeyida Arduino yordamida ko'rsatish: Dotmatrix displeyi yoki tez -tez "ishlaydigan matn" deb nomlanadi, ko'pincha do'konlarda o'z mahsulotlarini reklama qilish vositasi sifatida topiladi, bu uning amaliy va moslashuvchanligi, bu esa tadbirkorlarni reklama tavsiyasi sifatida ishlatishga undaydi. Endi nuqta foydalanish