Mündəricat:
Video: ATtiny85 və OLED Display SSD1306 -da Flappy Bird: 6 Addım (Şəkillərlə birlikdə)
2024 Müəllif: John Day | [email protected]. Son dəyişdirildi: 2024-01-30 07:46
Hamıya Salam
Bu gün sizə yaratdığım əsas quş quşu klonunu və oxşar bir oyun hazırlamağa necə gedə biləcəyinizi göstərəcəyəm. Əsasən kodumu sizinlə birlikdə işləyəcəyəm və hər addımda necə işlədiyini izah edəcəyəm. Bu oyun, I2C OLED ekranı olan, 1MHz tezlikli ATtiny85 üzərində çalışmaq üçün qurulmuşdur. İrəli!
Addım 1: Hardware
Oyun üçün bir dövrə qurmaqla maraqlanmırsınızsa, amma bunun arxasındakı nəzəriyyəni anlayırsınızsa, bu addımı atlaya bilərsiniz.
Oyunum iki düymə, ATtiny85, I2C OLED 128x64px ekran və bəzi güc mənbəyi tələb edir. Təlimat Verilə bilən Vizit Kartım/Oyun Konsolu: ATtiny85 və OLED Ekranı sizə lazım olan hər şeyi olan bir lövhə qurmağınızı göstərir! Lövhəmin hazırlanması ilə maraqlanmırsınızsa, çörək taxtanızdan çıxın və sizə spesifikasiyaları söyləyim. ATtiny85 -in istənilən variantından istifadə edə bilərsiniz. Bunun kimi OLED ekranları tövsiyə edirəm.
- İki düymənin bir tərəfini ATtiny85 -də 2 və 3 -cü pinlərə bağlayın. Bu tellərə, yerə qoşulmuş 10k ohm rezistor da əlavə edin (aşağıya doğru müqavimət).
- Bu düymələrin digər tərəfini gərginliyə bağlayın. Düymə basılmadığında, pin vəziyyəti aşağı olacaq. Basıldığında, pin vəziyyəti yüksək olacaq.
- Pin 7 -ni ekranınızdakı SCL pininə və pin 5 -i ekranınızdakı SDA pininə bağlayın. Ekrandakı güc pinlərini (VCC və GND) buna uyğun olaraq bağlayın.
- Nəhayət, ATtiny üzərindəki pin 4 -ü yerə və pin 8 -ni gərginliyə bağlayın.
Addım 2: Proqram təminatı
Oyunu işə salmaq üçün lazım olan bütün faylları olan bir qovluq burada əlavə olunur. Fayllardan ikisi, FlappyBird.ino və WallFunctions.h, oxumaq zövqünüz üçün çox yaxşı şərh edilmişdir. FlappyBird.ino eskizini ATtiny85 -ə (1MHz -də) yükləyib uzaqda oynaya bilərsiniz! Bu oyunun arxasındakı nəzəriyyəni öyrənmək sizi maraqlandırırsa və ya öz oyununuzu etmək istəyirsinizsə, oxuyun!
Oyunumda hələ də bir neçə problem var. I2C heç bir şəkildə məlumat ötürməyin ən yaxşı yolu deyil. Bu yazıya görə, ekran yalnız təxminən 100 KHz -də məlumat qəbul edə bilər, buna görə ATtiny saat sürətini 8 MHz -ə qədər qaldırsaq belə, I2C kanalı yenə də darboğaz olacaq. Ekran maksimum 10 kadr / saniyə çıxara bilir. Ekranın nə qədər ayrı şəkillər çəkməsi lazımdırsa, bütün proses o qədər yavaş olur. Beləliklə, divarlarımın ekran boyunca çox sürətlə hərəkət etməsini ala bilmədiyiniz üçün oyunum olduqca asandır! İşin öhdəsindən gəldiyinizi düşünürsünüzsə, aşağıda sizin üçün bəzi çətinliklər var:
- Oyunu çətinləşdirmək üçün, divarlar arasındakı boşluğun 4 deyil, 2 olmasını əldə edə biləcəyinizə baxın. Proqramımın necə işlədiyini başa düşdükdən sonra çox çətin olmamalıdır:). Zəhmət olmasa işləyə bilsəniz şərhlərdə yazın!
- Oyunun çatışmadığı başqa bir şey, hesab sistemi və hesabı göstərmək və saxlamaq üçün bir yoldur. Birini həyata keçirə biləcəyinizə baxın!
- Son olaraq, divarların bir anda bir sütunu hərəkət etdirməsindən çox, daha hamar bir hərəkət üçün hər divarın bir anda bir piksel hərəkət etməsinə çalışın.
Addım 3: Flappy Bird ATtiny85: nəzəriyyə
Oyun üçün istifadə etdiyimiz ekranın 64 piksel yüksəklikdə olmasına baxmayaraq, elementləri yalnız 8 piksellik bloklara yerləşdirmək mümkündür. Beləliklə, yalnız 8 mümkün y koordinatı var. İşi asanlaşdırmaq üçün, proqramda, bütün blokları 8x8 piksel olan 16 blokdan 8 blokdan ibarət bir şəbəkə düzəldərək bütün ekranı bu şəkildə böldüm. Hər bloku doldurmaq üçün oyundakı hər sprite 8x8 pikseldir. Bu, hər şeyi idarə etməyi çox asanlaşdırır. Yuxarıdakı görüntüyə baxsanız, ekranı necə ayırdığımı görə bilərsiniz. Hər bir divar 6 blokdan ibarətdir, 2 blok hündürlüyündə, hər divarın ümumi hündürlüyü 8 blokdur.
Proqramda hər divar Divar adlanan bir quruluş olaraq təmsil olunur. Hər bir divar quruluşunun iki xüsusiyyəti var - holePosition və sütun. 'holePosition', 0-6 rəqəmidir, çünki 2 blok yüksəklikdə bir çuxur üçün 8 blokdan ibarət bir divarda yalnız 7 mümkün mövqe var. 'sütun' 0-15 rəqəmidir, çünki ekranda 16 blok sütunu ola bilər.
Tövsiyə:
Əzələ ilə işləyən Flappy Bird: 9 addım (şəkillərlə)
Muscle Powered Flappy Bird: Flappy Bird -in dünyanı fırtınaya sürüklədiyini və nəticədə yaradıcının arzuolunmaz reklamlardan qaçmaq üçün onu tətbiq mağazalarından sildiyini xatırlaya bilərsiniz. Bu Flappy Bird, əvvəllər heç görmədiyiniz kimi; rəfdəki bir neçə kompozisiyanı birləşdirərək
Bird Feeder Monitor V2.0: 12 Addım (Şəkillərlə birlikdə)
Bird Feeder Monitor V2.0: Bu, quş yemləyicimizi ziyarət edən quşların sayını və vaxtını izləmək, fotoşəkil çəkmək və qeyd etmək üçün bir layihədir. Bu layihə üçün çoxlu Raspberry Pi (RPi) istifadə edilmişdir. Onlardan biri Adafruit CAP1188 adlı tutumlu sensor sensor kimi aşkarlanmaq, qeyd olunmaq üçün istifadə edilmişdir
Cib Flappy Bird Oyun Maşını: 5 addım
Cib Flappy Bird Oyun Maşını: Bu flappy quş və bir çox digər oyunları oynaya bilən nodemcu esp8266 mikrokontroller əsaslı oyun konsoludur. Bu maşın https://github.com/SpacehuhnTech/esp8266_deauther ünvanındakı spacehuhns koduna əsaslanaraq deauter etmək üçün də istifadə edilə bilər
Raft Bird Repeller: 10 addım (şəkillərlə birlikdə)
Raft Bird Repeller: Bu layihədə sizə günəş enerjisi ilə işləyən bir Raft Bird Repeller quracağınızı göstərəcəyəm ki, bu da sizin salınıza çırpılan sinir bozucu quşlardan xilas olacaq
Itsybitsy M4 Express istifadə edərək CircuitPython ilə SSD1306 I2C OLED 128x64 Ekranındakı qrafik: 13 addım (şəkillərlə)
Itsybitsy M4 Express istifadə edərək CircuitPython ilə SSD1306 I2C OLED 128x64 Ekranındakı qrafik: SSD1306 OLED displey, kiçik (0.96 "), ucuz, geniş yayılmış, I2C, asanlıqla bağlanan, 128x64 piksel monoxrom qrafik ekrandır (yalnız 4 teller) Raspberry Pi, Arduino və ya kimi mikroprosessor inkişaf lövhələrinə