Съдържание:

Часовник за пенсиониране / Брой нагоре / Dn часовник: 4 стъпки (със снимки)
Часовник за пенсиониране / Брой нагоре / Dn часовник: 4 стъпки (със снимки)

Видео: Часовник за пенсиониране / Брой нагоре / Dn часовник: 4 стъпки (със снимки)

Видео: Часовник за пенсиониране / Брой нагоре / Dn часовник: 4 стъпки (със снимки)
Видео: Свършвам бързо! Как да правя секс по-дълго? 2024, Юли
Anonim
Часовник за пенсиониране / Брой нагоре / Dn часовник
Часовник за пенсиониране / Брой нагоре / Dn часовник

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

Идеята да го поставите в бутилка беше по -скоро инцидент, докато мислите за обвивка. Други слагат кораби в бутилка, защо не и часовник?

Исках също така да накарам часовника да се подчинява на лятното часово време и разбира се да помни настройките и времето, когато е изключен от контакта. Захранвам часовника чрез USB, което го прави препрограмируем, ако искате да направите нещо различно или просто да добавите функции към кода. Кодът е доста прост и може да използва много оптимизиране. Не трябва да се грижа добре за консумацията на RAM, трябва да призная. Ако имам време и мотивация, ще се върна към него.

Консумативи

1. Arduino Nano

2. RTC (използвах общия DS3231, който също има EEPROM)

3. 12x 8x8 точков матричен модул. (Имах четири модула, които са по -лесни за подреждане)

4. LDR за регулиране на яркостта на дисплея

5. Резистор 10 kOhm

6. Кондензатор 5x 100 uF, потискащ шипове от дисплея

7. За да увелича контраста на модулите 8х8, използвах тъмно оцветения „Прозорец филм“. Дисплеят показва светодиодите като бели точки, ако не свети. Филмът на прозореца го превръща в лъскав черен вид.

Стъпка 1: Свържете компонентите

Свържете компонентите
Свържете компонентите
Свържете компонентите
Свържете компонентите

Използвах три от четирите дисплея за сглобяване на дисплея. За да покажем дата с наклонени черти и време с двоеточия, се нуждаем от място за 8 знака. Използвайки типичния 5x7 шрифт, ще ни трябват шест блока 8x8 на ред. Разрязах един от четирите блока наполовина и ги подредих като два реда по шест блока, както е показано на схемата на макета.

Стъпка 2: 3D отпечатани части

3D отпечатани части
3D отпечатани части
3D отпечатани части
3D отпечатани части
3D отпечатани части
3D отпечатани части

За да задържа двата реда на дисплея и да ги поставя в бутилката, отпечатах пръстени с кръгло разстояние за рамката на дисплея. Добавих файловете, които използвах по -долу. За да можете да ги отпечатате без поддръжка, те са разделени на части. Екранната снимка показва двата пръстена, залепени за рамката на дисплея. Капакът на бутилката е с три бутона за превключване между режимите на показване и настройка на текущото и целевото време. Капакът на бутилката, отпечатан от TPU, позволява да се плъзне USB кабела в капака, без да се отрежат конекторите и да се завърже с няколко намотки тел. Забравих да спомена, че използвах бутилка вино 1,5 л, която нарязах на дъното. Всички части, които ще бъдат отпечатани, са монтирани на принтерно легло 20x20 cm (8x8 in).

Стъпка 3: Кодът

Кодът Arduino използва няколко често използвани библиотеки.

MD_MAX72xx

SPI

Тел

RTClib

Часова зона

TimeLib

Във файла INO има няколко реда, които може да се нуждаят от промяна:

Ред 38: #define HARDWARE_TYPE MD_MAX72XX:: FC16_HW <- зависи от модула 8x8 и неговата ориентация

вместо FC16_HW може да е едно от:

- MD_MAX72XX:: PAROLA_HW

- MD_MAX72XX:: GENERIC_HW

- MD_MAX72XX:: ICSTATION_HW

- MD_MAX72XX:: FC16_HW

Кодът използва настройките за централното време на САЩ и се нуждае от настройка за други часови зони:

Ред 53/54:

TimeChangeRule myDST = {"CDT", Second, Sun, Mar, 2, -300}; // Лятно време UTC -5TimeChangeRule mySTD = {"CST", Първо, Слънце, Ноември, 2, -360}; // Стандартно време UTC -6

Това е лесно да се регулира. Името CST/CDT е само за справка. Не показвам трибуквената абревиатура, така че няма значение. Следващите параметри се отнасят до кой ден от месеца се извършва превключването. Настройката е за минути, така че местоположенията, използващи корекции +/- 30 минути, също ще работят.

RTC работи вътрешно в UTC-Time, което позволява библиотеката на часовата зона да работи по предназначение. Може да се чудите защо кодът препраща към по -стария чип DS1307, противно на часовника, който използвах, но това няма значение. Библиотеката работи добре с двата чипа. DS1307 има тенденция да се отклонява повече от DS3132. DS3132 е предпочитаният часовник. За тези, които искат да добавят време за интернет, ESP8266 ще свърши работата доста лесно. Това може да направи RTC остарял. Ако правите тези промени, използвайте Arduino EEPROM за съхраняване на целевото време, аз използвах RTC EEPROM, за да го направя.

Стъпка 4: Работа и настройки

Работа и настройки
Работа и настройки
Работа и настройки
Работа и настройки
Работа и настройки
Работа и настройки

Има три бутона

1. Меню / настройки

2. Нагоре

3. Надолу

Бутонът за меню позволява преминаване през трите типа дисплеи: Текущо време, Целево време, Делта време. Делта времето показва броя дни, ЧЧ/ММ/СС между текущото време и целевото време. Той ще покаже t- и отброяване, ако целта е в бъдеще или t+, и отброяване, ако целта е в миналото.

За да регулирате текущото или целевото време, изберете текущото време или показване на целевото време. За да промените часа, задръжте бутона за менюто за 2 секунди и освободете, което ще ви отведе в режим на настройка. Съседният "/" или ":" ще се превърне в "", за да посочи коя цифра регулирате. Използвайте бутоните нагоре/надолу, за да регулирате отделните hh/mm/ss и mm/dd/yy. Не съм добавил настройка за превключване между mm/dd/yy и dd/mm/yy, това се нуждае от промяна в кода или може би някой има желание да добави тази функция.

Ще забележите, че ако преминете минутите над 59 или под 00, дисплеят на часа също ще се регулира. същото важи и за секунди, часове и дни, които променят следващата по -висока стойност, ако преминават под 0 или над максимума за тази цифра. Направих това, за да избегна програмирането на различните граници на отделните месеци и ако февруари се нуждае от 29 дни през високосна година. Регулирането на времето всъщност се извършва в епохално време, секунди от 1 януари 1970 г.

Добавих прост видеоклип, за да покажа броенето. Исках да ги направя като дисплей с въртящо се колело. Ако искате да регулирате продължителността на промяната, ред 69 в INO ви дава няколко опции за ускоряване или забавяне на промяната. 120ms биха накарали цифрите да се превъртат достатъчно бавно, тъй като това би било непрекъснато работещо колело.

Надявам се да ви хареса тази инструкция.

Патрик Гешвинднер

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