Змейка
Описание
Делаем игру - змейку.

Теория
Dotmatrix & MAX7219

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

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

Пассивный зуммер из набора
Применяются для звуковой индикации. Делятся на активные и пассивные. Первые просто пищат на заданной с завода частоте при подаче логической единицы. Вторыми можно полностью управлять с микроконтроллера и воспроизводить мелодии. В Arduino для этого есть метод tone
Задачи
3.1 - Первая итерация
Подключаем dotmatrix и 4 кнопки (вверх, влево, вправо, вниз). На дисплее отображаем точку и перемещаем ее кнопками. Точка должна проходить сквозь стены.
3.2 - Вторая итерация
Превратить предыдущую итерацию в полноценную игру. Змейка должны расти, ускоряться при росте (повышается сложность) и ударяться об себя. Game over нужно визуализировать на ваш вкус (например несколько раз помигать дисплеем) и запускать игру заново
3.3 - Звуковое сопровождения
Подключить зуммер, озвучивать движение змейки, повышение уровня и game over.
3.4 - Hardware SPI
Избавиться от программного shiftOut
в пользу хардварного SPI
.