Змейка

Описание

Делаем игру - змейку.

Теория

Dotmatrix & MAX7219

dotmatrix|600
dotmatrix

Матрица светодиодов устроена похожим образом, что и сегментный дисплей - колонки имеют общий катод, строки имеют общий анод. В наборе матрица, как это обычно бывает в любительской электронике, представлена в виде готового модуля - драйвер распаян на плате и нам не нужно заниматься его подключаением.
В качестве драйвера здесь используется микросхема MAX7219 - внутри она устроена несколько сложнее сдвигового регистра, но пользоваться ей сильно проще - достаточно отправлять нужные двухбайтные команды (см заметки на странице микросхемы), мультиплексингом она займется сама .
На гребенку выведены контакты vcc gnd din cs clk. Последние три это знакомые нам data latch clock, только на этот раз даташит прямо говорит нам что микросхема работает по протоколу SPI

SPI

Serial Peripheral Interface - протокол последовательной связи микроконтроллера и его периферии.

Схема подключения периферии по SPI|400
Схема подключения периферии по SPI

По факту мы уже сталкивались с ним, когда работали со сдвиговыми регистрами. Под часто возникающие задачи на МК выделяют отдельные аппаратные блоки, для облегчения жизни процессора. На Atmega328P такой блок есть в том числе под SPI, посмотреть на какие пины он выведен на nano можно на схеме. В Arduino работа с ним проходит через одноименную абстракцию. Работа по протоколу может быть и чисто программной.

Зуммер (Buzzer)

Пассивный зуммер из набора|300
Пассивный зуммер из набора

Применяются для звуковой индикации. Делятся на активные и пассивные. Первые просто пищат на заданной с завода частоте при подаче логической единицы. Вторыми можно полностью управлять с микроконтроллера и воспроизводить мелодии. В Arduino для этого есть метод tone

Задачи

3.1 - Первая итерация

Подключаем dotmatrix и 4 кнопки (вверх, влево, вправо, вниз). На дисплее отображаем точку и перемещаем ее кнопками. Точка должна проходить сквозь стены.

3.2 - Вторая итерация

Превратить предыдущую итерацию в полноценную игру. Змейка должны расти, ускоряться при росте (повышается сложность) и ударяться об себя. Game over нужно визуализировать на ваш вкус (например несколько раз помигать дисплеем) и запускать игру заново

3.3 - Звуковое сопровождения

Подключить зуммер, озвучивать движение змейки, повышение уровня и game over.

3.4 - Hardware SPI

Избавиться от программного shiftOut в пользу хардварного SPI.