Данас имамо пројекат са микро играћом конзолом, који свако може поновити.
Потребни материјали и компоненте:
Овај приручник је преузет са ИоуТубе канала АлекГивер. Микроконтролеру за овај пројекат је потребно следеће:
Ово је Аттини85 у ДИП пакету, биће нам довољно. Да га не лемимо, узимамо тзв.
Потребан нам је и екран са Алиекпрессом, ОЛЕД резолуцијом од 128 до 32 пиксела.
Игле су такође корисне.
Тастери које ћемо овде користити су:
Наравно, можете узети клавијатуре, али они ће морати да буду довршени, али не желим да сечем и лемим. Одељак за батерије је овог типа:
А ми ћемо саставити нашу играћу конзолу са плочом (ако желите, можете сами направити плочу). Укључит ћемо УСБасп програмера, али било који АВР ће то учинити.
Дијаграм ожичења Компоненте ће бити следеће:
Екран се повезује са И2Ц сабирницама микроконтролера. Дугмад повезујемо са осталим бесплатним иглицама. Такође додајте прекидач за укључивање / искључивање система. А у основи то је све, остаје да повежемо струју.
Програмер учитава фирмвер у микроконтролер у складу са следећом шемом:
Сада кренимо на монтажу и средимо све елементе на плочи. Покушајмо да се саставимо и да видимо како то све изгледа.
Испало је прилично аскетско. Није лоше. Прекомерни део плоче може се резати.
Сада поправљамо све компоненте само лемљењем њихових ногу.
Сада морате повезати закључке према шеми. У ту сврху, аутор препоручује употребу танке кинеске жице за монтажу.
А за практичност можете користити овај зрцални дијаграм везе.
Ове жице имају тако танку изолацију да их можете директно лемити. Сама изолација ће се растопити и жица ће лемити.
Затим наставите са заптивачем одељка за батерију и прекидача. Одељак такође мора бити додатно фиксиран пиштољем за вруће лепљење.
Па, то је све, систем је састављен, остаје да преузмете фирмвер. „Камен“ ћемо бљеснути одвојено, повезујући га с програматором на плочи.
Фирмвер је као и сви аутори пројекти јавно доступан и са њега се може преузети. Такође на страници пројекта ћете наћи дијаграм и све остале потребне информације о овом пројекту.
Нећемо се детаљно задржавати на преузимању, ако нешто није јасно, увек можете погледати детаљна упутства за аутора.
За фирмвер, само инсталирајте Ардуино Иде, инсталирајте кернел за рад са микроконтролерима серије Аттини, изаберите плочу, изаберите програмера.
Затим одаберемо фреквенцију од 8 или 16 МХз, отворимо картицу „Алати“, пронађемо и изаберемо „Снимање утоваривача“.
Нема утоваривача, али ће микроконтролер бити подешен на потребну фреквенцију. Затим изаберите картицу „Скица“ - „преузми преко програмера“. И чекамо да се скица убаци у микроконтролер.
Сада вадимо „камен“ и убацујемо га у срце наше мини играће конзоле.
Као што видите, делује! А сада, да мало ближе погледамо шта имамо у фирмверу. АТтини85 је микроконтролер са 512 бајта РАМ-а, што је врло мало. 99% библиотека за рад са таквим екраном користи међуспремник са стране микроконтролера да правилно црта слику, јер овај дисплеј не може читати податке из сопственог међуспремника, а ту је и успут.
Пуфер за овај приказ од 128 * 32 пиксела заузет ће 512 бајта, ако желимо да запамтимо стање сваког бита, односно пиксела.
Поред међуспремника, морамо чувати и друге податке, тако да ова опција сигурно не одговара у меморију такве величине.
Стога је одлучено да се резолуција екрана смањи на 64 * 16 пиксела пуферирањем квадратова од 4 пиксела.
Аутор је директно радио са овим дисплејем и успео је да успешно реализује своју идеју. Скица би могла бити корисна за некога ко жели радити с овим дисплејом користећи Аттини.
Што се тиче саме игре. Делује прилично једноставно. Кугла се помера на засебном тајмеру, покрет се састоји у брисању тачке с истим координатама и додавању нове тачке у нове координате.
Израчунавање координата је једноставно додавање вредности брзине координатама у систему приказа.
Када лопта пређе водоравне зидове, она једноставно одскаче од њих, мењајући вертикалну компоненту брзине у супротну, то јест, са знаком минус (-).
Поред тога, програм проверава вертикалне границе игралишта, ако лопта погоди рекет (добро, или како год то правилно називате), онда одскаче, а угао одскока је насумичан.
Ако лопта разбије зид иза рекета, дакле, играч је изгубио тренутни круг, а противник добија бод.
Кретање рекета играча се реализује на исти начин као и кретање лопте, односно стари се рекет брише и црта нови, већ са новим координатама. Координате се мијењају када кликнете на дугме.
Тако се испада много брже од чишћења целог екрана и поновног постављања свих елемената.
Сада за противнички рекет. Контролише га АИ (вештачка интелигенција).
Па, о вештачкој интелигенцији се гласно говори, али ипак, ова интелигенција чини врло једноставну ствар, наиме, чини да се рекет креће у правцу у којем је лопта сада, док покушава да поравна своје средиште дуж вертикалне осе са вертикалном координатом кугле. Да би заиста победио таквог противника, аутор га је успорио, односно, израчунао је свој следећи потез поново тајмером, и на тај начин можда неће имати времена да ухвати лопту и на тај начин је одгурне.
Такође је у игру имплементирана механика све веће сложености. Сваких 10 бодова у корист играча брзина лопте се повећава. Упоредо са тим, расте и брзина реакције АИ (противника).
Као резултат, ево једног тако малог понга. Узалуд, ова видео игра развијена је прво, јер чак и почетник програмер може то да напише. Али упркос очигледној једноставности пројекта, бука с кинеским дисплејом од аутора је узела око 20 сати чистог времена. Истовремено, није узео у обзир време проведено за писање кода саме игре и други ток рада у вези са исправљањем грешака и подешавањем круга.
У овој ствари, сам звук је поступак монтаже, а не апликација.Игре за развијање, чак и оне једноставне, могу бити заиста занимљиве. Нарочито када их покушате угурати у врло малени микроконтролер. А кад вас кинески дисплеј чека иза угла ...
То је све. Хвала на пажњи. Видимо се ускоро!
Видео аутора: