Сделай сам игральную кость на arduino arduino+

Сделай сам игральную кость на arduino arduino+

Привет содруги! Сегодня я расскажу о повторении наверно самого простого осциллографа. У одного товарища на его ютуб канале я случайно наткнулся на видео, где он повторял это устройство. Так как мне не очень то нужен полноценный дорогостоящий осцил, я решил собрать его примитивное подобие. Автор называет его Пультоскоп и совершенно свободно разместил его исходники за что отдельное спасибо.

Корпус я искал недолго. Прочитав статью, посмотрев видео я решил, что бейте меня по-рукам, но мне нужен этот прибор. Пока ждал экран от Nokia 5110 с Али, я нашел карту памяти для DreamCast. Даже сам не знаю откуда она у меня, ведь приставки у меня никогда не было). Конечно понимал, что будет трудно все уместить в таком крошечном коробке, но попытаться нужно было.

Сборка затянулась на пару вечеров с одновременным просмотром футбола. Затянулась потому, что корпус очень мал, а впихнуть нужно было немного-немало экран, кусок платы с кнопками, arduino pro micro, выключатель и батареи. Свое варварство я начал с разбора и откусывания платы. Кнопки нужно было оставить и пришлось поступать радикально).Потом началась размахивание горячим жалом и “кривыми” руками пайка.Ардуина, мешала плотно закрыть корпус, поэтому пришлось отказаться от нее в пользу Atmega328 распаянной на макетной плате. Прошивка, проверка — все работает. Я думаю самодельщики знают это чувство, когда, что-то сделанное своими руками вдруг работает) Радость и гордость за себя самого переполняют)) Заработало кстати, с первого раза, я даже удивился. Потыкал, померил, все хорошо, но есть наводки от сети, когда берешься за щуп или за само устройство наводка в 50 герц появляется сразу. Нашел старый, советский, экранированный провод взамен китайскому коннектору. Советский провод тридцатилетней давности кстати, лудится и припаивается намного лучше и приятнее новых поднебесных — прогресс мать его. Экран на землю, провод на пин микроконтроллера и все, наводки пропали! Дальше собрал все в корпус без китайских соплей термоклея конечно же не обошлось, но а как по другому созидать? здесь китайцем нужно сказать спасибо)).

Прибор получился нуууу оооооочень компактным! Осциллограф в треть ладони это круто парни! Пусть характеристиками и не блещет, но для минимальных, простых задач достаточно. Рекомендую для повторения, тем более, что бюджет примерно 250-400 рублей учитывая корпус и мелочевку и даже электричество). Оставляйте комментарии. Спасибо за потраченное время! Ссылка на проект автора.

Игральный кубик (кости) на Arduino. Random числа

В предыдущих двух статьях, мы разобрались как работает светодиодный индикатор 8х8 пикселей, напрямую, без помощи доп. регистров и прочего. А также протестировали датчики наклона. Что можно собрать, используя эти два навыка? Правильно – игральный кубик. Раз по отдельности всё у нас работает, осталось только объединить всё это в одно устройство.

В прошлый раз мы познакомились с микросхемой ULN2803, и её роли в этой схеме, датчик же подключается совсем элементарно, его мы тоже разбирали. Напомним схему подключения индикатора, а контакт для датчика наклона выберем A5

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

Помимо пустого массива индикации, который мы будем использовать для отображения на индикаторе, создадим ещё заготовки для цифр кубика. Например единица.

Создадим по аналогии остальные, так будет выглядеть пять

По аналогии зададим другие числа, не буду перечислять их в статье, принцип понятен. Начнём с самого необходимого – в зависимости от случайного значения от 1 до 6, будем менять массив indication, на значение другого массива. Кстати о функции random. Как бы это странно не звучало, но микроконтроллеру тяжело из ниоткуда придумать число с помощью кода – код выполняется прямолинейно. Поэтому обычно берётся АЦП аналогового входа, ведь если его оставить в воздухе, на нём постоянно будет изменяться напряжение. Оцифровав его, путем дальнейших преобразований, можно получить достаточно случайное число. В Arduino это делается очень просто, сначала читаем значение с аналогового входа, я использую 4, потому-что он у меня свободен, и “висит в воздухе”.

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

Теперь, получив случайное число, попробуем поменять значение массива indication. К сожалению нельзя написать массив1 = массив2, ничего не получится. Значения нужно переписывать в цикле, по двум измерениям, в нашем случае. Попробуем для понимания сбросить экран и напишем функцию очистки, в котором один цикл for (для значений i) будет вложен в другой цикл for (для значений J), ведь суммарно нам нужно получить 64 итерации.

В результате этого, все значения массива indication примут значение равное 0. Точно таким же методом, мы можем переназначить значения массива на значения другого массива, например в данном цикле, значение массива one будет скопировано в массив indication

Далее, дело за малым, в зависимости от значения переменной random, мы назначаем массиву значения от 1 до 6, для отображения необходимого значения. Для этого воспользуемся оператором множественного значения switch

Мы уже смотрели в статье с датчиками наклона, как запустить действие при многоразовой тряске – для этого мы используем счётчик переменную valCrash. Как только мы зафиксировали более 16 изменений выхода датчика с одного состояния на другое – нам нужно немного изменить переменные, для запуска отображения числа на индикаторе. Для этого мы обнуляем дисплей, сбрасываем переменные времени и активируем флаг event = 1;

Если же нет никого действия в течении 7 секунд – мы обнуляем счётчик трясок valCrash и очищаем дисплей – чтобы не потреблять энергию просто так и не показывать старый результат.

Функция сброса дисплея реализуется просто. Мы уже научились назначать значения одного массива другому. В данном случае просто заполняем массив нулями в двух циклах.

Также для красоты перед выпадением числа на кубике – можно сделать любую анимацию. Чтобы её легко можно было изменить – я сделал её в 8 массивах, которые меняются по очереди в цикле. Для примера, так выглядят первые два кадра.

В ключевом условии if (millis() – shakeTime > 80 && event == 1) мы запускаем действие анимации, как только флаг event == 1. Каждые 80мс, мы меняем кадр в цикле, чтобы глаз успевал заметить кадр. Этим значением можно замедлять или ускорять анимацию.

Ну и действие отображения самого числа. Оно срабатывает спустя время eventTime >= 1500, чтобы дать поработать анимации. Анимация же сразу отключится, потому-что мы снимаем флаг event = 0; в этой функции.

Ну а в главном цикле мы проверяем постоянно все наши функции. Сначала при тряске активируются действия в crash();, затем если набрали необходимое число трясок, запускаем функцию анимации shaking(); . action(); активируется через определённое время после старта анимации, и выключают саму анимацию, заменяя картинку на экране случайным числом. resetCrash(); очищает экран, при отсутствии действий со стороны пользователя, а dynamic_indi(); у нас в работе всегда – это динамическая индикация экрана.

В следующих статьях мы перенесём проект на автономную плату, и я расскажу как уйти от arduino, что важно в реальном проекте.

Сделай сам игральную кость на Arduino

Что делать если вам нужно поиграть в настольную игру, требующую игральную кость, а под рукой только Arduino? Не страшно, вы сможете сделать свой собственный кубик менее чем за 15 минут! Вам просто нужно немного терпение и Arduino.

Шаг 1: Необходимые детали

Теперь давайте остановимся на том что нам пригодится для создания аналога игрального кубика на нашем Ардуино.

  • 16 проводов перемычек
  • Кнопка
  • Arduino
  • Макетная плата
  • Кабель USB
  • 6 светодиодов (цвет не имеет значения)
  • 6 резисторов на 220 Ом
  • Резистор 10 кОм

Шаг 2: Подключение кнопки

Во-первых, давайте начнем с кнопки. При каждом нажатии вы как бы «бросаете кубики» (генерируя случайное число и подсвечивая соответствующее количество светодиодов).

Возьмите кнопку и вставьте ее в макет, выберите одну из сторон. Вы увидите 2 контакта. Тот, который находится слева (вы можете поменять их), соединяется с землей (GND) Arduino (через макет) с резистором 10 кОм.

Подключите ту же строку к цифровому выходу 13 Arduino (определенному в коде, можно изменить). Разъем (пин) в левой части кнопки подключается к питанию 5 В. Вы можете использовать приведенное выше изображение для примера.

Шаг 3: Подключение светодиодов

Вы уже вставили светодиоды в макет. Если нет, теперь это идеальный момент. Мы не знаем как вы будете позиционировать их, но в основном, следуйте общему правилу – все 6 катодов должны быть соединены вместе, а затем заземлены (GND). Смотрите фотографии выше, если у вас возникли проблемы.

Теперь нам нужно подключить аноды. Позвольте объяснить вам: вам нужно подключить другой провод каждого светодиода к соответствующему цифровому выходу Arduino, каждый из которых использует резистор 220 Ом! Перенаправляем другие концы резисторов на несколько пустых строк макета, которые затем подключаются к контактам с помощью перемычек.

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

Шаг 4: Код для Arduino

Подключите шину питания макета к вашему Arduino.

Затем подключите плату и загрузите код:

Шаг 5: Итоговый результат

Имейте в виду, ничто в мире, в котором мы живем, не случайно. Даже «случайные» числа. Таким образом, получение одинаковых номеров подряд очень вероятно. Мы пробовали исправить это в коде, но он не может быть идеальным. Ждем ваших корректировок и пожеланий в комментариях.

Игральные кости с Arduino

Это руководство поможет вам создать электронные игральные кости с помощью Arduino и некоторых других компонентов.

Шаг 1: Компоненты

Шаг 2: Светодиоды

Для начала откусите контакты у светодиодов, чтобы они стали короче. Так удобнее будет их крепить на макетной плате.

Затем начните устанавливать их в макетную плату, расположив отрицательные контакты светодиодов слева. Первый светодиод располагается между пинами (1-, 2+). Второй светодиод располагается между пинами (5-,6+), третий светодиод – между пинами (9-,10+), четвёртый светодиод – посередине между пинами (4-, 7+). Последние три светодиода располагаются прямо под первыми тремя, но на другой стороне макетной платы.

Шаг 3: Соединение светодиодов с «землей»

Захватите свои перемычки (для этого шага я использовал более мелкие перемычки, чтобы облегчить жизнь) и соедините все отрицательные (-) стороны светодиодов с заземлением.

Шаг 4: Перемычки к Arduino

Теперь возьмите длинные перемычки и подсоедините их к положительным (+) контактам каждого светодиода. Для удобства лучше использовать перемычки разного цвета. Также подсоединим длинную перемычку к отрицательной шине, а она будет подсоединена к «земле» на плате Arduino. В списке компонентов были дополнительно указаны медные перемычки, я использовал небольшие их отрезки для фиксации всех длинных перемычек вместе на плате.

Шаг 5: Кнопка

Теперь подсоединяем кнопку. Начните с размещения кнопки в центре макетной платы. Я использовал резистор на 100 кОм, но другие тоже будут работать. Поместите указанный резистор на макетную плату, немного отступая от одной из сторон кнопки (см. рисунок).

Шаг 6: Соединение перемычек с Arduino

Теперь мы подсоединяем перемычки к самой плате Arduino.
LED1/Pin 12 (Светодиод 1/Пин 12)
LED2/Pin

11(Светодиод 2/ Пин

10 (Светодиод 3/ Пин

9 (Светодиод 4/ Пин

9)
LED5/Pin 8 (Светодиод 5/ Пин 8)
LED6/Pin 7 (Светодиод 6/ Пин 7)
LED7/Pin

6 (Светодиод 7/ Пин

6)
GND/GND 😮 (Земля/Земля :o)

Если вы еще не подсоединили кнопку к Arduino, предыдущий шаг показывает, как это сделать.

Шаг 7: Код!

Теперь подсоедините плату Arduino к компьютеру и загрузите этот код.

Источники:

http://wreckage.ru/dice-on-arduino-random-number/

http://arduinoplus.ru/igralnaya-kost-arduino/

http://tpai.ru/blog/stati/igralnye-kosti-s-arduino

http://drongeek.ru/profi/kvadrokopter-na-arduino

Ссылка на основную публикацию