Мазмуну:

Arduino Space Rocks Оюну: 3 кадам
Arduino Space Rocks Оюну: 3 кадам

Video: Arduino Space Rocks Оюну: 3 кадам

Video: Arduino Space Rocks Оюну: 3 кадам
Video: ЭТО ЖЕ CRYSIS 1 2024, Ноябрь
Anonim
Arduino Space Rocks оюну
Arduino Space Rocks оюну

Алар компьютерде, телефондо, оюн консолунда же өзүнчө коробкада ойнотулабы, көптөгөн видео оюндар тоскоолдуктарды болтурбоо элементин камтыйт. Албетте, токендерди чогултуу же лабиринттен жол табуу үчүн берилүүчү упайлар болушу мүмкүн, бирок оюнда бир нерсе бар экенине ишениңиз, анын жалгыз максаты сизге мындай кылууга тоскоолдук кылуу. Биринчи видео оюн Понг болгон, бирок андан кийин эң популярдуу оюндар "астероиддер" же "Pac-Man" сыяктуу нерселер болгон. Акыркы вариация "Flappy Birds" жөнөкөй, бирок көзкаранды оюну болмок.

Жакында мен кимдир бирөө 1602 ЖКда ойнотулган "Flappy Bird" жөнөкөй эки деңгээлдүү версиясын жасаганын көрдүм. Мен неберелердин жактыруусуна ээ болот деп ойлогом, ошондуктан нөлдөн баштап өзүмдүн вариациямды жасоону чечтим. 1602 версиясынын эки деңгээли бар, андыктан оюндун татаалдыгын бир аз жогорулатуу үчүн 2004 -жылдагы ЖК (20х4) колдонууну чечтим. Мен дагы "астероиддерге" окшош кылууну чечтим, оюнчу "космос тектеринин" лабиринти аркылуу "кемени" жетектейт. Оюнду курууга кызыкдар болбосоңуз да, сиз өзүңүздүн долбоорлоруңуздун биринде колдоно турган программалык камсыздоонун кээ бир элементтери болушу мүмкүн.

1 -кадам: Аппараттык

Аппараттык
Аппараттык
Аппараттык
Аппараттык
Аппараттык
Аппараттык

Аппаратура дээрлик ар кандай Arduino версиясына негизделиши мүмкүн. Мен прототипти Nano аркылуу жасадым, андан кийин кодду ATMega328 чипине өрттөдүм. Бул нанодо колдонулган ошол эле чип, бирок аны өз алдынча колдонуу компакт түзүлүшкө жана аз энергия керектөөгө мүмкүндүк берет. Көрүнүп тургандай, мен схеманы ЖК модулунда piggybacks кичинекей нан тактасына курдум. Башка бир жагы, нано тышкы кристаллдын жардамы менен 16 МГцте иштейт, бирок мен ATMega328 чипи үчүн 8 МГц камтылган осцилляторду колдонууну чечтим. Бул бөлүктөрдү жана кубатты үнөмдөйт.

2004 -жылкы LCD интерфейстери Arduino үчүн 1602 ЖК сыяктуу эле. Кызыктуу айырмачылык дисплей жайгашкан жерлердин дарегинде. Албетте, айырма бар, анткени экөөнүн ордуна төрт сап бар, бирок 2004 -жылы үчүнчү сап - биринчи саптын, төртүнчү сап - экинчи саптын уландысы. Башкача айтканда, эгер сизде ЖКга бир катар символдорду жөнөткөн тест программасы болсо, 21 -белгиси үчүнчү саптын башында көрүнөт жана 41 -белги биринчи саптын башталышына чейин кайра оролот. Мен бул өзгөчөлүктү лабиринттин узундугун эффективдүү түрдө эки эсеге көбөйтүү үчүн программалык камсыздоодо колдоном.

Мен версиямды батарейка менен камсыз кылууну чечтим, ошондуктан жалпы 18650 Li-ion, 3.6 вольттуу батареяны колдондум. Бул USB толтурууга мүмкүндүк берүү үчүн кичинекей тактаны жана LCD жана ATMega чипи үчүн батареянын чыңалуусун 5 вольтко чейин жогорулатуу үчүн дагы бир кичинекей тактаны кошуумду талап кылды. Сүрөттөр мен колдонгон модулдарды көрсөтөт, бирок экөөнүн тең функцияларын тең аткаруучу модулдар бар.

2 -кадам: Программалык камсыздоо

Программалык камсыздоо Nano жана ATMega328 чиптери үчүн бирдей. Жалгыз айырмачылык программалоо ыкмасында. Мен өзүмдүн 1602 ЖК программалык камсыздоонун өзүмдүн бош сөөктөрүмдүн версиясын колдоном жана бул долбоордо ЖК программалык камсыздоо ошого негизделген. Мен 2004 -жылдагы дисплейдин кошумча линияларын чечүү үчүн мүмкүнчүлүктөрдү кошушум керек болчу, ошондой эле дисплейди жылдыруунун жол -жоболорун коштум. Дисплейдин жылышы "кеменин" жанындагы "таштардын" кыймыл эффектин камсыздайт.

Жогоруда айтылгандай, 1 жана 3 -саптар тегерек кезекти түзөт жана 2 жана 4 -саптар да ошондой кылат. Бул 20 сменадан кийин 1 жана 3 -саптар алмаштырылып, 2 жана 4 -саптар алмаштырылганын билдирет. 40 сменадан кийин линиялар баштапкы абалына кайтып келет. Бул жүрүм-турумдан улам, 20 белгиден турган оригиналдуу лабиринт линиялар алмашканда таптакыр башкача болуп калат. Бул лабиринт түзүүгө аракет кылганымда жашоону кызыктуу кылды. Мен программалык камсыздоону дайыма өзгөртпөстөн, жолду диаграммага келтирүү үчүн, акыры, Excel жадыбалын ачтым. Бул жерде берилген программалык камсыздоонун лабиринттин эки версиясы бар (бири комментарийленген), андыктан сиз каалаганын тандай аласыз же өзүңүз жасай аласыз.

Мен башында бул жаш неберелер ойной ала турганчалык жөнөкөй болушун каалачумун, бирок эгер алар (же башка бирөө) өтө чебер болсо, кошумча кыйынчылыктарга дуушар болушун каалачумун. Оюн 1 секундага коюлган нөөмөт ылдамдыгы менен башталат. Ички тик ылдамдыгы 50 мс, ошондуктан 20 интервал бар, бул учурда өйдө/ылдый баскычтарын басууга болот. Чындыгында, басылган баскыч 2 тикти жалмайт, анткени басууну аныктоо үчүн 50 мс интервал колдонулат жана дагы 50 мс интервал бошотууну күтүү үчүн колдонулат. Демейки лабиринт менен, кийинки сменага чейин пресстердин максималдуу саны үч. Оюндун татаалдыгын жогорулатуунун жөнөкөй жолу - бул сменалардын ортосундагы убакытты кыскартуу, ошондуктан коддун бир нече саптары упай көбөйгөн сайын ушундай кылышат. Сменанын ылдамдыгы ар бир 20 сменада 50 мс тездетилет, минималдуу чен 500 мс менен чектелген. Бул параметрлерди өзгөртүү оңой.

Смена ылдамдыгын өзгөртүүдөн башка, программалык камсыздоонун негизги логикасы - "кемени" жылдыруу жана "кеменин" "таш" менен кагылышып кеткенин аныктоо. Бул функциялар аныкталган "рок/мейкиндик" массивинин, ошондой эле дисплейдеги эс тутумдун ордун аныктоочу массивдин артыкчылыгын пайдаланышат. Сменанын саны ЖКнын линиясынын узундугуна туура келет (0-19) жана бул массивдерге индекс катары колдонулат. Логика бир аз татаалдашкан, анткени линиялар ар бир 20 сменада алмашылат. Окшош логика төрт сызыктын биринде боло турган "кеменин" абалын аныктоо үчүн колдонулат.

Ар бир оюндун упайы - бул жөн гана болгон жылыштардын саны жана жогорку упай ички EEROM микроконтроллеринде сакталат. EEPROM китепканасы бул эстутумга окуу жана жазуу үчүн колдонулат. Жеткиликтүү күн тартиби бир байтты окууга/жазууга жана өзгөрмөлүү чекит маанилерин окууга/жазууга мүмкүндүк берет. 0xA5 мааниси биринчи балл сакталганын көрсөтүү үчүн биринчи EEROM жеринде сакталат. Эгерде бул маани кубаттуулукта бар болсо, анда жогорку балл үчүн өзгөрмөлүү чекит мааниси окулат жана көрсөтүлөт. Эгерде 0xA5 мааниси жок болсо, анда жогорку баллды 1 маанисине баштапкы абалга келтирүү тартиби чакырылат, эгерде жогорку упайдын баштапкы абалга келтирилиши керек болсо, ошол эле тартип чакырылат. Жогорку балл кайра 1 маанисине коюлат, өйдө/ылдый баскычтарынын бирин басып, анан бир аздан кийин баштапкы абалга келтирүү баскычын басыңыз.

3 -кадам: Оюн ойноо

Оюн ойноо
Оюн ойноо
Оюн ойноо
Оюн ойноо

Күч колдонулганда, учурдагы жогорку упай көрсөтүлөт. Жогорку упай көрсөтүлгөндөн кийин, "аскалар" жана "кеме" лабиринти көрсөтүлөт, андан кийин оюн бир нече секунддан кийин башталат. "Кеме" "рокко" тийгенде, "CRASH AND BURN" билдирүүсү бир нече жолу жарк этип, оюндун эсебин көрсөтөт. Эгерде жаңы жогорку упай берилсе, анда ал билдирүү да көрсөтүлөт. Кайра коюу баскычын басуу менен жаңы оюн башталат.

Сунушталууда: