Съдържание:

Лесен часовник за лятно часово време: 7 стъпки
Лесен часовник за лятно часово време: 7 стъпки

Видео: Лесен часовник за лятно часово време: 7 стъпки

Видео: Лесен часовник за лятно часово време: 7 стъпки
Видео: Зимно или лятно часово време - ЗАЩО? 2024, Юли
Anonim
Лесен часовник за лятно часово време
Лесен часовник за лятно часово време
Лесен часовник за лятно часово време
Лесен часовник за лятно часово време

История

Този проект започна като предизвикателство за мен да науча програмиране (кодиране) с Arduino Uno и единичен 1602A LCD дисплей. Първо исках да придвижа Arduino до границите му за точност. Това е проект за изграждане на часовник без използване на RTC модул (модул за часовник в реално време) и по -нататък без използване на забавяне (); команди, защото забавянето (); командата спира кода за определен период от време. Докато работех с основния код за водене на време, мислех, че това може да е малко светско, затова реших да добавя функция за лятно часово време като ново допълнение, за да подправя нещата и евентуално да създам малко повече интерес към този проект. Първоначално идеята беше чисто нова, но колкото повече работя с нея и наблюдавам физическия часовник, който ми върви на бюрото, толкова по -практична става идеята. Чрез добавяне на RTC модул и коригиране на кода този часовник ще бъде точен през следващите години и на много ниска цена за производителите и обществеността, които купуват такъв часовник.

Лятното часово време (DST) съществува от повече от 100 години (Google, има доста цветна история). Не искам да влизам в политиката на това, но това е грубо и болезнено упражнение, което не улеснява живота на обикновените хора (вие и аз). В по -голямата си част се наслаждаваме на допълнителния час дневна светлина, но начинът, по който се прилага, е брутален. Време е за сериозно надграждане към много стара идея.

Този пример е лесен за живеене и с дигиталната ера и напредъка в технологиите, лесно приложим към всички форми на цифрови часовници, но би могъл да помогне за отпадането на аналоговия часовник. Вместо 1 час скок от стандартното време към лятното часово време, тогава лятното часово време към стандартното време този часовник се основава на постепенното прогресиране на времето от зимното слънцестоене до лятното слънцестоене, след което се връща към стандартното време през следващото зимно слънцестоене година след година. Този преход се извършва в продължение на 180 дни от всеки 6 -месечен период, корекцията е 20 секунди на ден за 360 дни с останалите 5 или 6 дни, добавени към дължината на слънцестоенето. Моят пример тук увеличава 1 минута веднъж на всеки три дни в рамките на 180 -дневния цикъл. На или около 21 юни всяка година часовникът е с цели 1 час напред и на или около 21 декември всяка година часовникът се плъзна обратно към стандартното време. Високосната година се отчита лесно, особено ако се използва RTC. Южното полукълбо също лесно се адаптира към този часовник, скалата на слайда е просто на 6 месеца извън фазата от северното полукълбо.

Има три места в света, където лятното часово време би било почти без, екваториален регион и полюсите. Не мисля, че дневната светлина се променя много на екватора, не знам дали някоя от тропическите области дори използва DST и полюсите отново са друга история, само че „КАКВО“е часът по полюсите?

Стъпка 1: За часовника

Относно Часовника
Относно Часовника
Относно Часовника
Относно Часовника

Часовникът, който създадох, се основава на стандартно време, което никога не се различава от международно приетия световен часовник, това се показва на първия ред на LCD дисплея 1602. Вторият ред е със същата времева скала, но показва изместването на минутите от едно слънцестоене до следващото. От зимното слънцестоене до лятното слънцестоене офсетът се увеличава с една минута на всеки три дни до максимум шестдесет минути. От лятното слънцестоене до зимното слънцестоене изместването намалява с една минута на всеки три дни, докато стандартното и лятното часово време са същите.

За този пример използвах военно време (24 -часов часовник) и стандартно време (12 -часов часовник) AM и PM, за да помогна на тези хора, които не са запознати с 24 -часовата скала, също така ми даде стаята да показва номера на деня, който DST е зададен от. Кодът може да бъде променен, за да покаже 12 -часовия часовник. Добавих три бутона за свързване към цифрови щифтове 2, 3 и 4 за регулиране на времето. Тези бутони ще увеличават само секунди, минути или часове. Бутоните са по избор, часовникът ще работи добре, ако не включите бутоните и няма нужда да променяте кода. Бих препоръчал поне да използвате бутон за регулиране на секундите и ако не може да се постигне пълна точност, задръжте часовника на бавната страна, бутонът напредва времето с 1 секунда в секунда.

Ако стартирате часовника от IDE на Arduino, ще са необходими около 5,5 до 6 секунди, за да се зареди и стартира скицата, ако сте заредили скицата към Arduino, след това я включете в брадавица за стена или захранване, ще отнеме около 2,5 до 3 секунди за стартиране и стартиране.

Необходими са някои ръчни настройки, когато най -накрая подготвите часовника за работа.

Този часовник не използва RTC модул, нито дозира, използва "delay ();" команди.

Ако искате да използвате RTC с Arduino, тази концепция все още може да се използва. RTC ще ви даде цялата необходима информация, за да добавите EDSC часа. Кодът може да е доста различен с RTC модул, не съм го разглеждал. Вие сте почти сами, ако го направите, но това е чудесен начин да упражнявате мозъка си.

Стъпка 2: Какво ще ви трябва

Какво ще ви трябва
Какво ще ви трябва
Какво ще ви трябва
Какво ще ви трябва
Какво ще ви трябва
Какво ще ви трябва

СПИСЪК ЗА ПАЗАРУВАНЕ

1 Arduino Uno или Mega2569 (щифтовете I2C са A4 и A5 на UNO и 20 и 21 на 2560 Mega)

Почти всеки друг Arduino трябва да работи, използваните щифтове може да са различни. В този случай всяка контролна платка ще работи. Ще трябва да пренапишете кода за тази платка или производител.

1 1602 LCD дисплей (цвят по ваш избор)

Използвам I2C гръб с LCD, намирам за по -лесно и по -бързо настройване.

Кабелни проводници

ОПЦИОНАЛНИ ДОСТАВКИ

1 дъска за хляб със среден размер

1-3 бутони за моментни контакти

1-3 10 K ома резистори

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

ЗАБЕЛЕЖКИ:

За да избегна падането на електрозахранването, последният ми часовник се захранва от слънчев панел, който имам отвън. Слънчевият панел поддържа 12 -волтова батерия заредена с регулатор върху нея, за да се предотврати презареждането. Тази батерия е свързана към Arduino чрез жака за захранване до USB порта. Поддържам USB порта свързан към мрежата, за да намаля консумацията на батерията. И двата източника на захранване могат да се използват едновременно, без повреда на Arduino. 12 -волтова батерия може да се зарежда до максимум 14,5 волта, което е твърде високо за Arduino, така че използвам конвертор за понижаване на захранващото напрежение от батерията до диапазон от 9 до 12 волта. 12 -волтовата батерия, която поддържам заредена, ще издържи 3 или 4 дни, ако дните са облачни. Регулаторът, който използвам, ще прекъсне захранването на Arduino, ако напрежението на батерията падне до 11 волта. Батерията, която имам, идва от системата за аварийно осветление за търговски сгради, с размер около една четвърт от батерията на малка кола. Ако възнамерявате да използвате акумулатор за кола, не забравяйте да го държите в добре проветриво помещение (отвън), батериите на автомобила отделят водород и кислороден газ при зареждането и разреждането, това е експлозивна комбинация.

ВНИМАНИЕ

ПАЗЕТЕ АКУМУЛАТОРА В ДОБРО

ВЕНТИЛИРАНА ЗОНА, НАВЪН

Стъпка 3: Окабеляване

Електрически инсталации
Електрически инсталации

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

LCD дисплеят 1602 има I2C гръб за по -простота, ако използвате SPI връзки, ще трябва да потърсите как да го използвате и да промените кода близо до началото на скицата. Никога не съм използвал SPI връзките, така че щифтове 2, 3 и 4 може да не са налични за трите бутона.

Трите бутони се използват за регулиране на часа на часовника. Те само напредват времето (НАПРЕД). В крайните настройки запазете часовника в кода от бавната страна (около 1 до 2 секунди на ден или няколко дни) по този начин можете да увеличите времето, ако е необходимо. Всеки бутон ускорява времето с едно увеличение в секунда, долният бутон 2 секунди в секунда, средният бутон 1 минута в секунда и горният бутон 1 час в секунда. Доста висока степен на точност трябва да бъде изпълнима, така че няма да се налага да я настройвате много по -често.

Ако настройвате секунди, минути или часове (например ако минутите са напреднали 58, 59, 00), часът ще премине към следващия час.

Тези три бутона са допълнение към часовника в последната минута, работят добре, но може да има по -добър начин. Само не забравяйте, че ако бъркате с тази част от кода, "delay ();" командата не може да се използва. Използвах този метод, защото няма нужда да се притеснявам за скачане на превключвателя и странни скокове във времето.

Стъпка 4: Какво показва дисплеят

Какво показва дисплеят
Какво показва дисплеят

Поставих много информация на LCD дисплея 1602, която се нуждае от някакво обяснение:

Ред 1 Или ред нула „0“, когато се говори в код, показва стандартното време. Вляво е „STD“, това означава „STandarD“време.

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

Тази времева скала е 12 -часов часовник, така че от дясната страна е „AM или“PM”, което показва сутрин или след обяд.

Ред 2 Или ред първи „1“, когато се говори в код, показва лятното часово време, което варира в зависимост от деня в годината. „DST“вляво означава „лятно часово време“

В средата на втория ред е вашето местно военно време, което е денонощен часовник. Ще го чуете например като „о шестстотин часа“.

От дясната страна е денят на годината, посочен от зимното слънцестоене, в Северното полукълбо 21 декември (приблизително) е нулев ден „0“, а в южното полукълбо 21 юни (приблизително) е нулев ден „0“.

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

Трите бутона отдясно увеличават секунди, минути и часове отдолу нагоре.

Стъпка 5: Настройка на скица

Настройка на скица
Настройка на скица

Има няколко реда код, които трябва да бъдат настроени за първоначалното стартиране. Някои от тези редове трябва да се променят всеки път, когато изключите часовника и промените стойностите на променливите в скицата. Ако стартирате часовника за IDE, зареждането и стартирането ще отнеме около 6 секунди. Ако заредите скицата от IDE, изключете часовника и го рестартирайте от брадавица на стената или захранване, скицата ще се зареди за около 2,5 секунди.

Линия 11 LiquidCrystal_I2C LCD (0x27, 2, 1, 0, 4, 5, 6, 7);

Този ред адресира LCD дисплея и задава правилния адрес на гърба на I2C. 0x27 е адресът на всеки от раниците, които съм купил. Ако включите часовника, но няма показани данни, но той светва, адресът вероятно е различен на вашия LCD. Ще поставя линк по -долу за описание на това как да промените адреса на вашия LCD пакет или да намерите адреса.

Редове 24 int minuteSt = 35;

Задайте началната минута за стандартния часовник, обикновено го задайте 5 минути преди да стартирате часовника, за да се позволи времето за настройка.

Редове 25 int часSt = 18;

Задайте часа на STD час (24 часов часовник) започва в. 18:00 ще бъде час 18.

Ред 26 int DSTdays = 339;

Изтеглете и прегледайте pdf файла „Easy DST Clock Time Scale“(Северно или Южно полукълбо), в който живеете, потърсете датата и вмъкнете Ден # в този ред. (Лява колона). Пример (24 ноември е ден #339 в Северното полукълбо и ден #156 в Южното полукълбо)

Ред 27 int DSTyear = 2019;

Въведете текущата година.

Ред 92 if ((masterTime - previousMasterTimeSt> = 1000) && (microTime - previousMicroTimeSt> = 500)) {

"PreviousMasterTimeSt" трябва да се сравнява с броя на милисекундите, така че може да се наложи това "1000" да се промени на 999 в зависимост от вътрешния часовник на платката Arduino, след което да се регулира предишното MicroTime за фина настройка на часовника. Вътрешният часовник, въпреки че 16MH има вариации от една платка към друга.

"PreviousMicroTimeSt" фино настройва вътрешния часовник, за да помогне за отброяване на точна 1 секунда. Ако часовникът е твърде бърз, увеличете микросекундите и ако часовникът е твърде бавен, намалете микросекундите и ако е необходимо, намалете милисекундите до 999 и след това стартирайте микросекундите на около 999, 990 или увеличете скоростта на часовника.

Всяка дъска на Arduino има малко по -различна скорост, поради което тези числа ще се променят с всяка дъска, която използвате. Част от кода все още не е тестван, това е ред 248 за отчитане на всяка високосна година. През следващите няколко седмици ще го тествам и ще публикувам всички промени, ако е необходимо.

Стъпка 6: Заключителни бележки

Заключителни бележки
Заключителни бележки

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

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

С манипулираната информация в скицата би било лесно да се покаже не само стандартното време и лятното часово време, но и денят и датата на LCD 2004A. Ако харесвате предизвикателствата, които този проект предлага, опитайте да свържете 2004A LCD дисплей, след това добавете код за показване на допълнителната информация или ако се прояви достатъчно интерес, ще направя още един вариант на този проект, включително тази допълнителна информация.

Опитах се да бъда всеобхватен в този проект, но открих три области във въпросния свят. Северният полюс, Южният полюс и екватора.

Необходим ли е или дори възможен DST на Северния или Южния полюс?

Колко е часът на Северния или Южния полюс?

В каква посока бихте пътували, за да напуснете Северния или Южния полюс?

От Южния полюс в каква посока бихте пътували, за да стигнете до Австралия, Северна Америка, Европа или Азия?

В каква часова зона живее Дядо Коледа?

Има ли нужда от лятно часово време?

Колко е часът на Северния полюс?

В каква посока пътува Дядо Коледа, за да достави всичките си подаръци?

На каква географска ширина е ефективен DST?

Сега за екватора;

Може ли този часовник да се използва на екватора?

Биха ли използвали скалата на Северното или Южното полукълбо?

Какви са датите за зимното и лятното слънцестоене?

На каква географска ширина е ефективен DST?

Нуждаят ли се пингвините от лятно часово време?

Смятате ли, че съм странен, когато мисля за тези въпроси?

Честита сграда на всички!

филум

Стъпка 7: Други връзки

Това е връзка за определяне или промяна на адреса на гърба на I2C:

www.instructables.com/id/1602-2004-LCD-Adapter-Addressing/

PiotrS е написал отлична инструкция за хардуерни адреси на I2C

playground.arduino.cc/Main/I2cScanner

Тази връзка ще сканира вашето I2C устройство и ще върне адреса

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