Съдържание:

Криптичен стенен часовник: 27 стъпки (със снимки)
Криптичен стенен часовник: 27 стъпки (със снимки)

Видео: Криптичен стенен часовник: 27 стъпки (със снимки)

Видео: Криптичен стенен часовник: 27 стъпки (със снимки)
Видео: 27 января 2023 г. Часы настенные с боем антиквариат маятник гири бронзовые ангелы 2024, Юли
Anonim
Криптичен стенен часовник
Криптичен стенен часовник

Времето е нещо, което не можем да контролираме. Това се случва със същата скорост, ако спим, будни, отегчени или ангажирани. С текущите събития е важно да запомните, че времето ще мине. Докато чакаме да мине време, защо да не направим нещо, което прави времето по -привлекателно за гледане.

Този часовник е вдъхновен от Mengenlehreuhr, намерен в Берлин, Германия и може да се чете по същия начин. Точно като оригинала, той показва времето чрез осветени, цветни полета.

Той разполага с 96 светодиода, които осветяват 52 'цифрени' области. За разлика от оригинала, той се отличава с кръгъл дизайн, който включва секунден пръстен, вместо хоризонтална лента. Външната лента показва секунди заедно със средната точка, следващите две ленти показват минути, като крайните вътрешни ленти показват часове.

Ако имате малко скрап материал и допълнително време в ръцете си, защо да не го използвате, за да направите нещо, което да го покаже!

Има няколко промени, които бих направил в този проект, ако го направя отново. Първо бих боядисал рамката и LED табката в бяло, вместо в черно. Това би отразило повече светлина през големия обектив отпред. Аз също бих изчакал до края, за да вмъкна светодиодите. Трябваше ми дъската да бъде завършена по -рано, за да може да ми помогне с писането на кода. След като това се отклони, нека първо се научим как да го четем!

Образ
Образ

Стъпка 1: Как да четете часовника

Часовникът се чете от вътрешните кръгове към външните. Вътрешният пръстен от четири полета обозначава по пет пълни часа, заедно с втория пръстен, също от четири полета, които означават по един пълен час всяко, показвайки стойността на часа в 24-часов формат. Третият пръстен се състои от единадесет полета, които означават по пет пълни минути всяко, следващият пръстен има още четири полета, които маркират по една пълна минута. Най-накрая външният пръстен от 29 полета означава четни секунди, като светлината в центъра мига, за да обозначи нечетни (когато свети) или четни (когато не свети) секунди.

Образ
Образ

Например горното изображение има 1 от петчасовите цифри, 3 от едночасовите цифри, 8 от петминутните цифри, 4 от едноминутните цифри и 23 от двете втори цифри и средната втора цифра свети.

1x5 + 3x1: 8x5 + 4x1: 23x2 + 1x1 = 8:44:47 = 8:44:47 AM

Образ
Образ

Посоченото по -горе време е: 3x5 + 0x1: 3x5 + 2x1: 5x2 + 1x1 = 15:17:11 = 15:17:11 PM

Образ
Образ

Посоченото по -горе време е: 3x5 + 2x1: 3x5 + 3x1: 16x2 + 1x1 = 17:18:33 = 17:18:33 PM

Стъпка 2: Инструменти и материали

Инструменти и материали
Инструменти и материали
Инструменти и материали
Инструменти и материали
Инструменти и материали
Инструменти и материали

Електронни материали:

  • Arduino Nano
  • Часовник в реално време
  • Адресируеми светодиоди
  • Щепсел
  • Захранващ кабел
  • USB захранващ щепсел
  • Резистор, зависим от светлината и балансиран резистор (ако искате да затъмнява през нощта)
  • Тел

Дървообработващи материали:

  • 3/4 инча Шперплат
  • Тънък шперплат
  • Скрап (използвах 2x4s, но твърдата дървесина също би работила)
  • Боядисване
  • Акрил 30 x 36 инча (лист в местния магазин за подобряване на дома)
  • Оцветяване на прозореца (опитайте да източник локално. Ако няма налични, тук можете да намерите достатъчно голям лист)
  • Течност за оцветяване на прозорци (използвах вода, смесена с бебешки шампоан в бутилка със спрей)
  • Windex
  • Месарска хартия
  • Винтове
  • Лепило за пръскане
  • Лепило
  • Лепило

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

  • Владетел
  • Xacto нож
  • Лента
  • Двустранна касета
  • Компас
  • Джиг за рязане на кръг
  • Мозайката
  • Банциг
  • Шпиндел шпиндел
  • Палм Сандър
  • Дискова шлифовъчна машина
  • Таблица на рутера
  • Awl
  • Свредло и свредла/шофьори
  • Щипки
  • Поялник
  • Припой
  • Машини за сваляне на тел

Стъпка 3: Съберете шаблони

Сглобяване на шаблони
Сглобяване на шаблони
Сглобяване на шаблони
Сглобяване на шаблони

За големия шаблон го отпечатайте, като използвате настройката за плакат в Adobe Reader. Отрежете полетата за всяка хартия и залепете заедно. Вертикалните, хоризонталните и диагоналните линии ще помогнат за подреждането на шаблона. Всички страници имат малки номера, за да ги поддържат организирани, ако се развалят.

Всички необходими шаблони и файлове се намират в Стъпка 26.

Стъпка 4: Грубо изрязани кръгове

Грубо изрязани кръгове
Грубо изрязани кръгове
Грубо изрязани кръгове
Грубо изрязани кръгове

Разполагайки двата шаблона върху лист от 3/4 инча шперплат, нарисувайте кръгове малко по -големи от необходимото с компас. С помощта на мозайката изрежете грубата форма.

Стъпка 5: Изрежете до размер

Изрежете по размер
Изрежете по размер
Изрежете по размер
Изрежете по размер

Използвайки приспособление за рязане на кръг върху лентата, изрежете кръговете до крайния размер.

Стъпка 6: Приложете шаблон

Прилагане на шаблон
Прилагане на шаблон
Прилагане на шаблон
Прилагане на шаблон
Прилагане на шаблон
Прилагане на шаблон

С помощта на лепило за пръскане нанесете всеки шаблон върху кръг. Поставете пирон в центъра на шаблона, за да го центрирате върху кръга.

Стъпка 7: Изрежете шаблон

Изрязване на шаблон
Изрязване на шаблон
Изрязване на шаблон
Изрязване на шаблон
Изрязване на шаблон
Изрязване на шаблон

С помощта на мозайката изрежете всеки отделен прозорец на шаблона. Ако имате достъп до CNC, тази стъпка би била много по -лесна! Пробих дупка във всеки прозорец, за да помогна в този процес. Когато започнете да режете, шаблонът може да започне да се отлепя. Ако това се случи, можете да го закрепите на място с малки парчета лента.

Стъпка 8: Шлайфане

Шлайфане
Шлайфане
Шлайфане
Шлайфане
Шлайфане
Шлайфане

С помощта на шкурка, нанесена върху пръчка, шпиндел с шпиндел и шлифовъчна машина за палми, шлайфайте и изгладете грубия разрез, оставен от мозайката.

Стъпка 9: Пробийте държачите за светодиоди

Свредла за държачи за светодиоди
Свредла за държачи за светодиоди
Свредла за светодиоди
Свредла за светодиоди
Свредла за държачи за светодиоди
Свредла за държачи за светодиоди
Свредла за държачи за светодиоди
Свредла за държачи за светодиоди

Маркирайте центъра на всеки отвор с шило и пробийте отвори за просвет за светодиодите. Използвах ръководство, за да помогна да се държи бормашината перпендикулярно на детайла ми и дъска, за да не издуха дървото на гърба.

Стъпка 10: Комбинирайте дъските

Комбинирайте дъски
Комбинирайте дъски
Комбинирайте дъски
Комбинирайте дъски
Комбинирайте дъски
Комбинирайте дъски

Разменете предната и задната дъски и проследете частите на рамката на гърба на LED платката. Преместете рамката обратно в предната част на LED платката и пробийте дупки и завийте парчетата заедно.

Вижте бележките към изображението за повече информация.

Стъпка 11: Поставете светодиоди

Поставете светодиоди
Поставете светодиоди
Поставете светодиоди
Поставете светодиоди

Натиснете светодиодите през задната част на LED платката. Дупките трябва да бъдат разположени точно толкова, че да не се налага да отрязвате проводници, освен да се движите от един кръг към следващия.

Отзад светодиодите започват в центъра и след това вървят обратно на часовниковата стрелка, след което нагоре до следващия пръстен.

Стъпка 12: Прикрепете сегмент 1

Прикрепете сегмент 1
Прикрепете сегмент 1
Прикрепете сегмент 1
Прикрепете сегмент 1
Прикрепете сегмент 1
Прикрепете сегмент 1

Изрежете 9 сегмента от шаблона "Сегмент 1", прикрепен към шперплат 3/4 инча (намерен в стъпка 26). Прикрепете към LED платката с лепило и скоби. Ако сте нетърпеливи, можете също да използвате пирони, за да го закрепите на място.

След като изсъхне, шлайфайте ръба с вода с дискова шлифовъчна машина.

Стъпка 13: Боядисване

Боядисване
Боядисване
Боядисване
Боядисване
Боядисване
Боядисване
Боядисване
Боядисване

Спрей боя както LED таблото, така и рамката. Ако правех това отново, щях да избера да използвам бяла боя вместо черна, тъй като тя ще бъде по -отразяваща през обектива.

Стъпка 14: Сегмент 2

Сегмент 2
Сегмент 2
Сегмент 2
Сегмент 2
Сегмент 2
Сегмент 2

Изрежете 9 сегмента от шаблона "Сегмент 2", прикрепен от дърво с дебелина 2 3/8 инча (намерено в стъпка 26). Използвах няколко скрапа 2x4 от целия магазин. На сухо поставете сегментите и се уверете, че приляга добре с скоба за лента. Ако всичко се провери, покрийте външната страна с бояджийска лента, за да не залепне лепилото и оставете да изсъхне поне един час, преди да преминете към следващата стъпка.

Стъпка 15: Сегмент 3

Сегмент 3
Сегмент 3
Сегмент 3
Сегмент 3
Сегмент 3
Сегмент 3

Изрежете 9 сегмента от шаблона "Сегмент 3", прикрепен от 3/8 инча дебела дървесина (намерена в стъпка 26). Залепете ги така, че шевовете от сегмент 2 да са в средата на всеки сегмент 3. Това ще укрепи пръстена.

Стъпка 16: Гладък пръстен и боя

Гладък пръстен и боя
Гладък пръстен и боя
Гладък пръстен и боя
Гладък пръстен и боя

Направих персонализиран шлифовъчен блок от изрязаното парче на големия пръстен. Шлайфайте вътрешната и външната страна на пръстена и запълнете всички пукнатини, които може да са се появили по време на процеса на залепване.

След като изгладите, нанесете няколко слоя черна боя и прозрачен слой.

Стъпка 17: Изрежете акрил

Изрежете акрил
Изрежете акрил
Изрежете акрил
Изрежете акрил
Изрежете акрил
Изрежете акрил
Изрежете акрил
Изрежете акрил

Нарежете акрила на квадрат с размери 30 x 30 инча и маркирайте центъра. Прикрепете акрила с двустранна лента. С помощта на фрезово фрезоване, отстранете излишния акрил

Стъпка 18: Нанесете Тониране на прозореца

Прилагане на нюанса на прозореца
Прилагане на нюанса на прозореца
Прилагане на нюанса на прозореца
Прилагане на нюанса на прозореца
Прилагане на нюанса на прозореца
Прилагане на нюанса на прозореца

В среда без прах отстранете защитното фолио от акрила. Нанесете спрей и отстранете подложката от нюанса на прозореца. Нанесете оцветяване на прозореца с лепкава страна надолу. С помощта на чистачка или кредитна карта изцедете цялата течност изпод тона на прозореца. След като всички мехурчета и бръчки са отстранени, отрежете излишния нюанс на прозореца с остър нож.

Стъпка 19: Прикрепете обезмаслителя

Прикрепете обезвъздушителя
Прикрепете обезвъздушителя
Прикрепете обезвъздушителя
Прикрепете обезвъздушителя

Използвах голямо парче месарска хартия, за да действам като обезмаслител. Поставете хартията върху равна повърхност. Покрийте лицето на рамката с лепило от лепилна пръчка. Преди лепилото да изсъхне, поставете предната част на часовника с лицето надолу върху хартията и грубо изрежете излишъка. След като изсъхне, използвайте остър нож за подстригване.

Стъпка 20: Нанесете изолация

Нанесете изолация
Нанесете изолация

Използвах електрическа лента, за да отделя захранването и линиите за данни отделно.

Стъпка 21: Сглобете

Съберете
Съберете
Съберете
Съберете
Съберете
Съберете

Отстранете другия защитен слой от акрила. Поставете акрила в пръстена с тониране на прозореца нагоре. Плъзнете останалата част от часовника в пръстена. Използвайте скоба, за да приложите лек натиск, докато се пробие дупка през пръстена и в LED платката. Това трябва да е приблизително 1 1/8 инча отзад. Внимавайте да не пробиете светодиод. Завийте винт с глава на фермата в отвора. Повторете за общо осем винта по периметъра на часовника.

Стъпка 22: Прикрепете опорни точки

Прикрепете точки за закрепване
Прикрепете точки за закрепване

Залепете анкерни точки към задната част на часовника, към които да се прикрепи задният капак. Те са с дебелина 3/4 инча и дължина около 2 инча.

Стъпка 23: Отвори за сензор за мощност и LDR сензор

Пробивни мощности и LDR сензорни отвори
Пробивни мощности и LDR сензорни отвори

Пробийте отвор за захранване през долната част на часовника за захранващия щепсел и отвор в горната част за сензора за зависим от светлината резистор (LDR).

Стъпка 24: Инсталирайте държача за електроника

Инсталирайте държача за електроника
Инсталирайте държача за електроника
Инсталирайте държача за електроника
Инсталирайте държача за електроника

Инсталирайте 3D отпечатания държач за RTC и Arduino Nano. Свържете цялата електроника, както е показано на схемата.

Стъпка 25: Заден капак

Задна корица
Задна корица
Задна корица
Задна корица
Задна корица
Задна корица
Задна корица
Задна корица

Изрежете заден капак от тънък шперплат, малко по -малък от външната страна на часовника. Пробийте дупки в точките на закрепване. Намерете центъра на гърба и измерете 8 инча във всяка посока, за да изрежете ключалки (стандартни 16 в центровете за шипове в САЩ). Пробих основната дупка, малко по -голяма от главата на винтовете, които ще използвам, и пробих дупката по -голяма в една посока. Боядисайте в черно и прикрепете капака на място.

Стъпка 26: Код и файлове

Отново, аз съм сравнително нов в използването на много от библиотеките на Arduino, използвани тук, така че съм сигурен, че има по -добри начини да ги използвам.

Написах кода, който да се актуализира лесно въз основа на това колко светодиоди използвате, ако проектът е увеличен или намален. Всичко, което трябва да направите, е да актуализирате началната и крайната позиция на светодиода, както и колко светодиода са част от всяка цифра.

Добавих няколко анимации, които се възпроизвеждат при стартиране, както и в час. Те са sudo random въз основа на генератора на случайни числа, който има на борда.

Можете да настроите часовника да преминава през цветовете или да остане неподвижен в едно. Можете дори да маркирате цифрата на индикатора, за да помогнете за четене на времето, както е показано във въведението.

Не се колебайте да редактирате и променяте кода, както желаете.

#include "RTClib.h"

#include #define NUM_LEDS 96 #define DATA_PIN 3 #define LDR A0 RTC_DS1307 rtc; логическо времеChange = false; boolean printTime = false; // Задайте на true, ако искате да видите изход в конзолата. Полезно за отстраняване на грешки. boolean redDown = вярно; boolean greenDown = false; boolean blueDown = false; булев цикъл = невярно; // Задайте true, ако искате цветовете на часовника да циклират boolean highlight = true; // Задайте true, за да маркирате „последната цифра“. // Местоположения на началото и края на всяка група от време const int SECOND_1_LOCATION = 0; const int HOUR_2_START_LOCATION = 1; const int HOUR_2_END_LOCATION = 8; const int HOUR_1_START_LOCATION = 9; const int HOUR_1_END_LOCATION = 20; const int MINUTE_2_START_LOCATION = 21; const int MINUTE_2_END_LOCATION = 42; const int MINUTE_1_START_LOCATION = 43; const int MINUTE_1_END_LOCATION = 66; const int SECOND_2_START_LOCATION = 67; const int SECOND_2_END_LOCATION = 95; const int LEDS_PER_HOUR_1 = 3; const int LEDS_PER_HOUR_2 = 2; const int LEDS_PER_MINUTE_1 = 6; const int LEDS_PER_MINUTE_2 = 2; // Множители, използвани за разделяне на времето const int MULTIPLIER_FIVE = 5; const int MULTIPLIER_TWO = 2; const int START_UP_DELAY = 1; // Променете това, за да ускорите или забавите стартиращата анимация const int CYCLE_SPEED = 1; // Променете скоростта тук за цикъла на промяна на цвета (трябва да е над 1) // Декларирайте променливите int lastSecond = 0; int currentHour = 0; int currentMinute = 0; int currentSecond = 0; int час1 = 0; int час2 = 0; int minute1 = 0; int минута2 = 0; int second1 = 0; int second2 = 0; int cycleCount = 1; float fadeValue = 255; float fadeCheck = 255; uint8_t ярък = 255; int numberOfAnimations = 5; int случайност = 0; // Задаване на цветове uint8_t red = 0; uint8_t зелено = 0; uint8_t синьо = 255; uint8_t highlight_red = 60; uint8_t highlight_green = 60; uint8_t highlight_blue = 255; // Определяме масива от светодиоди CRGB светодиоди [NUM_LEDS]; void setup () {Serial.begin (19200); FastLED.addLeds (светодиоди, NUM_LEDS); LEDS.setBrightness (ярко); FastLED.clear (); rtc.begin (); // Декомментирайте реда по -долу, за да зададете час. // rtc.adjust (DateTime (2020, 2, 19, 23, 59, 50)); // rtc.adjust (DateTime (F (_ DATE_), F (_ TIME_))); // Анимация при стартиране анимация (случайност); } void loop () {// Вземете час DateTime сега = rtc.now (); currentHour = now.hour (); currentMinute = now.minute (); currentSecond = now.second (); timeChange = false; // Използвайте ги за ръчно задаване на време без RTC. Полезно за отстраняване на грешки // currentHour = 5; // currentMinute = 30; // currentSecond = 30; // Нулиране на всички битове до нула за (int i = SECOND_1_LOCATION; i <= SECOND_2_END_LOCATION; i ++) {leds = CRGB:: Black; } // Задаване на час // Задаване на час 1 час1 = (currentHour % MULTIPLIER_FIVE) * LEDS_PER_HOUR_1; // Това ще отчита общите светодиоди на единицата за време, за да светне (int i = HOUR_1_START_LOCATION; i 0) // && час1 <12) {for (int i = (HOUR_1_START_LOCATION + час1 - 1); i> = (HOUR_1_START_LOCATION + час1-LEDS_PER_HOUR_1); i--) {leds = CRGB (highlight_red, highlight_green, highlight_blue); }} // Задайте час 2 часа2 = (currentHour / MULTIPLIER_FIVE) * LEDS_PER_HOUR_2; // Това ще отчита общите светодиоди на часовата единица, която да светне за (int i = HOUR_2_START_LOCATION; i 0) // && час2 <8) {for (int i = (HOUR_2_START_LOCATION + час2 - 1); i> = (HOUR_2_START_LOCATION + час2-LEDS_PER_HOUR_2); i--) {leds = CRGB (highlight_red, highlight_green, highlight_blue); }} // Задаване на минута // Задаване на минута 1 минута1 = (currentMinute % MULTIPLIER_FIVE) * LEDS_PER_MINUTE_1; // Това ще отчита общите светодиоди на единицата за време, за да светне (int i = MINUTE_1_START_LOCATION; i 0) // && minute1 <24) {for (int i = (MINUTE_1_START_LOCATION + minute1 - 1); i> = (MINUTE_1_START_LOCATION + минута1-LEDS_PER_MINUTE_1); i--) {LED = CRGB (highlight_red, highlight_green, highlight_blue); }} // Задайте минута 2 минути2 = (currentMinute / MULTIPLIER_FIVE) * LEDS_PER_MINUTE_2; // Това ще преброи общите светодиоди на единицата за време, за да светне (int i = MINUTE_2_START_LOCATION; i 0) // && minute2 <22) {for (int i = (MINUTE_2_START_LOCATION + minute2 - 1); i> = (MINUTE_2_START_LOCATION + минута2-LEDS_PER_MINUTE_2); i--) {LED = CRGB (highlight_red, highlight_green, highlight_blue); }} // Задайте второ if (currentSecond! = LastSecond) {timeChange = true; } // Задайте втори 1 секунда1 = currentSecond % MULTIPLIER_TWO; if (second1 == 1) {leds [SECOND_1_LOCATION] = CRGB (червено, зелено, синьо); } // Задайте втори 2 second2 = currentSecond / MULTIPLIER_TWO; for (int i = SECOND_2_START_LOCATION; i 0) // && second2 <29) {for (int i = (SECOND_2_START_LOCATION + second2 - 1); i> = (SECOND_2_START_LOCATION + second2 - 1); i--) {светодиоди = CRGB (highlight_red, highlight_green, highlight_blue); }} lastSecond = currentSecond; // Пребройте циклите на програмата и извикайте функцията setColor, за да промените цвета на светодиодите някога CYCLE_SPEED цикли. if (цикълCount ярък) // {// fadeValue = ярък; //} // иначе if (fadeValue <150) // {// fadeValue = 150; //} // LEDS.setBrightness (fadeValue); FastLED.show (); // Печат на текущото време в конзолата if (timeChange == true && printTime == true) {printToConsole (); }} // Функцията за анимация добавете още анимации тук, както желаете void animate (int select) {if (select == 0) {for (int i = SECOND_1_LOCATION; i <= SECOND_2_END_LOCATION; i ++) {leds = CRGB (червено, зелено, синьо); FastLED.show (); забавяне (START_UP_DELAY); } за (int i = SECOND_2_END_LOCATION; i> = SECOND_1_LOCATION; i--) {светодиоди = CRGB:: Черен; FastLED.show (); забавяне (START_UP_DELAY); }} else if (select == 1) {for (int i = 0; i <250; i ++) {int light = random (95); светодиоди [светлина] = CRGB (червено, зелено, синьо); FastLED.show (); }} иначе ако (изберете == 2) {leds [0] = CRGB (червено, зелено, синьо); за (int i = 0; i <= SECOND_2_END_LOCATION - SECOND_2_START_LOCATION; i ++) {светодиоди [SECOND_2_START_LOCATION+i] = CRGB (червено, зелено, синьо); ако (i <= (MINUTE_1_END_LOCATION - MINUTE_1_START_LOCATION)) {светодиоди [MINUTE_1_START_LOCATION + i] = CRGB (червено, зелено, синьо); } ако (i <= (MINUTE_2_END_LOCATION - MINUTE_2_START_LOCATION)) {светодиоди [MINUTE_2_START_LOCATION + i] = CRGB (червено, зелено, синьо); } ако (i <= (HOUR_1_END_LOCATION - HOUR_1_START_LOCATION)) {светодиоди [HOUR_1_START_LOCATION + i] = CRGB (червено, зелено, синьо); } ако (i <= (HOUR_2_END_LOCATION - HOUR_2_START_LOCATION)) {светодиоди [HOUR_2_START_LOCATION + i] = CRGB (червено, зелено, синьо); } забавяне (34); FastLED.show (); }} иначе ако (изберете == 3) {leds [0] = CRGB (червено, зелено, синьо); за (int i = 0; i <= SECOND_2_END_LOCATION - SECOND_2_START_LOCATION; i ++) {светодиоди [SECOND_2_END_LOCATION - i] = CRGB (червено, зелено, синьо); ако (i <= (MINUTE_1_END_LOCATION - MINUTE_1_START_LOCATION)) {светодиоди [MINUTE_1_END_LOCATION - i] = CRGB (червено, зелено, синьо); } ако (i <= (MINUTE_2_END_LOCATION - MINUTE_2_START_LOCATION)) {светодиоди [MINUTE_2_END_LOCATION - i] = CRGB (червено, зелено, синьо); } ако (i <= (HOUR_1_END_LOCATION - HOUR_1_START_LOCATION)) {светодиоди [HOUR_1_END_LOCATION - i] = CRGB (червено, зелено, синьо); } ако (i <= (HOUR_2_END_LOCATION - HOUR_2_START_LOCATION)) {светодиоди [HOUR_2_END_LOCATION - i] = CRGB (червено, зелено,син); } забавяне (34); FastLED.show (); }} иначе ако (изберете == 4) {for (int i = SECOND_2_END_LOCATION; i> = SECOND_1_LOCATION; i--) {leds = CRGB:: Black; } FastLED.show (); забавяне (200); за (int i = SECOND_1_LOCATION; i <= SECOND_2_END_LOCATION; i ++) {светодиоди = CRGB (червено, зелено, синьо); } FastLED.show (); забавяне (200); за (int i = SECOND_2_END_LOCATION; i> = SECOND_1_LOCATION; i--) {светодиоди = CRGB:: Черен; } FastLED.show (); забавяне (200); за (int i = SECOND_1_LOCATION; i <= SECOND_2_END_LOCATION; i ++) {светодиоди = CRGB (червено, зелено, синьо); } FastLED.show (); забавяне (200); за (int i = SECOND_2_END_LOCATION; i> = SECOND_1_LOCATION; i--) {светодиоди = CRGB:: Черен; } FastLED.show (); забавяне (200); }} // Цветова циклична функция void setColor (булев цикълColors) {if (cycleColors == true) {if (redDown == true && greenDown == false) {red ++; зелено-; ако (зелено <= 0) {червено = 255; redDown = невярно; greenDown = вярно; }} иначе ако (greenDown == true && blueDown == false) {green ++; син--; if (синьо <= 0) {зелено = 255; greenDown = невярно; blueDown = вярно; }} иначе ако (blueDown == true && redDown == false) {blue ++; червен--; ако (червено <= 0) {синьо = 255; blueDown = false; redDown = вярно; }}} else {red = 0; зелено = 0; синьо = 255; }} // Печат на функция за сериен монитор void printToConsole () {Serial.print ("Текущо време:"); Serial.print (currentHour); Serial.print (":"); Serial.print (currentMinute); Serial.print (":"); Serial.println (currentSecond); Serial.println (""); за (int i = HOUR_2_START_LOCATION; i <= HOUR_2_END_LOCATION; i ++) {Serial.print (светодиоди ); if (i % 2 == 0) {Serial.print (""); }} Serial.println (""); за (int i = HOUR_1_START_LOCATION; i <= HOUR_1_END_LOCATION; i ++) {Serial.print (светодиоди ); if (((i - HOUR_1_START_LOCATION + 1) % 3) == 0) {Serial.print (""); }} Serial.println (""); за (int i = MINUTE_2_START_LOCATION; i <= MINUTE_2_END_LOCATION; i ++) {Serial.print (светодиоди ); if (((i - MINUTE_2_START_LOCATION) + 1) % 2 == 0) {Serial.print (""); }} Serial.println (""); за (int i = MINUTE_1_START_LOCATION; i <= MINUTE_1_END_LOCATION; i ++) {Serial.print (светодиоди ); if (((i - MINUTE_1_START_LOCATION) + 1) % 6 == 0) {Serial.print (""); }} Serial.println (""); за (int i = SECOND_2_START_LOCATION; i <= SECOND_2_END_LOCATION; i ++) {Serial.print (светодиоди ); Serial.print (""); } Serial.println (""); Serial.println (светодиоди [SECOND_1_LOCATION]); Serial.println (); for (int i = 0; i <NUM_LEDS; i ++) {Serial.print (светодиоди ); } Serial.println (); Serial.println (); }

Стъпка 27: Насладете се

Образ
Образ

В заключение, този часовник е чудесен за гледане и след като се разберете, той е сравнително лесен за четене. Ако направите свой собствен часовник, уведомете ме!

Препоръчано: