» електроника »Миниатюрна игрална конзола с игра Pong

Миниатюрна игрова конзола с игра Pong

Поздрави жителите на нашия сайт!
Днес имаме проект с конзола за микроигри, който всеки може да повтори.


Необходими материали и компоненти:








Това ръководство беше взето от канала на AlexGyver YouTube. Микроконтролерът за този проект се нуждае от това:


Това е Attiny85 в DIP пакета, ще ни бъде достатъчно. За да не го спойкаме, вземаме така нареченото гнездо.

Нуждаем се и от дисплей с Aliexpress, OLED с резолюция 128 на 32 пиксела.


Игли също идват по-добре.

Бутоните, които ще използваме тук са:

Разбира се, можете да вземете клавиатури, но те ще трябва да бъдат финализирани, но аз наистина не искам да видя и спойка. Отделението за батерията е от този тип:

И ние ще сглобим нашата игрална конзола с дъска (ако желаете, можете сами да си направите дъска). Ще флашнем USBasp програмиста, но всеки AVR ще го направи.

Схема на свързване Компонентите ще бъдат както следва:

Дисплеят се свързва към шините I2C на микроконтролера. Свързваме бутони към други безплатни щифтове. Освен това добавете превключвател за включване / изключване на системата. И в общи линии това е всичко, остава да свържете захранването.
Фърмуерът се зарежда в микроконтролера от програмиста съгласно следната схема:
Миниатюрна игрова конзола с игра Pong

Сега нека започнем с монтажа и да подредим всички елементи на дъската. Нека се опитаме да сглобим и да видим как всичко изглежда.


Оказа се доста аскетичен. Не е лошо. Излишната част от дъската може да бъде отрязана.


Сега ние фиксираме всички компоненти само чрез запояване на краката им.



Сега трябва да свържете изводите според схемата. За тази цел авторът препоръчва да се използва тънък китайски монтажен проводник.

И за удобство можете да използвате тази огледална схема на свързване.

Тези проводници имат такава тънка изолация, че можете да ги спойкате директно. Самата изолация ще се стопи и жицата ще бъде запоена.

След това преминете към запечатване на отделението за батерията и превключвателя. Отделението също трябва да бъде фиксирано допълнително с пистолет за горещо лепило.


Е, това е всичко, системата е сглобена, остава да изтеглите фърмуера. Ще прокараме „камъка“ отделно, като го свържем с програмиста на дъската.


Фърмуерът, както при всички проекти на автора, е обществено достояние и може да бъде изтеглен от. Също така на страницата на проекта ще намерите диаграма и цялата друга необходима информация за този проект.

Няма да спираме подробно на изтеглянето подробно, ако нещо не е ясно, винаги можете да погледнете автора за подробни инструкции.
За фърмуер просто инсталирайте Arduino иде, инсталирайте ядрото за работа с микроконтролери от серията Attiny, изберете платка, изберете програмист.


След това избираме честотата 8 или 16 MHz, отваряме раздела „Инструменти“, намираме и избираме „Записване на товарач“.

Там няма товарач, но микроконтролерът ще бъде настроен на необходимата честота. След това изберете раздела „Скица“ - „изтеглете чрез програмиста“. И чакаме, докато скицата се зареди в микроконтролера.

Сега изваждаме „камъка“ и го вмъкваме в сърцето на нашата мини игрална конзола.


Както виждате, работи! А сега нека разгледаме по-подробно какво имаме във фърмуера. ATtiny85 е микроконтролер с 512 байта RAM, което е много малко. 99% от библиотеките за работа с такъв дисплей използват буфер отстрани на микроконтролера, за да пречертаят правилно картината, тъй като този дисплей не може да чете данни от собствения си буфер, а там е между другото.

Буферът за този дисплей от 128 * 32 пиксела ще заеме 512 байта, ако искаме да запомним състоянието на всеки бит, тоест пиксел.
В допълнение към буфера, ние също трябва да съхраняваме други данни, така че тази опция със сигурност не се вписва в паметта с такъв размер.

Затова беше решено да се намали разделителната способност на дисплея до 64 * 16 пиксела чрез буфериране на квадрати от 4 пиксела.

Авторът работи директно с този дисплей и успя успешно да реализира идеята си. Една скица може да е полезна за някой, който иска да работи с този дисплей, използвайки Attiny.


Сега по отношение на самата игра. Работи доста просто. Топка се движи по отделен таймер, движението се състои в изтриване на точка със същите координати и добавяне на нова точка в новите координати.

Изчисляването на координатите е просто добавяне на стойности на скоростта към координатите в дисплейната система.
Когато топката надхвърля хоризонталните стени, тя просто отскача от тях, променяйки вертикалния компонент на скоростта до обратния, тоест със знак минус (-).

В допълнение, програмата проверява вертикалните граници на игралното поле, ако топката удари ракетата (добре, или както я наречете правилно), тогава тя отскача и ъгълът на отскачане е случаен.
Ако топката счупи стената зад ракетата, следователно играчът е загубил текущия рунд, а противникът получава точка.

Движението на ракетата на играча се осъществява по същия начин като движението на топката, тоест старата ракета се изтрива и се изтегля нов, вече с нови координати. Координатите се променят, когато щракнете върху бутона.
По този начин се оказва много по-бързо от почистване на целия дисплей и рендиране на всички елементи отново.


Сега за ракета на противника. Той се контролира от AI (изкуствен интелект).

Е, за изкуствения интелект се говори шумно, но въпреки това това разузнаване прави много просто нещо, а именно, той кара ракетата да се движи в посоката, в която е сега топката, като същевременно се опитва да подравнява центъра си по вертикалната ос с вертикалната координата на топката. За да може наистина да победи такъв противник, авторът го направи бавен, тоест изчислява следващия си ход отново от таймера и по този начин може да няма време да хване топката и по този начин да го отблъсне.

Също така в играта внедрена механика с нарастваща сложност. На всеки 10 точки в полза на играча, скоростта на топката се увеличава. Заедно с това расте и скоростта на реакция на ИИ (противник).

В резултат на това ето такъв прост малък понг. Не за нищо, тази видео игра е разработена най-напред, защото дори начинаещ програмист може да я напише. Но въпреки привидната простота на проекта, шумът с китайския дисплей отне около 20 часа чисто време от автора. В същото време той не взе предвид времето, прекарано в писане на кода на самата игра и други работни процеси, свързани с отстраняване на грешки и настройка на схемата.



В това нещо самото бръмчене е процесът на сглобяване, а не приложението.Разработването на игри, дори и онези прости, може да бъде наистина доста интересно. Особено, когато се опитате да ги пъхнете в много мъничък микроконтролер. И когато китайският дисплей ви очаква зад ъгъла ...

Това е всичко. Благодаря за вниманието. Ще се видим скоро!

Авторско видео:
6.5
5.5
5.5

Добавете коментар

    • усмихвамусмивкиxaxaдобреdontknowYahooНеа
      шефдраскотинаглупакдаДа-даагресивентайна
      съжалявамтанцувамdance2dance3извинениепомощнапитки
      спиркаприятелидобърgoodgoodсвиркаприпадамезик
      димплясканеCrayдеклариратподигравателендон-t_mentionизтегляне
      топлинасърдитlaugh1MDAсрещаmoskingотрицателен
      not_iпуканкинаказвамчетаплашаплашитърсене
      присмехthank_youтоваto_clueumnikостърСъгласен
      лошоbeeeblack_eyeblum3изчервяванесамохвалствоскука
      цензурираншегаsecret2заплашвампобедаюsun_bespectacled
      ShokРеспектхахаprevedдобре дошълkrutoyya_za
      ya_dobryiпомощникne_huliganne_othodifludзабранаблизо
1 коментар
кетчуп
вместо плагиатство ще е по-добре да измислите своето

Съветваме ви да прочетете:

Предайте го за смартфона ...