Оглавление:

Часы Ish: 5 шагов (с изображениями)
Часы Ish: 5 шагов (с изображениями)

Видео: Часы Ish: 5 шагов (с изображениями)

Видео: Часы Ish: 5 шагов (с изображениями)
Видео: ПРОСТО ТОП ЗА ЭТИ ДЕНЬГИ 🔥 УМНЫЕ ЧАСЫ SAMSUNG GALAXY WATCH 5 2024, Июль
Anonim
Image
Image
Сбор деталей и работы по дереву
Сбор деталей и работы по дереву

Я часто замечаю, что покупаю вещи, которые понятия не имею, что собираюсь делать. Этот проект является результатом покупки кольца с 12 включенными светодиодами WS2812b. У меня не было планов на это, но он выглядел круто в Интернете, поэтому я сунул один в свою тележку, поигрался с ним некоторое время, когда он прибыл, а затем полностью забыл о нем.

Некоторое время спустя я думал о том, чтобы сделать часы, и вспомнил, что они сидят там и ничего не делают. Я думал о покупке второго кольца с 60 светодиодами, чтобы подсчитать минуты, но потом начал думать, как мы / я склонны смотреть на время и округлять его до ближайших 5 минут.

С этим в моем я начал с моим кольцом из 12 светодиодов, чтобы сделать часы ish. Он отображает 1 светодиод за раз в течение 1 секунды, чтобы указать час (синий светодиод), а затем минуты (красный светодиод) с округлением в меньшую сторону.

Шаг 1: Сбор деталей и работы по дереву

Сбор деталей и работы по дереву
Сбор деталей и работы по дереву
Сбор деталей и работы по дереву
Сбор деталей и работы по дереву
Сбор деталей и работы по дереву
Сбор деталей и работы по дереву

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

Этот проект сделан из одной из частей этого поддона. (Я спросил у босса, прежде чем забрать его домой)

Также используются:

  • Светодиодное кольцо ws2812b, 12 пикселей
  • Модуль часов реального времени (RTC) (я использую DS3231 с I2C)
  • Совместимость с Arduino Nano v3.0
  • Акриловый лист (5мм)
  • Цветной провод

Инструменты

  • Электрическая дрель
  • Маршрутизатор
  • Регулируемая плоская насадка по дереву
  • Шлифовальная машинка
  • Ручная пила
  • Паяльник
  • Пистолет для горячего клея
  • Наждачная бумага
  • Датская нефть

Шлифование

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

Разметка и вырезание отверстий

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

Маршрутные и кабельные отверстия

Используя свой маршрутизатор с 12-миллиметровым битом, я проделал выемку в нижней части блока, чтобы скрыть RTC и Arduino. Его глубина около 15 мм и не менее 5 мм от любого края. Я обозначил центр (иш) снизу и просверлил 10-миллиметровым сверлом чуть дальше половины пути, чтобы пропустить провода светодиодов. Затем, используя 5-миллиметровую коронку, я просверлил отверстие от центра выемки для светодиода до 10-миллиметрового отверстия снизу.

Еще одно 4-миллиметровое отверстие на задней панели для подачи питания и использование фрезы меньшего размера, чтобы сделать канал для проводов на задней стороне светодиодного кольца, и работа с деревом завершена.

Шаг 2: Акриловые круги

Акриловые круги
Акриловые круги
Акриловые круги
Акриловые круги
Акриловые круги
Акриловые круги

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

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

Шаг 3: пайка

Пайка
Пайка
Пайка
Пайка
Пайка
Пайка
Пайка
Пайка

Мне нравится использовать цветовую систему для своих проводов, в этом случае я выбрал:

  • Красный для питания (5 В)
  • Белый для земли
  • Желтый для данных
  • Зеленый для часов

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

Затем я припаял 4 провода к RTC, используя систему, описанную выше. Чтобы все было немного аккуратнее, я решил использовать питание для RTC от Arduino. Затем подключил все к Arduino и припаял 1 провод для питания и еще один для заземления к Arduino.

