Snake Game е много популярен от началото на мобилните телефони. Първоначално се предлагаше в черно-бели мобилни телефони и скоро стана много известен. След това с напредването на мобилните телефони тази игра също се е променила много и сега са налични много графични и цветни версии на тази игра.
Змийската игра също стана много популярен проект „Направи си сам“ за любителите на електрониката и учениците. Така че днес ще демонстрираме, Arduino Snake Game, с всичките му основни функционалности, като същевременно го поддържаме опростена.
Използвани компоненти:
- Arduino UNO
- 8x8 LED матричен дисплей
- Регистриране на смяна 74HC595
- 16x2 LCD
- ПОТ 1К
- Бутони
- Свързващи проводници
- Дъска за хляб
- Захранване
Работно обяснение:
Това е малко сложна игра за изграждане. Но в този урок улеснихме за вас. За да направим този проект, използвахме 8x8 червен цветен матричен дисплей за показване на змията и нейната хранителна точка, LCD за показване на точките или резултата, 5 бутони за даване на указания и стартиране на играта и накрая Arduino UNO за управление целия процес. Диаграма на щифта на 8x8 LED матричен дисплей с оригиналното изображение е дадена по-долу:
Когато включим веригата, първо показваме поздравително съобщение и след това подсказка „Натиснете Start To Play“ на LCD дисплея. След това LCD показва резултата като нула, а матричният дисплей показва две точки като змия и една точка като храна.
Сега потребителят трябва да натисне средния бутон, за да започне играта и змията да започне да се движи в посока нагоре по подразбиране. След това потребителят трябва да даде насока на змията, като натисне „Клавишите за насочване“ около средния бутон. Тук сме използвали пет клавиша (бутони), а именно ляв клавиш, десен бутон, бутон нагоре, бутон надолу и клавиш Старт. Винаги, когато змията стигне до точката на храната или яде храната, резултатът се увеличава с 5 точки всеки път и дължината на змията се увеличава с една точка (LED) всеки път, също така скоростта на змията става по-бърза от преди. И винаги, когато змията би ударила която и да е стена или достигнала до края на светодиодната матрица, тя щеше да приключи играта („Game Over“). След това потребителят трябва да стартира играта отново, като натисне бутона старт.
Обяснение на веригата:
Веригата на този проект на Snake Game е малко сложна. Тук сме свързали матричен дисплей с помощта на Shift Register 74HC595. Тук се използват два регистъра за смяна, един за задвижване на колоните и втори за задвижване на редовете. Контролни щифтове както на регистрите, регистър за смяна на колона и регистър за смяна на ред (SH, ST)са директно свързани с пиновете на Arduino 14 и 16 съответно. И DS щифтът на регистъра за смяна на колони и регистърът за смяна на редове са директно свързани с пинове с номера 15 и 17 на Arduino. Бутонът за стартиране на играта е свързан на пин номер 3, ляв бутон за посока на пин 4, бутон за дясна посока при пин 6, бутон за посока нагоре при пин 2 и бутон за посока надолу при пин 5. В нашия хардуер е свързан и LCD дисплей покажи резултат. RS и EN щифтовете са директно свързани на щифтове 13 и 12. RW щифтът е директно заземен. И изводите за данни d4-d7 са свързани на изводи 11, 10, 9, 8 на Arduino. Останалите връзки са показани на електрическата схема.
Обяснение на програмирането:
За да напишем този код за игра на змия Arduino, на първо място включваме заглавни файлове и дефинираме щифтове за LCD. И след това дефинирайте няколко щифта за бутони за посока и щифт за данни за регистрите за смяна.
#include
След това инициализираме всички неща, които сме използвали в програмата. Във функцията за настройка ние инициализираме LCD, като даваме посока на входните изходни щифтове, издърпваме битовете и показваме приветствено съобщение на LCD.
void setup () {lcd.begin (16,2); pinMode (ds_col, ИЗХОД); pinMode (sh_col, OUTPUT); pinMode (st_col, OUTPUT); pinMode (ds_row, OUTPUT); pinMode (старт, INPUT);……………
И тогава започваме играта в цикъл .
void show_snake (int temp) {for (int n = 0; n
Тук използвахме функцията по-долу за четене на посоката на въвеждане от бутона.
void read_button () {if (! digitalRead (вляво)) {move_r = 0; move_c! = - 1? преместване_c = -1: преместване_c = 1; while (! digitalRead (вляво));……………
Проверете пълния C Code of Snake Game по-долу.