Оглавление:
- Шаг 1: Сбор деталей и работы по дереву
- Шаг 2: Акриловые круги
- Шаг 3: пайка
- Шаг 4: Код
- Шаг 5: датское масло
Видео: Часы Ish: 5 шагов (с изображениями)
2024 Автор: John Day | [email protected]. Последнее изменение: 2024-01-30 11:53
Я часто замечаю, что покупаю вещи, которые понятия не имею, что собираюсь делать. Этот проект является результатом покупки кольца с 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: датское масло
Последний и необязательный шаг - нанести на дерево немного датского масла. Мне очень нравится, как он подчеркивает зернистость, а также обеспечивает некоторую защиту от пятен и влаги. Так что я очень рекомендую это.
Вы можете чистить его щеткой, или я просто протираю старую тряпку.
Осталось только подключить его и наслаждаться.
Рекомендуемые:
Часы Vortex: наручные часы с зеркалом бесконечности: 10 шагов (с изображениями)
Часы Vortex: наручные часы с зеркалом бесконечности: целью этого проекта было создание носимой версии зеркальных часов бесконечности. Он использует свои светодиоды RGB для индикации времени, назначая часы, минуты и секунды красным, зеленым и синим светам соответственно и перекрывая эти оттенки t
Фотохромные часы и светящиеся в темноте часы: 12 шагов (с изображениями)
Фотохромные часы и часы, светящиеся в темноте: в этих часах используется специально созданный 4-значный 7-сегментный дисплей, сделанный из ультрафиолетовых светодиодов. Перед дисплеем размещается экран, который состоит либо из фосфоресцирующего («светится в темноте»), либо из фотохромного материала. Загорается кнопка вверху
C51 4-битные электронные часы - деревянные часы: 15 шагов (с изображениями)
C51 4-битные электронные часы - деревянные часы: у меня было немного свободного времени на этих выходных, поэтому я собрал эти 4-битные электронные цифровые часы DIY за 2,40 австралийских долларов, которые я недавно купил на AliExpress
Часы Gixie: самые красивые часы со светящейся трубкой: 4 шага
Часы Gixie: самые красивые часы Glow Tube: мне очень нравятся часы Nixie Tube, но они слишком дороги, я не могу их себе позволить. Итак, я потратил полгода на создание этих часов Gixie Clock. Gixie Clock достигается за счет использования освещения ws2812 для создания акрилового света. Я делаю все возможное, чтобы сделать трубку RGB тоньше
Создайте настоящие часы с боем колокола для вашего ПК и часы с огнетушителем: 3 шага (с изображениями)
Создайте настоящие часы с боем колокола для вашего ПК и часы с огнетушителем: медный колокол, маленькое реле, еще несколько вещей и настоящий колокол могут пробить часы на вашем рабочем столе. Хотя этот проект работает на Windows и Mac OS X тоже, я решил установить Ubuntu Linux на ПК, который я нашел в мусорном ведре, и поработать над этим: у меня никогда не было