RTC

  • SCL (часы) к аналоговому выводу 5
  • SDA (данные) к аналоговому выводу 4
  • VCC до 5 В
  • GND к любому GND на Arduino

Светодиодное кольцо

Din к цифровому контакту 6

У меня был старый USB-кабель, поэтому я решил использовать его для питания часов. Я отрезал конец, который обычно соединялся бы с чем-нибудь, и протолкнул его через отверстие в спине. Затем зачистите и обработайте концы перед тем, как припаять VCC к Arduino, а светодиодное кольцо - к положительной стороне, а заземление - от Arduino, а светодиод - к земле. Я немного термоусадку позже, и это выглядело хорошо, Пистолет для горячего клея вернулся, чтобы все удерживать. Я решил оставить Arduino с достаточным запасом хода, чтобы я смог получить доступ к USB-порту для программирования в будущем, но не настолько, чтобы я мог выпасть.

Шаг 4: Код

Теперь вы можете загрузить этот код в Arduino.

Если RTC не работает, этот код будет устанавливать время в зависимости от того, когда код был скомпилирован, поэтому обязательно просто нажмите кнопку загрузки и не проверяйте.

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

www.instructables.com/id/Setting-the-DS130…

Большую часть этого кода я позаимствовал из библиотеки Adafruit NeoPixel, часть - из библиотеки RTC, которую нашел, а часть создал сам.

// включаем код библиотеки: #include

#включают

#включают

// определяем контакты

#define PIN 6

#define BRIGHTNESS 20 // установить максимальную яркость

#define r 5

#define g 5

#define b 5

RTC_DS3231 rtc; // Устанавливаем объект часов

Adafruit_NeoPixel strip = Adafruit_NeoPixel (12, PIN, NEO_GRB + NEO_KHZ800); // снимаем объект

void setup () {

Wire.begin (); // Начинаем I2C

rtc.begin (); // начинаем часы

Serial.begin (9600);

// устанавливаем режимы вывода

pinMode (PIN, ВЫХОД);

if (rtc.lostPower ()) {

Serial.println («RTC потерял питание, давайте выставим время!»);

// следующая строка устанавливает RTC на дату и время компиляции этого скетча

rtc.adjust (DateTime (F (_ DATE_), F (_ TIME_)));

// Эта строка устанавливает RTC с явной датой и временем, например, чтобы установить

// 21 января 2014 г. в 3 часа ночи вы должны позвонить:

// rtc.adjust (DateTime (2014, 1, 21, 3, 0, 0));

}

strip.begin ();

strip.show (); // Инициализируем все пиксели в положение "выключено"

DateTime theTime = rtc.now (); // учитывает летнее время

байт secondval = theTime.second (); // получаем секунды

byte minuteval = theTime.minute (); // получаем минуты

int hourval = theTime.hour ();

точка (strip. Color (0, g, 0), 50);

}

void loop () {

// получаем время

DateTime theTime = rtc.now (); // учитывает DST

int minuteval = theTime.minute (); // получаем минуты

int hourval = theTime.hour (); // получаем часы

int secondval = theTime.second ();

if (minuteval 0) {

strip.setPixelColor (0, г, 0, 0);

strip.show ();}

else if (minuteval <= 9) {

strip.setPixelColor (1, r, 0, 0);

strip.show ();}

else if (minuteval <= 14) {

strip.setPixelColor (2, r, 0, 0);

strip.show ();}

else if (minuteval <= 19) {

strip.setPixelColor (3, r, 0, 0);

strip.show ();}

else if (minuteval <= 24) {

strip.setPixelColor (4, r, 0, 0);

strip.show ();}

else if (minuteval <= 29) {

strip.setPixelColor (5, r, 0, 0);

strip.show ();}

else if (minuteval <= 34) {

strip.setPixelColor (6, r, 0, 0);

strip.show ();}

else if (minuteval <= 39) {

strip.setPixelColor (7, r, 0, 0);

strip.show ();}

else if (minuteval <= 44) {

strip.setPixelColor (8, r, 0, 0);

strip.show ();}

else if (minuteval <= 49) {

strip.setPixelColor (9, r, 0, 0);

strip.show ();}

else if (minuteval <= 54) {

strip.setPixelColor (10, r, 0, 0);

strip.show ();}

else if (minuteval <= 59) {

strip.setPixelColor (11, r, 0, 0);

strip.show ();}

задержка (1000);

for (int i = 0; i <12; i ++) {

strip.setPixelColor (i, 0, 0, 0);

strip.show ();

}

if (hourval == 0) {

strip.setPixelColor (0, 0, 0, b);

strip.show ();}

else if (hourval == 1) {

strip.setPixelColor (1, 0, 0, b);

strip.show ();}

else if (hourval == 2) {

strip.setPixelColor (2, 0, 0, b);

strip.show ();}

else if (hourval == 3) {

strip.setPixelColor (3, 0, 0, b);

strip.show ();}

else if (hourval == 4) {

strip.setPixelColor (4, 0, 0, b);

strip.show ();}

else if (hourval == 5) {

strip.setPixelColor (5, 0, 0, b);

strip.show ();}

else if (hourval == 6) {

strip.setPixelColor (6, 0, 0, b);

strip.show ();}

else if (hourval == 7) {

strip.setPixelColor (7, 0, 0, b);

strip.show ();}

else if (hourval == 8) {

strip.setPixelColor (8, 0, 0, b);

strip.show ();}

else if (hourval == 9) {

strip.setPixelColor (9, 0, 0, b);

strip.show ();}

else if (hourval == 10) {

strip.setPixelColor (10, 0, 0, b);

strip.show ();}

else if (hourval == 11) {

strip.setPixelColor (11, 0, 0, b);

strip.show ();}

else if (hourval == 12) {

strip.setPixelColor (0, 0, 0, b);

strip.show ();}

else if (hourval == 13) {

strip.setPixelColor (1, 0, 0, b);

strip.show ();}

else if (hourval == 14) {

strip.setPixelColor (2, 0, 0, b);

strip.show ();}

else if (hourval == 15) {

strip.setPixelColor (3, 0, 0, b);

strip.show ();}

else if (hourval == 16) {

strip.setPixelColor (4, 0, 0, b);

strip.show ();}

else if (hourval == 17) {

strip.setPixelColor (5, 0, 0, б);

strip.show ();}

else if (hourval == 18) {

strip.setPixelColor (6, 0, 0, b);

strip.show ();}

else if (hourval == 19) {

strip.setPixelColor (7, 0, 0, b);

strip.show ();}

else if (hourval == 20) {

strip.setPixelColor (8, 0, 0, b);

strip.show ();}

else if (hourval == 21) {

strip.setPixelColor (9, 0, 0, b);

strip.show ();}

else if (hourval == 22) {

strip.setPixelColor (10, 0, 0, b);

strip.show ();}

else if (hourval == 23) {

strip.setPixelColor (11, 0, 0, б);

strip.show ();}

задержка (1000);

for (int i = 0; i <12; i ++) {

strip.setPixelColor (i, 0, 0, 0);

strip.show ();

}

// для последовательной отладки

Serial.print (часовой формат, DEC);

Serial.print (':');

Serial.print (минутное значение, DEC);

Serial.print (':');

Serial.println (secondval, DEC);

}

void dot (uint32_t c, uint8_t wait) {

for (int j = 0; j <3; j ++) {

for (int i = 0; i <12; i ++) {

strip.setPixelColor (i, c);

strip.show ();

задержка (ждать);

for (int i = 0; i <12; i ++) {

strip.setPixelColor (i, 0, 0, 0);

strip.show ();}

}

}

}

Шаг 5: датское масло

Датская нефть
Датская нефть
Датская нефть
Датская нефть
Датская нефть
Датская нефть
Датская нефть
Датская нефть

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

Вы можете чистить его щеткой, или я просто протираю старую тряпку.

Осталось только подключить его и наслаждаться.

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