Оглавление:

Часы Space Invaders (при ограниченном бюджете!): 6 шагов (с изображениями)
Часы Space Invaders (при ограниченном бюджете!): 6 шагов (с изображениями)

Видео: Часы Space Invaders (при ограниченном бюджете!): 6 шагов (с изображениями)

Видео: Часы Space Invaders (при ограниченном бюджете!): 6 шагов (с изображениями)
Видео: Шокировал всех словами о России • Илон Маск 2024, Июль
Anonim
Image
Image
Собирать детали
Собирать детали

Недавно увидел крутой билд от GeckoDiode и сразу захотелось собрать сам. Учебное пособие - это настольные часы Space Invaders, и я рекомендую вам взглянуть на них после прочтения этого.

Проект был почти полностью построен из деталей, полученных от Adafruit, с корпусом, напечатанным на 3D-принтере, и лицевой панелью, вырезанной лазером. Добавление всего к стоимости сборки становится очень дорогостоящим! (около 100 фунтов стерлингов или больше). Проблема в том, что если у вас нет 3D-принтера, вам придется заплатить за печать своей модели или купить уродливый корпус на ebay, который часто бывает слишком маленьким, слишком узким, слишком коротким или наоборот.

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

Если вам нравится смотреть на странные часы, обратите внимание на мои часы вольтметра в стиле стимпанк, в которых используются те же материалы для сборки корпуса:-)

Шаг 1: Соберите детали

Для создания этого проекта вам понадобится следующее. Имейте в виду, что с материалами для корпуса у вас будет МНОГО остатков, которые вы можете использовать в других проектах (что делает стоимость будущих сборок еще дешевле). Я загрузил PDF-файлы с материалами, которые вам нужны, если вы хотите узнать цену и т. Д. На ebay.

Инструменты (я полагаю, они у вас уже есть)

  • Паяльник
  • Припой
  • Припой насос (если ошиблись и припой нужно удалить)
  • Пистолет для горячего клея
  • Горячие клеевые стержни
  • Ремесленный нож (он же стэнли нож)
  • Линейка / рулетка / штангенциркуль
  • Аккумуляторное сверло + сверла (от 1 мм до 13 мм)
  • Поворотный многофункциональный инструмент с отрезным диском (он же Dremel)
  • Чистящая жидкость, такая как изопропиловый спирт (подойдет и дешевое средство после бритья)
  • Защитная маска (используется при окраске распылением)

Электроника (Стоимость электроники = 13,05 £)

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

  • Кабели Dupont / Jumper - £ 0,99
  • Модуль часов реального времени DS1307 - 0,99 фунта стерлингов (я бы рекомендовал вместо этого приобрести DS3231, если он доступен)
  • Arduino nano + usb-кабель - 2,23 фунта стерлингов
  • Динамик из майлара 8 Ом - £ 0,99
  • Кнопка мгновенного действия SPST - 1,49 фунта стерлингов
  • Бочковая головка 5,5 мм постоянного тока - 1,26 фунта стерлингов
  • Блок питания постоянного тока 5 В, 0,5 А - 2,83 фунта стерлингов.
  • MAX7219 Точечно-матричный дисплей - 3,76 фунта стерлингов

Корпус (Стоимость материалов корпуса = 17,19 £)

  • Квадратная дренажная труба 60 мм - 5,99 фунтов стерлингов (у вас останется МНОГОЕ ИЗДАНИЕ для других проектов)
  • Черная аэрозольная краска - 4,85 фунта стерлингов.
  • Черный ПВХ (пенопласт) - 2,99 £
  • Супер клей - 0,99 фунтов стерлингов.
  • Заглушки 60 мм - 2,37 фунта стерлингов

Общая стоимость = 30,24 фунта стерлингов:-) …….. на сегодняшний день это эквивалент 38 долларов США для читателей со всего мира.

Мне нравится работать с квадратной трубой из ПВХ. Их легко сверлить, резать, красить, и я использовал один для своих часов в стиле стимпанк.

Шаг 2: подготовьте дренажную трубу

Подготовьте дренажную трубу
Подготовьте дренажную трубу

Отметьте, где вы хотите разместить вещи

Это было так просто. Ничего особенного не использовал. Сначала я отрезал 2,5 м длины до разумного размера для моей домашней скамьи (около 30 см) с помощью ножовки. Позже я вырезала его дремелем, чтобы края были четкими и прямыми. Затем я положил компоненты на поверхность трубы и использовал постоянный рынок, чтобы отметить места, которые я хотел просверлить и разрезать. Я обвел внешнюю сторону светодиодной матрицы и с помощью вращающегося мультиинструмента вырезал квадратное отверстие, чтобы она поместилась заподлицо. Я использовал цифровой штангенциркуль, чтобы измерить диаметр кнопки и цилиндра постоянного тока, чтобы вырезать отверстия нужного размера сзади и сверху.

Вырежьте безель

У меня есть много картона из вспененного ПВХ из предыдущих проектов. Они отлично подходят для монтажа схем в корпуса, использования их для смешивания эпоксидной смолы и изготовления других битов и бобов. Возьмите кусок формата A4 или A5 и вырежьте квадратную рамку или рамку 5 мм для обрамления светодиодной матрицы. Это скроет любые шаткие края, которые вы сделали при вырезании квадратного отверстия для матрицы. Для этого я нарисовал небольшой шаблон в Inkscape и распечатал его (файл SVG прилагается). Затем я приклеил его липкой лентой к пенопласту и осторожно обрезал его ножом. Это сложно сделать правильно, рекомендую сначала разрезать внутреннюю, а затем внешнюю.

Нарисуйте все

После того, как все отверстия будут просверлены и прорезаны, удалите все зазубренные края. Очистите поверхности спиртовыми салфетками, чтобы удалить пыль и загрязнения (или дешевым лосьоном после бритья, если у вас нет IPA). Попробуйте распылять в хорошо проветриваемом помещении и по возможности используйте маску. Я сделал это снаружи, положив на пол картон, но это не идеально, даже легкий ветерок может заставить краску лететь обратно вам в лицо. Будьте осторожны и по возможности надевайте защитное снаряжение.

Распылите на трубу, лицевую панель и торцевые крышки одинакового черного цвета, а затем дайте им высохнуть на несколько часов.

Шаг 3: запрограммируйте Arduino

Запрограммируйте Arduino
Запрограммируйте Arduino

Некоторая информация о коде

Благодарим GeckoDiode, поскольку я взял его код и модифицировал его для работы с микросхемой MAX7219. Версия Adafruit использует шину I2C, а MAX использует шину SPI. Для этого я использовал библиотеку MaxMatrix, которую я скачал и установил в Arduino IDE. Если вы хотите узнать больше о MaxMatrix и принципах работы светодиодной матрицы, на сайте HowToMechatronics.com есть очень короткое руководство. Светодиодная матрица состоит исключительно из светодиодов одного цвета, а не имеет многоцветный дисплей.

Одно разочарование, которое у меня было, заключается в том, что нет четких определений того, что это за функции для библиотеки и какие аргументы необходимо передать каждой из них. К счастью, я смог выяснить, что и что делает, методом проб и ошибок, и, в конце концов, было не так уж сложно заставить его работать должным образом. Первое, что нужно понять, это то, что вы должны определить, сколько модулей 8x8 находится в вашей матрице. В моем коде это хранится в виде целого числа, называемого «модулями», например:

"int modules = 4;"

Это КОЛИЧЕСТВО модулей 8x8, которые вы связали вместе на своем дисплее. Не количество светодиодов или какой вывод вы используете для отправки данных. Следующее, что нужно помнить, это то, что если ваш «спрайт» или что-то еще покрывает все четыре матрицы, тогда массив байтов должен быть определен следующим образом:

"byte text_start_bmp = {32, 8,… * некоторые байтовые данные *…};"

Цифры указывают количество строк и столбцов в матрице. В этом случае байт с именем «text_start_bmp» отображается в 32 столбцах и 8 строках. Числа отображаются только на одной матрице 8x8, поэтому минутное число 10 выглядит так:

"byte minute_ten_bmp = {8, 8,… * некоторые байтовые данные *…};"

Захватчики покрывают две матрицы, поэтому байту в байтовых данных будет дано 16, 8.

Еще одна вещь, которая меня поразила, - это расположение данных спрайта. Вы можете попросить Arduino отобразить спрайт в другой позиции X / Y на матрице из исходного положения по умолчанию. Код для нулевой минуты выглядит так:

"matrix.writeSprite (8, 0, minute_zero_bmp);"

Одно число - это корректировка по оси X, а другое - по оси Y. Не могу вспомнить, какой из них какой сейчас, но если вы хотите подтолкнуть спрайт вверх или вниз на 1 строку или столбец, вы просто увеличиваете число на положительное или отрицательное значение. Достаточно просто для матрицы 8x8, но когда ваш спрайт покрывает более одной матрицы, вы должны соответственно установить исходное положение. Спрайт "POP" показан ниже:

"matrix.writeSprite (16, 0, invader_pop_bmp);"

Обратите внимание, что исходное положение - 16, а не 8? Здесь код указывает, что спрайт отображается слева направо в строке / столбце 16. Он считает два дисплея 8x8 одним дисплеем 16x8, даже если их 4! Поэтому важно подумать о том, на скольких дисплеях будет отображаться спрайт, и соответственно определить размер массива байтов каждого спрайта. В противном случае у вас будут очень интересные спрайты!

DS1307 RTC

Хотя DS1307 отлично работает с библиотекой Adafruit RTClib.h, вы не можете вручную установить время, что очень неудобно. Я просто согласился с этим, потому что это означало, что нужно меньше изменять код. DS1307 устанавливает время, используя время и дату, когда код был скомпилирован из времени вашего компьютера. Вместо этого научитесь использовать библиотеку DS3231 и установите ее один раз на одну или две минуты вперед. Кроме того, у него меньше «дрейфа», поэтому он лучше сохраняет время с течением времени. Оба модуля используют шину I2C, и я считаю, что DS3231 можно использовать с RTClib.h, если вы хотите продолжать его использовать.

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

Как только вы будете довольны кодом, загрузите его в Arduino. Я приложил свой скетч Arduino для вашего рассмотрения.

Шаг 4: Сборка электроники

Сборка электроники
Сборка электроники

При загрузке кода я бы рекомендовал сначала собрать электронику с помощью перемычек / перемычек на макетной плате, чтобы при загрузке кода вы знали, что все работает, как задумано. Это позволяет вам решить любые проблемы с отображением спрайтов и т. Д., Прежде чем вы начнете склеивать и наклеивать. В моем коде вы можете видеть, что я использую цифровые контакты 4, 5, 6, 7, 9, но вы можете изменить их при необходимости. Возможно, вам придется припаять кабели к кнопке, разъему постоянного тока и динамику, но большинство из них должны быть легко вставляемыми разъемами.

Как только вы убедитесь, что электроника работает должным образом, вам следует подумать о пайке соединений. Вы можете сделать это с помощью медного картона или вертикального картона, но для небольшого количества компонентов вы можете припаять его непосредственно к контактам Arduino. Он будет выглядеть как крысиное гнездо, но никто не увидит внутри корпуса, когда он будет собран, просто убедитесь, что все металлические части отделены, вы не хотите, чтобы в корпусе что-то закорачивало.

Я заставил кнопку работать, когда пин "mainButton" опущен. Я обнаружил, что Arduino распознает ложное нажатие кнопки, когда на нее устанавливается плавающая электроника. Использование понижающего резистора 10 кОм на кнопке и установка вывода на «INPUT_PULLUP» решила эту проблему для меня.

Прилагается схема в PDF и PNG, поэтому вы знаете, где соединить контакты.

Шаг 5: Установите электронику и крупным планом

Установите электронику и крупным планом
Установите электронику и крупным планом
Установите электронику и крупным планом
Установите электронику и крупным планом

Для своих часов я установил электронику с помощью горячего клея, но будьте осторожны, чтобы не нанести слишком много (электроника не любит слишком долго нагреваться). Я нанесла небольшую каплю суперклея на лицевую панель и прижала ее к передней части. Я закончил корпус, вставив заглушки с каждого конца. Конечно, вы можете приклеить торцевые крышки, чтобы полностью закрыть сборку, но я оставил одну сторону своей открытой, чтобы я мог получить доступ к USB-порту Arduino для сброса даты и времени в будущем.

Шаг 6: наслаждайтесь

Наслаждаться
Наслаждаться
Наслаждаться
Наслаждаться

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

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