Электронный кубик для настольных игр

Электронный кубик для настольных игр

Сегодня я соберу электронный кубик для настольных игр. Это устройство, которое выбирает случайное число от 1 до 6 и выводит его на светодиодный экран. На его примере я покажу как работать с кнопками и сегментными индикаторами — то есть создавать интерактивные интерфейсы. Это обязательно пригодится в более сложных проектах.

Что понадобится

    — микроконтроллер Arduino Uno
    — семисегментный индикатор
    — восемь сопротивлений на 220 Ом
    — кнопка
    — макетная плата
    — соединительные провода «папа-папа»

Электронный кубик для настольных игр

За работу устройства отвечает Arduino Uno. Микроконтроллер будет следить за кнопкой, генерировать случайные числа и выводить их, зажигая нужные сегменты светодиодного индикатора.

У светодиодного индикатора десять ног, велик риск запутаться. Поэтому соберу устройство на макетной плате. Если ошибусь, поправить схему можно за считанные мгновения, не придётся ничего перепаивать.

Шаг первый. Подключаем индикатор

Семисегментный индикатор — это восемь светодиодов, собранных в одном корпусе. Семь из них служат для отображения цифр, некоторых букв и знаков. Восьмой — выводит точку в правом нижнем углу дисплея.

У индикатора десять ножек: по пять сверху и снизу. Центральные ножки в каждой группе — это общий минус. Достаточно подключить только одну из них. Оставшиеся восемь — плюсы отдельных сегментов индикатора. Если подать на такую ножку ток, сегмент загорится.

Электронный кубик для настольных игр

Установлю индикатор в самом центре макетной платы. Затем подключу одну из средних ножек к общему минусу, а плюсовые ножки к контактам платы Arduino, начав с контакта номер 2.

Электронный кубик для настольных игр

Проводов много, легко ошибиться. Поэтому проверю подключение индикатора с помощью простой программы. Она по очереди включит все сегменты.

Микроконтроллер включает первый сегмент на самом маленьком по номеру контакте, ждёт секунду и переходит к следующему. Я сделал это с помощью циклов, о которых рассказывал в статье о сборке электронного метронома. Не буду на этом ещё раз останавливаться, благо впереди ещё много сложных вопросов.

Электронный кубик для настольных игр

Обратите внимание, в цикле я только включаю сегменты, но не выключаю их. Светодиоды гаснут только после перезагрузки платы. Если нажать кнопку RESET (в переводе с английского это означает сброс) — плата перезагрузится и светодиоды погаснут, а потом начнут зажигаться по новой. Это происходит потому, что Arduino не подаёт ток на контакты, если в программе нет прямой команды сделать это.

Шаг второй. Выводим цифры

Пока индикатор зажигает отдельные сегменты, но чтобы вывести цифры нужно научиться зажигать комбинации. По принципу это напоминает заполнение почтового индекса. Попробуем вывести цифру 1. Для этого нужно определить, какие сегменты зажигать. Посмотрим схему подключения более внимательно.

Электронный кубик для настольных игр

Чтобы вывести на экран цифру 1, нужно зажечь два правых сегмента. Они подключены белым и синим проводами к контактам 3 и 6. Изменю тестовую программу, чтобы она выводила на экран единицу.

Электронный кубик для настольных игр

Это уже что-то. Аналогично подберу сегменты, чтобы вывести остальные цифры. Соберу эту информацию в массив. Массив — это переменная, которая содержит сразу несколько значений. Каждое отдельное значение называется элементом массива. Такой элемент можно вывести, если знать его номер.

Мне нужен массив из 11 элементов: десять для цифр от 0 до 9 и один для точки.

Каждый элемент моего массива начинается со служебной комбинации символов 0b, которая означает, что элемент состоит из двоичных данных. А дальше идёт комбинация из восьми нулей или единиц. Они задают сегменты, которые будут гореть: 1 включит сегмент, 0 — выключит.

Запущу простую программу, которая будет последовательно выводить все элементы массива на экран.

Элементы готовы, остаётся добавить кнопку, которая будет управлять моим устройством.

Шаг третий. Собираем счётчик нажатий

Подключу кнопку одной ножкой к общему минусу, второй — к контакту 13 на Ардуино.

Электронный кубик для настольных игр

Я выбрал 13 контакт не случайно, на борту платы рядом с ним расположен оранжевый светодиод. Он будет гореть, когда кнопка отпущена и гаснуть, когда нажата. Почему, так происходит — расскажу в следующем проекте. Пока же воспользуюсь этим, чтобы проверить схему.

Электронный кубик для настольных игр
Электронный кубик для настольных игр

Изменю предыдущую программу так, чтобы значение счётчика менялось только при нажатии на кнопку.

Получился простой счётчик, похожими устройствами (их иногда называют кликеры) часто пользуются стюардессы, чтобы пересчитать пассажиров на борту самолёта.

Шаг четвёртый. Добавляем генератор случайных чисел

Теперь остался последний шаг. Научиться выводить случайное число. Для этого в языке C++ есть функция random. Она выводит случайное число из заданного диапазона. Мне нужно целое число от 1 до 6. Здесь есть тонкость. Генератор создаёт числа до конца заданного диапазона, не включая максимальное значение. Чтобы выпадала шестёрка, верхней границей диапазон нужно указать 7.

Мой электронный кубик готов, можно играть в любимые настольные игры — сжульничать бросая кубик точно не получится.

Электронный кубик для настольных игр

P.S. Если что-то непонятно или хочется поговорить о чём-то более подробно, пишите в комментариях. Обязательно отвечу!

Электронный кубик для настольных игр
Постоянный автор компании «220 вольт». Умеет собирать шкафы, пилить заборы и выпиливать двери. Пишет буквы и снимает видео.