Агуулгын хүснэгт:

ATtiny85 ба OLED дэлгэц дээрх Flappy Bird SSD1306: 6 алхам (зурагтай)
ATtiny85 ба OLED дэлгэц дээрх Flappy Bird SSD1306: 6 алхам (зурагтай)

Видео: ATtiny85 ба OLED дэлгэц дээрх Flappy Bird SSD1306: 6 алхам (зурагтай)

Видео: ATtiny85 ба OLED дэлгэц дээрх Flappy Bird SSD1306: 6 алхам (зурагтай)
Видео: Доработка Китайской Android магнитолы. 📲 Часть 2 - Работа с SPFlashTool, дамп, перепрошивка 2024, Арваннэгдүгээр
Anonim
Image
Image
Тоног төхөөрөмж
Тоног төхөөрөмж

Хөөе бүгдээрээ, Өнөөдөр би танд өөрийн үүсгэсэн шувууны анхан шатны клон болон түүнтэй ижил төстэй тоглоомыг хэрхэн яаж хийхийг харуулах болно. Би үндсэндээ тантай хамт кодоо ажиллуулж, алхам тутамд хэрхэн ажилладаг талаар тайлбарлах болно. Энэхүү тоглоомыг 1MHz давтамжтай, I2C OLED дэлгэцтэй 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х8 пикселээр 16 блокоор 8 блокоор хийсэн. Блок бүрийг бөглөхийн тулд тоглоомын спрайт бүр 8х8 пиксел байна. Энэ нь бүх зүйлийг удирдахад илүү хялбар болгодог. Хэрэв та дээрх зургийг харвал миний дэлгэцийг хэрхэн хуваасан болохыг харж болно. Хана бүр нь 6 блокоос бүрдэх бөгөөд 2 блок өндөртэй нүхтэй бөгөөд хана тус бүрийн нийт өндрийг 8 блок болгоно.

Хөтөлбөрт хана бүрийг Wall гэж нэрлэгддэг бүтэц хэлбэрээр дүрсэлсэн байдаг. Ханын бүтэц бүр нь holePosition ба багана гэсэн хоёр шинж чанартай байдаг. 2 блок өндөртэй нүхний хувьд 8 блок бүхий хананд зөвхөн 7 боломжит байрлал байдаг тул 'holePosition' нь 0-6 тоо юм. 'багана' нь 0-15 тоо бөгөөд дэлгэц дээр 16 багана байрлуулах боломжтой байдаг.

Зөвлөмж болгож буй: