Оглавление:

Азимутальная проекция 3D-карта Украшение X Игра-головоломка с народной музыкой - Arduino: 7 шагов
Азимутальная проекция 3D-карта Украшение X Игра-головоломка с народной музыкой - Arduino: 7 шагов

Видео: Азимутальная проекция 3D-карта Украшение X Игра-головоломка с народной музыкой - Arduino: 7 шагов

Видео: Азимутальная проекция 3D-карта Украшение X Игра-головоломка с народной музыкой - Arduino: 7 шагов
Видео: QGIS 3 - № 82. Делаем красивую карту. Часть-1. 2024, Июль
Anonim
Image
Image
Дизайн доски
Дизайн доски

ВСТУПЛЕНИЕ

На следующей странице вы узнаете, как создать проект Arduino, который имеет две основные функции - простое украшение с освещением и игру-головоломку с народной музыкой, которая объединяет в себе области географии, геометрии, карт, Организации Объединенных Наций и музыки. Основываясь на структуре шестиугольников, устройство отображает карту мира в азимутальной эквидистантной проекции, которая является формой проекции карты, используемой Организацией Объединенных Наций (и ее символом).

При активации режима украшения континенты карты будут светиться разными цветами, определяемыми случайными комбинациями значений RGB с помощью светодиодов RGB.

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

_

ЗАПАСЫ

Актуальные материалы

  • 5-миллиметровые светодиоды RGB * 20
  • Провода
  • Резисторы * 9
  • Плата Arduino * 1 (любого типа)
  • Макеты * 3
  • Кнопки * 7
  • Плата ЖК-дисплея I2C * 1
  • Картонная коробка (13 * 9 * 5,7 дюйма; 33 * 23 * 14,5 см)
  • Деревянная доска (37,5 * 29 * 0,8 см)
  • Акриловые доски (прозрачные * 2, полупрозрачные * 1)
  • Портативное зарядное устройство * 1

Инструменты:

  • Лезвие * 1
  • УФ-отверждаемые клеи * 1
  • Двусторонняя лента * 1 рулон
  • Пистолет для горячего клея * 1

Машины:

Станок для лазерной резки

Программное обеспечение:

  • Adobe Illustrator
  • Adobe Photoshop
  • Носорог 3D

Шаг 1: спроектируйте доску

Вы можете напрямую загрузить прикрепленный файл или выполнить следующие действия.

Обрисовывая карту

  1. Скачать схему карты из Google

    1. Google "логотип организации объединенных наций"
    2. Выберите «инструменты - размер - большой».
    3. Загрузите ваше самое любимое изображение (используемое в этом проекте: ссылка) * Старайтесь не выбирать те, у которых сложные линии пересекаются с континентальными землями *
  2. Перенести загруженную карту в печатную версию

    1. Раскрасьте нежелательные области в белый цвет с помощью функции кисти в Adobe Photoshop.
    2. Экспорт файла (JPEG)
    3. Импортируйте файл в Adobe Illustrator и используйте функцию «трассировка изображения» для трассировки карты.
    4. Экспорт файла (dxf)

Добавление фона шестиугольника

  1. Импортируйте файл dxf в Rhino
  2. Выберите функцию "многоугольник" и введите "6" для параметра "NumSides".
  3. Введите значение радиуса "3,5".
  4. Нарисуйте 28 шестиугольников одинакового размера.
  5. Экспорт файла в 3дм

Шаг 2: лазерная резка

Image
Image
Лазерная резка
Лазерная резка
Лазерная резка
Лазерная резка
Лазерная резка
Лазерная резка
  1. Импортируйте ранее заполненный файл в xxx.
  2. Используя станок для лазерной резки, распечатайте основной корпус на деревянной доске и континенты на акриловых досках (2 прозрачных и 1 полупрозрачный) (видеоролики представлены выше).

Шаг 3. Соберите устройство

Соберите устройство
Соберите устройство
Соберите устройство
Соберите устройство
Соберите устройство
Соберите устройство

Платы после лазерной резки

  • Акриловые континенты

    1. Используйте УФ-отверждаемые клеи, чтобы склеить три доски каждого континента вместе (полупрозрачный в качестве среднего слоя).
    2. Используйте ультрафиолетовый свет, чтобы осветить склеенные участки, чтобы дать клею затвердеть.
  • Фундамент из деревянных досок

    1. Вручную удалите небольшие участки земли, прилипшие к основной деревянной доске.
    2. * Если какая-либо часть деревянной доски сломана, используйте УФ-отверждаемые клеи, чтобы приклеить их обратно *

Создание основания (нижнего основания всего устройства)

  1. Найдите картонную коробку подходящего размера, размером примерно 13 * 9 * 5,7 дюйма (33 * 23 * 14,5 см).
  2. Используя деревянную доску в качестве эталонной модели, нарисуйте континентальные части на верхней поверхности коробки.
  3. Нарисуйте нижнюю часть кнопок на верхней поверхности коробки, чтобы каждая кнопка находилась в центре каждой обведенной континентальной части.
  4. Используйте лезвие, чтобы отрезать части пуговицы по следам
  5. В пределах начерченных континентальных частей используйте лезвие, чтобы отрезать короткие отрезки, окружающие пуговицу.
  6. Нарисуйте еще две нижние части кнопки на правой стороне поля (попробуйте выровнять следы с одинаковой высотой)
  7. Обведите плату ЖК-дисплея на правой стороне коробки (над двумя кнопками на предыдущем шаге).
  8. Используйте лезвие, чтобы отрезать две части кнопки и часть ЖК-дисплея, следуя следам на шагах 6 и 7.

Шаг 4: Постройте схемы

Построить схемы
Построить схемы

Обращаясь к схемам выше, постройте схему.

Примечание:

  • Резисторы для светодиодов RGB и у кнопок разные, ВЗГЛЯДИТЕ!
  • Поскольку на плате ЖК-дисплея выше нет модели I2C, она не подключена идеально. (Платы ЖК-дисплея с моделями I2C должны подключаться только к четырем контактам)

    • Подключите GND к дисплею и плате Arduino.
    • Подключите VCC на устройстве отображения к положительным контактам на макетной плате.
    • Подключите SDA на устройстве отображения и плате Arduino
    • Подключите SCL к дисплею и плате Arduino.

Шаг 5. Загрузите код

Код этого проекта можно найти здесь или ниже.

Каждая строка кода имеет примечание, объясняющее ее назначение и функции.

Примечание:

  • Все конкретные контакты D можно изменить и отрегулировать в зависимости от схемы вашей схемы.
  • Все задержанные секунды можно изменить на разные значения, но НЕ УДАЛЯЙТЕ их! (Эти отсроченные секунды позволяют коду двигаться более логично. Без них некоторые части кода могут не работать!)
  • В строке 24 (введение цикла for) вы можете указать количество повторений, которое вы хотите, чтобы цикл выполнялся (исходное значение - 5).
  • Комбинация цветов светодиодов RGB в каждой кнопке циклов «если нажата» и «если не нажата» может быть отрегулирована и настроена. (Первоначально светодиоды RGB светились зеленым при нажатии, в то время как они светились красным, если не нажимать. Вы можете изменить значения, чтобы иметь творческие цвета для ответов ПРАВИЛЬНО и НЕПРАВИЛЬНО)

#включают

# включить LiquidCrystal_I2C lcd_I2C_27 (0x27, 16, 2); // установить адрес ЖК-дисплея для 16-символьного и 2-строчного отображения int _R; // вводим переменную R, которая обозначает значение красного цвета светодиодов RGB int _G; // вводим переменную G, которая обозначает значение зеленого цвета светодиодов RGB int _B; // вводим переменную B, которая обозначает значение синего цвета светодиодов RGB int _SongNumber; // вводим переменную SongNumber void setup () {pinMode (10, INPUT); // устанавливает D10 как вход для кнопки украшения карты pinMode (9, INPUT); // устанавливает D9 как вход для кнопки головоломки pinMode (8, INPUT); // устанавливает D8 как вход для кнопки Евразия pinMode (4, INPUT); // устанавливает D4 как вход для кнопки Северной Америки pinMode (3, INPUT); // устанавливает D3 как вход для кнопки Южной Америки pinMode (2, INPUT); // устанавливает D2 как вход для кнопки Африка pinMode (1, INPUT); // устанавливает D1 как вход для кнопки Oceania lcd_I2C_27.init (); // инициализируем плату ЖК-дисплея lcd_I2C_27.backlight (); // включаем подсветку платы ЖК-дисплея} void loop () {if (digitalRead (10)) {// если кнопка оформления карты нажата for (int i = 0; i <5; ++ i) {// выполнить следующий цикл 5 раз _R = random (0, 1023); // присвоить переменной R случайное значение от 0 до 1023 _G = random (0, 1023); // присвоить переменной G случайное значение от 0 до 1023 _B = random (0, 1023); // присвоить переменной B случайное значение от 0 до 1023 analogWrite (13, (_R / 4)); // значение R светодиодов RGB для первой группы заменяет и записывает значение переменной от 0 до 255 analogWrite (12, (_G / 4)); // значение G светодиодов RGB для первой группы заменяет и записывает значение переменной от 0 до 255 analogWrite (11, (_B / 4)); // значение B светодиодов RGB для первой группы заменяет и записывает значение переменной от 0 до 255 analogWrite (7, (_R / 4)); // значение R светодиодов RGB для второй группы заменяет и записывает значение переменной от 0 до 255 analogWrite (6, (_G / 4)); // значение G светодиодов RGB для второй группы заменяет и записывает значение переменной от 0 до 255 analogWrite (5, (_B / 4)); // значение B светодиодов RGB для второй группы заменяет и записывает значение переменной от 0 до 255 delay (3000); // ждем 3000 миллисекунд (3 секунды)} // поскольку значения переменных R, G, B определяются в цикле, в цикле будет пять различных цветовых комбинаций} if (digitalRead (9)) {// if нажата кнопка головоломки _SongNumber = random (1, 20); // присваиваем переменной SongNumber случайное значение от 1 до 20 lcd_I2C_27.setCursor (0, 0); // устанавливаем курсор, отсчет начинается с 0 lcd_I2C_27.print (_SongNumber); // выводим значение SongNumber на плату ЖК-дисплея analogWrite (13, 0); // сбрасываем и записываем значение D13 как 0 analogWrite (12, 0); // сбрасываем и записываем значение D12 как 0 analogWrite (11, 0); // сбрасываем и записываем значение D11 как 0 analogWrite (7, 0); // сбрасываем и записываем значение D7 как 0 analogWrite (6, 0); // сбрасываем и записываем значение D6 как 0 analogWrite (5, 0); // сбрасываем и записываем значение D5 как 0 if (_SongNumber> = 1 && _SongNumber = 4 && _SongNumber = 7 && _SongNumber = 11 && _SongNumber = 15 && _SongNumber = 18 && _SongNumber <= 20) {// если значение переменная SongNumber - от 18 до 20 задержки (60000); // ждем 60000 миллисекунд, пока игроки не послушают народную музыку (60 секунд; 1 мин) if (digitalRead (1)) {// если кнопка Oceania нажата analogWrite (13, 0); // AnalogWrite значение D13 как 0 analogWrite (12, 255); // AnalogWrite значение D12 как 255 analogWrite (11, 0); // analogWrite значение D11 как 0 analogWrite (7, 0); // analogWrite значение D7 как 0 analogWrite (6, 255); // AnalogWrite значение D6 255 analogWrite (5, 0); // аналог Запишите значение D5 как 0} // все светодиоды RGB будут светиться зеленым цветом else {// если кнопка Океания не нажата analogWrite (13, 255); // аналог Запишите значение D13 как 255 analogWrite (12, 0); // analogWrite значение D12 как 0 analogWrite (11, 0); // analogWrite значение D11 как 0 analogWrite (7, 255); // аналог Запишите значение D7 как 255 analogWrite (6, 0); // analogWrite значение D6 как 0 analogWrite (5, 0); // аналог Запишите значение D5 как 0} // все светодиоды RGB будут гореть красным цветом} // поскольку правильные ответы для SongNumber 18–20 - это все Океания, этот «цикл if» проверяет, является ли ответ игрока правильным или не lcd_I2C_27.clear (); // очищаем задержку платы ЖК-дисплея (1000); // ждем 1000 миллисекунд (1 секунду)}}

Шаг 6: Завершение работы с устройством

  1. Откройте картонную коробку и вставьте ранее построенные схемы (включая все элементы, например: три макетные платы, плату Arduino, портативное зарядное устройство).
  2. Ссылаясь на код и обозначенные континентальные части в верхней части коробки, вставьте кнопки в каждую из их соответствующих позиций.

    * Вы можете обратиться к боковым примечаниям за кодами, чтобы узнать, какая кнопка пин-кода предназначена для какого континента *

  3. Вставьте две "функциональные кнопки" (карта-деко в D10 и игра-головоломка в D9) в каждую из вырезанных частей с правой стороны коробки.
  4. Установите плату ЖК-дисплея в вырезанную часть с правой стороны коробки.
  5. Откройте коробку и убедитесь, что все провода правильно подключены к платам.
  6. Приклейте основу из деревянной доски к верхней части коробки с помощью двустороннего скотча (убедитесь, что вы правильно выровняли, чтобы пуговицы вошли прямо в вырезанную часть деревянных досок)
  7. Используйте горячий клей, чтобы заполнить небольшие части региона (не основные континенты).

Шаг 7: ВЫПОЛНЕНО !!!!

Для игры-головоломки перейдите по ссылке на список воспроизведения для тестирования!

Рекомендуемые: