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