Мазмұны:

ATtiny85 және OLED дисплейіндегі Flappy Bird SSD1306: 6 қадам (суреттермен)
ATtiny85 және OLED дисплейіндегі Flappy Bird SSD1306: 6 қадам (суреттермен)

Бейне: ATtiny85 және OLED дисплейіндегі Flappy Bird SSD1306: 6 қадам (суреттермен)

Бейне: ATtiny85 және OLED дисплейіндегі Flappy Bird SSD1306: 6 қадам (суреттермен)
Бейне: Тұрсынбек Қабатовтың жаңажылдық концерті | Jibek Joly TV 2024, Қараша
Anonim
Image
Image
Аппараттық құрал
Аппараттық құрал

Сәлем бәріне, Бүгін мен сіздерге құстардың клонының негізгі клонын көрсетемін, және сіз оған ұқсас ойынды қалай жасауға болады. Мен сіздің кодыңызбен жұмыс жасаймын және оның әр қадамда қалай жұмыс істейтінін түсіндіремін. Бұл ойын I2C OLED дисплейі бар 1 МГц жиілігіндегі ATtiny85 жүйесінде жұмыс істеуге арналған. Алға!

1 -қадам: аппараттық құрал

Егер сізді ойын схемасын құруға қызықтырмаса, бірақ оның теориясын түсінсеңіз, бұл қадамды өткізіп жіберуге болады.

Менің ойынға екі түйме, ATtiny85, I2C OLED 128x64px экраны және кейбір қуат көзі қажет. Менің нұсқаулық визит карточкам/ойын консолі: ATtiny85 және OLED экраны сізге керегі бар тақтаны қалай салу керектігін көрсетеді! Егер сіз менің тақтайшамды жасауға қызығушылық танытпасаңыз, тақтаңызды шығарыңыз, мен сізге сипаттаманы айтамын. ATtiny85 кез келген нұсқасын қолдануға болады. Мен OLED дисплейлерін ұсынамын.

  1. ATtiny85 құрылғысындағы 2 және 3 түйреуіштерге екі түйменің бір жағын жалғаңыз. Бұл сымдарға жерге қосылған 10к Ом резисторды қосыңыз (төмен түсетін резистор).
  2. Бұл түймелердің екінші жағын кернеуге қосыңыз. Түйме басылмаса, түйреуіш күйі төмен болады. Ол басылғанда, түйреуіш күйі жоғары болады.
  3. 7 -түйреуішті дисплейдегі SCL түйреуішіне, ал 5 -ші шкафты дисплейдегі SDA түйреуішіне жалғаңыз. Дисплейдегі қуат түйреуіштерін (VCC және GND) сәйкесінше сыммен жалғаңыз.
  4. Соңында, ATtiny -дегі 4 -істікті жерге және 8 -ші шнурға кернеуге қосыңыз.

2 -қадам: Бағдарламалық қамтамасыз ету

Бағдарламалық қамтамасыз ету!
Бағдарламалық қамтамасыз ету!

Мұнда ойынды іске қосу үшін қажет барлық файлдары бар қалта тіркелген. FlappyBird.ino және WallFunctions.h файлдарының екеуі сіздің оқу рахатыңыз үшін өте жақсы түсіндірілген. Сіз FlappyBird.ino эскизін ATtiny85 -ке (1 МГц жиілігінде) жүктей аласыз және алыс ойнай аласыз! Егер бұл ойынның теориясын білу сізді қызықтырса немесе сіз өзіңіздің жеке ойын жасағыңыз келсе, оқыңыз!

Менің ойынымда әлі де бірнеше проблемалар бар. I2C - кез келген әдіспен деректерді берудің ең жақсы әдісі емес. Бұл хабарламаға сәйкес, дисплей тек шамамен 100 кГц жиіліктегі мәліметтерді қабылдай алады, сондықтан ATtiny сағатының жиілігін 8 МГц -ке дейін көтерсек те, I2C арнасы әлі де тарлық болады. Дисплей максималды 10 кадр / с шығара алады. Дисплейге неғұрлым бөлек суреттер салу қажет болса, бүкіл процесс баяу жүреді. Осылайша, менің ойыным өте оңай, өйткені сіз қабырғаларды экран бойымен өте жылдам қозғалта алмайсыз! Егер сіз тапсырманы орындауға дайынмын деп ойласаңыз, төменде сізге бірнеше қиындықтар бар:

  • Ойынды қиындату үшін, егер сіз менің бағдарламаның қалай жұмыс істейтінін түсінсеңіз, қабырға арасындағы аралықты 4 емес, 2 деп алуға болатынын біліңіз. Мүмкін болса, оны түсініктемелерде жазыңыз!
  • Менің ойымша, жетіспейтін тағы бір нәрсе - бұл ұпай жүйесі және ұпайларды көрсету мен сақтау әдісі. Қараңызшы, сіз оны жүзеге асыра аласыз ба!
  • Ақырында, қабырғаларды бір бағаннан жылжытудың орнына, әр қабырға біркелкі қозғалыс үшін бір пиксельге жылжытуға тырысыңыз.

3 -қадам: Flappy Bird ATtiny85: теория

Flappy Bird ATtiny85: Теория
Flappy Bird ATtiny85: Теория

Біз қолданатын дисплейде биіктігі 64 пиксель болса да, элементтерді 8 пиксельді блоктарға орналастыруға болады. Осылайша, тек 8 ықтимал у-координаттары бар. Жұмысты жеңілдету үшін бағдарламалық жасақтамада мен бүкіл экранды 8 блоктан 16 блоктан тұратын торға бөліп, әр блок 8х8 пиксельді құрдым. Әр блокты толтыру үшін ойындағы әрбір спрайт 8х8 пиксельді құрайды. Бұл бәрін басқаруды айтарлықтай жеңілдетеді. Егер сіз жоғарыдағы суретке қарасаңыз, экранды қалай бөлгенімді көре аласыз. Әр қабырға 6 блоктан тұрады, оның биіктігі 2 блок болатын, әр қабырғаның жалпы биіктігі 8 блокты құрайды.

Бағдарламада әр қабырға Wall деп аталатын құрылым түрінде ұсынылған. Әрбір Wall құрылымының екі қасиеті бар - holePosition және баған. 'holePosition'-бұл 0-6 саны, себебі биіктігі 2 блок болатын 8 блоктан тұратын қабырғада тек 7 мүмкін позиция бар. 'баған'-бұл 0-15 саны, себебі экранда 16 блок блоктары болуы мүмкін.

Ұсынылған: