Мазмуну:
Video: ATtiny85 жана OLED дисплейиндеги Flappy Bird SSD1306: 6 кадам (сүрөттөр менен)
2024 Автор: John Day | [email protected]. Акыркы өзгөртүү: 2024-01-30 10:41
Эй баарына, Бүгүн мен силерге канаттуулардын клонунун негизги клонун көрсөтөм жана ага окшош оюнду кантип жасай аласыңар. Мен негизи сиз менен кодумду иштетип, анын ар бир кадамында кантип иштээрин түшүндүрөм. Бул оюн I2C OLED дисплейи менен 1МГц жыштыктагы ATtiny85те иштөө үчүн курулган. Алга!
1 -кадам: Аппараттык
Эгер сиз чындыгында оюндун схемасын түзүүгө кызыкпасаңыз, бирок анын теориясын түшүнсөңүз, анда бул кадамды өткөрүп жиберсеңиз болот.
Менин оюнум үчүн эки баскыч, ATtiny85, I2C OLED 128x64px экраны жана кандайдыр бир күч булагы керек. Менин инструктивдүү визиттик картам/оюн консолум: ATtiny85 жана OLED экраны сизге керектүү нерселердин баары бар такта курууну көрсөтөт! Эгерде сиз менин тактайымды жасоого кызыкдар эмес болсоңуз, анда нан табыңыздан чыгыңыз, мен сизге техникалык шарттарды айтып берем. Сиз ATtiny85тин каалаган вариантын колдоно аласыз. Мен ушул сыяктуу OLED дисплейлерди сунуштайм.
- ATtiny85 түзмөгүңүздөгү 2 жана 3 -казыктарга эки баскычтын бир жагын зым менен байланыштырыңыз. Бул зымдарга, жерге туташкан 10к Ом каршылыгын кошуңуз (түшүүчү каршылык).
- Бул баскычтардын экинчи тарабын чыңалууга өткөрүңүз. Кнопка басылбаса, пин абалы төмөн болот. Ал басылганда, пин абалы бийик болот.
- 7 -пинди дисплейдеги SCL төөнөгүчкө жана 5 -пинди дисплейиңиздеги SDA пинине туташтырыңыз. Тиешелүү түрдө дисплейдеги электр казыктарын (VCC жана GND) өткөрүңүз.
- Акырында, ATtinyдеги 4 пинти жерге жана 8 чыңалууга туташтырыңыз.
2 -кадам: Программалык камсыздоо
Бул жерде оюнду иштетүү үчүн керектүү бардык файлдары бар папка тиркелет. Файлдардын экөө, FlappyBird.ino жана WallFunctions.h, окуу ырахатыңыз үчүн абдан жакшы жазылган. Сиз FlappyBird.ino эскизин ATtiny85ке (1МГцте) жүктөп, алысыраак ойной аласыз! Эгер бул оюндун теориясын үйрөнүү сизди кызыктырса же сиз өзүңүздүн оюңузду жасоону кааласаңыз, анда окуңуз!
Менин оюнумда дагы деле бир аз көйгөйлөр бар. I2C - бул маалыматтарды берүүнүн эң жакшы жолу эмес. Бул билдирүүгө ылайык, дисплей маалыматты болжол менен 100 кГцте кабыл алат, андыктан ATtiny сааттын ылдамдыгын 8 МГцке чейин көтөрсөк дагы, I2C каналы дагы эле тоскоолдук болуп калат. Дисплей максимум 10 кадрга чейин чыгара алат. Дисплей канчалык өзүнчө сүрөттөрдү тартууга муктаж болсо, бүт процесс ошончолук жай болот. Ошентип, менин оюнум абдан оңой, анткени сиз дубалдарды экранда өтө ылдам жылдыра албайсыз! Төмөндө сиз тапшырмага жетем деп ойлосоңуз, анда сиз үчүн кээ бир кыйынчылыктар бар:
- Оюнду татаалдаштыруу үчүн, дубалдын ортосундагы аралыкты 4кө эмес, 2ге чейин жеткире алаарыңызды көрүңүз. Менин программамдын кандай иштээрин түшүнгөндөн кийин, бул өтө оор болбошу керек:). Сураныч, эгер аны иштете алсаңыз, комментарийге жазыңыз!
- Менин оюнумдун жетишпеген дагы бир нерсеси - бул баллдык система жана упайды көрсөтүү жана аны сактоо ыкмасы. Бирин ишке ашыра аларыңызды көрүңүз!
- Акырында, дубалдар бир колонканы жылдыргандан көрө, жылмакай кыймыл үчүн ар бир дубалды бир пикселден жылдырууга аракет кылыңыз.
3 -кадам: Flappy Bird ATtiny85: Теория
Биз колдонуп жаткан дисплейде оюн үчүн 64 пиксель бийиктиги болсо да, элементтерди 8 пикселдик блокторго жайгаштыруу мүмкүн. Ошентип, 8 гана мүмкүн болгон y-координаттары бар. Ишти жеңилдетүү үчүн, программалык камсыздоодо мен бүт экранды ушундай жол менен бөлүштүрдүм, 16 блоктон 8 блокко торчо жасап, ар бир блок 8х8 пиксель. Ар бир блокту толтуруу үчүн, оюндагы ар бир спрайт 8х8 пикселди түзөт. Бул баарын башкарууну бир топ жеңилдетет. Жогорудагы сүрөттү карасаңыз, экранымды кантип бөлүштүргөнүмдү көрө аласыз. Ар бир дубал 6 блоктон турат, тешиги 2 блок, бийиктиги 8 блок.
Программада ар бир дубал Wall деп аталган структура катары көрсөтүлгөн. Ар бир дубалдын эки касиети бар - holePosition жана мамыча. 'holePosition'-бул 0-6 саны, анткени 2 блоктун бийиктиги үчүн 8 блоктун дубалында 7 гана мүмкүн болгон позициялар бар. 'мамыча'-бул 0-15 саны, анткени экранда мүмкүн болгон 16 мамыча блоктору бар.
Сунушталууда:
Visuino менен SSD1331 OLED дисплейиндеги (SPI) Bitmap Animation: 8 кадам
Visuino менен SSD1331 OLED Дисплейиндеги (SPI) Bitmap Animation: Бул үйрөткүчтө биз Visuino менен SSD1331 OLED Дисплейинде (SPI) анимациянын жөнөкөй түрүндө битмап сүрөтүн көрсөтөбүз жана айланабыз
Een Slim дисплейиндеги Verander Een Ongebruikte смартфону: 6 кадам (сүрөттөр менен)
Een Slim Displayдеги Verander Een Ongebruikte Smartphone: Бул окуу куралы голланд тилинде, англисче версиясын бул жерден караңыз. Жөнөкөй дисплейлер Google Spreadsheets менен таанышты, жана алар папиердин эшигин ачышты жана үйрөткүчтү колдонууга мүмкүнчүлүк берди
SSD1306 I2C OLED 128x64 дисплейиндеги графика Itybitsy M4 Express колдонуп CircuitPython менен: 13 кадам (сүрөттөр менен)
SSD1306 I2C OLED 128x64 дисплейиндеги CircuitPython менен Itybitsy M4 экспрессин колдонгон графика: SSD1306 OLED дисплейи кичинекей (0.96 "), арзан, кеңири жеткиликтүү, I2C, 128x64 пикселдүү монохромдуу графикалык дисплей, ал оңой интерфейстүү (болгону 4 зымдар) Raspberry Pi, Arduino же… сыяктуу микропроцессорлорду өнүктүрүү такталарына
WiFi жана IR Remote жана Android колдонмосун колдонуп NodeMCU жана IR алуучу менен 8 релелик көзөмөл: 5 кадам (сүрөттөр менен)
WiFi жана IR Remote жана Android тиркемесин колдонуп NodeMCU жана IR алуучу менен 8 реле көзөмөлү: wifi жана ир алыскы жана андроид колдонмосу аркылуу nodemcu жана IR кабыл алгычты колдонуп 8 реле өчүргүчтөрүн көзөмөлдөө БУЛ ЖЕРДЕ
Температура жана нымдуулукту көрсөтүү жана маалыматтарды чогултуу Arduino жана иштетүү менен: 13 кадам (сүрөттөр менен)
Температура жана нымдуулукту көрсөтүү жана маалыматтарды чогултуу Arduino жана иштетүү менен: Киришүү: Бул Ардуино тактасын, Sensor (DHT11), Windows компьютери жана Processing (бекер жүктөлүүчү) программасын колдонуп, Температураны, Нымдуулукту санариптик жана тилке графасынын формасы, убакытты жана күндү көрсөтүү жана эсептөө убактысын иштетүү