Мазмұны:

Жеңіл жазғы сағат: 7 қадам
Жеңіл жазғы сағат: 7 қадам

Бейне: Жеңіл жазғы сағат: 7 қадам

Бейне: Жеңіл жазғы сағат: 7 қадам
Бейне: #Донор Қазірден бастап барлық кинотеатрларда! 2024, Шілде
Anonim
Жеңіл жазғы сағат
Жеңіл жазғы сағат
Жеңіл жазғы сағат
Жеңіл жазғы сағат

Оқиға

Бұл жоба маған Arduino Uno және 1602A бірыңғай LCD дисплейімен бағдарламалауды (кодтауды) үйрену үшін қиыншылық ретінде басталды, мен алдымен Arduino -ны дәлдікке дейін жеткізгім келді. Бұл RTC модулін қолданбай сағат құру жобасы (Real Time Clock модулі) және одан әрі ешқандай кешіктіруді қолданбау (); командалар, себебі кешігу (); командасы кодты белгілі бір уақытқа тоқтатады. Мен қарапайым уақытты сақтау кодын қолдана отырып, бұл қарапайым нәрсе деп ойладым, сондықтан мен уақытты үнемдеуге жаңа қосымша ретінде күндізгі уақытты қосуды шештім және бұл жобаға қызығушылықты арттырдым. Бастапқыда бұл идея жаңа болды, бірақ мен онымен жұмыс істеп, жұмыс үстелінде жұмыс жасайтын сағатты көрген сайын, бұл идея практикалық болады. RTC модулін қосу және кодты реттеу арқылы бұл сағат бірнеше жылдар бойы дәл болады және өндірушілер мен мұндай сағатты сатып алатын жұртшылық үшін өте төмен бағамен болады.

Жазғы уақыт немесе (DST) 100+ жыл бойы болды (Google, бұл өте әдемі тарихы бар). Мен саясатқа араласқым келмейді, бірақ бұл қарапайым адамдарға (сіз және мен) өмірді жеңілдетпейтін өрескел және ауыр жаттығу. Көбінесе біз күндізгі қосымша сағатты ұнатамыз, бірақ оны қолдану әдісі қатал. Ескі идеяға үлкен жаңарудың уақыты келді.

Бұл мысал цифрлық дәуірде өмір сүруге оңай және технологияның жетістіктері цифрлық сағаттардың барлық түрлеріне оңай қолданылады, бірақ аналогтық сағаттың жойылуына көмектесе алады. Стандартты уақыттан DST уақытына 1 сағаттық секіруден гөрі, DST уақытынан стандартты уақытқа бұл сағат қысқы күн тоқтаудан жазғы күнге дейін уақыттың біртіндеп жылжуына негізделген, содан кейін жыл сайын келесі қысқы тоқырауда стандартты уақытқа оралады. Бұл ауысу әр 6 айдың 180 күнінде жүзеге асады, түзету 360 күн ішінде күніне 20 секунд, қалған 5 немесе 6 күн сольстваның ұзақтығына қосылады. Менің мысалым 180 күндік цикл ішінде үш күнде бір рет 1 минутқа ұлғаяды. Әр жылдың 21 маусымында немесе сағатында шамамен сағат 1 сағат бұрын болады, ал 21 желтоқсанда немесе шамамен сағат стандартты уақытқа оралады. Секіру жылы оңай есептеледі, әсіресе егер RTC қолданылса. Оңтүстік жарты шар да осы сағатқа оңай бейімделген, слайд шкаласы солтүстік жарты шардан фазадан 6 ай бұрын.

Әлемде экваторлық аймақ пен полюстер болмаса, DST өте жақсы болатын үш жер бар. Менің ойымша, экваторда күндізгі жарық көп өзгермейді, мен білмеймін, тропикалық аймақтардың бірде -біреуі тіпті DST қолданады ма, ал полюстер - бұл басқа әңгіме, тек полюстерде «НЕ» уақыт?

1 -қадам: Сағат туралы

Сағат туралы
Сағат туралы
Сағат туралы
Сағат туралы

Мен жасаған сағат стандартты уақытқа негізделген, ол халықаралық деңгейде қабылданған әлемдік сағаттан ешқашан өзгермейді, бұл 1602 СКД бірінші жолында көрсетіледі. Екінші жол-бұл бірдей уақыт шкаласы, бірақ ол бір күн тоқтағаннан келесі күнге дейінгі уақытты көрсетеді. Қысқы тоқтаудан жазғы тоқтағанға дейін әр үш күнде бір минут максимум алпыс минутқа дейін артады. Жазғы тоқтаудан қысқы тоқтағанға дейін стандартты уақыт пен DST уақыты бірдей болғанға дейін әр үш күнде бір минуттан азаяды.

Бұл мысалда мен 24 сағаттық уақыт шкаласын білмейтін адамдарға көмектесу үшін әскери уақытты (24 сағаттық) және стандартты уақытты (12 сағаттық) таңғы және кешкі уақытты қолдандым, сонымен қатар ол менің бөлмеме DST күн нөмірін көрсетуге мүмкіндік берді. бастап орнатыңыз. Кодты 12 сағаттық сағатты көрсету үшін өзгертуге болады. Мен уақытты реттеу үшін 2, 3 және 4 цифрлық түйреуіштерге жалғанған үш түймені қостым. Бұл түймелер тек секундтарды, минуттарды немесе сағаттарды арттырады. Түймелер міндетті емес, егер сіз түймені қоспайсыз және кодты өзгертудің қажеті болмаса, сағат әлі де жақсы жұмыс істейді. Мен кем дегенде секундты реттеу үшін түймені қолдануды ұсынар едім, егер толық дәлдікке қол жеткізу мүмкін болмаса, сағатты баяу жағында ұстаңыз, түймешік секундына 1 секундқа алға жылжиды.

Егер сіз сағатты Arduino IDE -ден бастасаңыз, эскизді жүктеуге және жүктеуге шамамен 5,5 -тен 6 секундқа дейін уақыт кетеді, егер сізде эскиз Arduino -ға жүктелген болса, оны қабырғаға қосыңыз немесе қуат көзіне 2,5 -тен астам уақыт кетеді. Жүктеуге және іске қосуға 3 секунд.

Сағатты пайдалануға дайын болғанда қолмен баптау қажет.

Бұл сағаттарда RTC модулі қолданылмайды және дозада «delay ();» қолданылмайды. командалар.

Егер сіз RTC -ті Arduino -мен қолдануды ұнатсаңыз, бұл ұғымды әлі де қолдануға болады. RTC сізге EDSC уақытын қосу үшін қажет барлық ақпаратты береді. RTC модулімен код мүлдем өзгеше болуы мүмкін, мен оны қарастырған жоқпын. Егер сіз осылай жасасаңыз, сіз өз бетіңізше боласыз, бірақ бұл сіздің миыңызды жаттығудың тамаша тәсілі.

2 -қадам: Сізге не қажет

Сізге не қажет болады
Сізге не қажет болады
Сізге не қажет болады
Сізге не қажет болады
Сізге не қажет болады
Сізге не қажет болады

САТУ ТІЗІМІ

1 Arduino Uno немесе Mega2569 (I2C түйрегіштері БҰҰ -да A4 және A5, ал 2560 мегада 20 және 21)

Кез келген басқа Arduino жұмыс істеуі керек, түйреуіштер басқаша болуы мүмкін. Бұл үшін кез келген бақылау тақтасы жұмыс істейді. Сізге сол тақтаға немесе өндірушіге арналған кодты қайта жазу қажет болады.

1 1602 СКД дисплей (сіздің таңдауыңыз бойынша түс)

Мен I2C артқы бумасын СКД -мен қолданамын, оны реттеу оңай әрі тез деп ойлаймын.

Өткізгіш сымдар

ОПЦИОНАЛДЫҚ ЖАБДЫҚТАР

1 орташа өлшемді нан тақтасы

1-3 лездік контактілі түймелер

1-3 10 К Ом резисторлар

Бұл нұсқаулық ұзаққа созылады, сондықтан мен сағатты көрсетуге арналған монтажға немесе шкафқа кірмеймін. Егер сізге бұл жоба ұнайтын болса және оның тұрақты нұсқасын жасағыңыз келсе, оны өз қалауыңыз бойынша жасаңыз. Бұл дизайн мен үшін өте қолайлы, себебі менде қоқыс жәшігінде қажеттінің бәрі болды және маған оның келбеті ұнайды.

ЕСКЕРТПЕ:

Электр қуатының үзілуін болдырмау үшін менің соңғы сағатым менде күн батареясымен жұмыс істейді. Күн панелі шамадан тыс зарядтаудың алдын алу үшін реттегішпен зарядталған 12 вольтты батареяны сақтайды. Бұл батарея USB портының жанындағы қуат ұясы арқылы Arduino -ға қосылған. Мен батареяның тартылуын азайту үшін USB портын желіге қосулы ұстаймын. Екі қуат көзін де бір уақытта Arduino -ға зақым келтірместен пайдалануға болады. 12 вольтты аккумуляторды максималды 14,5 вольтке дейін зарядтауға болады, бұл Arduino үшін тым жоғары, сондықтан мен аккумулятордан кернеуді 9 -дан 12 вольтке дейін төмендету үшін конвертерді қолданамын. Мен зарядтайтын 12 вольтты батарея күндер бұлтты болса, 3 немесе 4 күнге жетеді. Мен қолданатын реттегіш батареяның кернеуі 11 вольтке дейін төмендеген жағдайда Arduino қуатын өшіреді. Мендегі аккумулятор коммерциялық ғимараттарға арналған апаттық жарық жүйесінен келеді, оның көлемі автомобильдің шағын аккумуляторының шамамен төрттен бір бөлігіне тең. Егер сіз автокөліктің аккумуляторын пайдаланғыңыз келсе, оны жақсы желдетілетін жерде (сыртта) ұстаңыз, автокөлік батареялары зарядталғанда және шығарылғанда сутегі мен оттегі газын шығарады, бұл жарылғыш комбинация.

ЕСКЕРТУ

Батареяны жақсы ұстаңыз

ЖЕЛДЕТТІ АУДАН, Сыртта

3 -қадам: Сымдарды жалғау

Сымдар
Сымдар

Мен осы жобадағы барлық қосылулардың схемасын ұсындым, егер сіз тақтаны қолдансаңыз, сізге орташа өлшемді тақта қажет болады, сөндіргіштерді тарату үшін орын қажет, сондықтан тізбек шатастырмайды.

1602 СКД дисплейінде қарапайымдылық үшін I2C артқы қаптамасы бар, егер сіз SPI қосылымдарын қолдансаңыз, оны қалай пайдалану керектігін іздеп, эскиздің басына жақын кодты өзгертуіңіз қажет болады. Мен SPI қосылымдарын ешқашан қолданған емеспін, сондықтан 2, 3 және 4 түйреуіштері үш түймеде болмауы мүмкін.

Үш түймешік сағаттағы уақытты реттеу үшін қолданылады. Олар тек уақытты алға жылжытады (AHEAD). Соңғы түзетулерде сағатты баяу жағындағы кодта сақтаңыз (күніне шамамен 1-2 секунд немесе бірнеше күн), осылайша қажет болған жағдайда уақытты жоғарылатуға болады. Әр түймешік секундына бір қадамға, төменгі түймешік секундына 2 секундқа, ортаңғы түйме секундына 1 минутқа, жоғарғы түймешік секундына 1 сағатқа алға жылжиды. Дәлдіктің жоғары дәрежесі болуы керек, сондықтан оны жиі өзгерту қажет емес.

Егер сіз секундтарды, минуттарды немесе сағаттарды реттесеңіз (мысалы, минуттар 58, 59, 00 болса) сағат келесі сағатқа өтеді.

Бұл үш түйме сағатқа соңғы минуттық қосымша болып табылады, олар жақсы жұмыс істейді, бірақ жақсы әдіс болуы мүмкін. Есіңізде болсын, егер сіз кодтың осы бөлігімен аралассаңыз, «delay ();» команданы қолдану мүмкін емес. Мен бұл әдісті қолдандым, себебі уақыт өте келе коммутатордың секіруі мен біртүрлі секірулер туралы уайымдаудың қажеті жоқ.

4 -қадам: Дисплей не көрсетеді

Дисплей не көрсетеді
Дисплей не көрсетеді

Мен 1602 СК дисплейінде көптеген түсініктемелерді қажет ететін көптеген ақпаратты қойдым:

1 -ші жол немесе кодпен сөйлескенде нөлдік '0' жолы стандартты уақытты көрсетеді. Сол жақта 'STD', бұл 'STandarD' уақытын білдіреді.

Келесі ортасында бірінші жолда сіздің жергілікті стандартты уақыт. Жазғы уақытты бастамаңыз, сағат оны екінші жолда көрсетеді.

Бұл уақыт шкаласы - 12 сағаттық сағат, сондықтан оң жақта таңертең немесе түстен кейін «AM» немесе «PM» болады.

2 -жол немесе кодпен сөйлескен кезде '1' жолында жылдың тәулігіне байланысты өзгеретін жазғы уақыт көрсетіледі. Сол жақтағы 'DST' 'жазғы уақытты' білдіреді

Екінші жолдың ортасында - сіздің жергілікті әскери уақыт, ол 24 сағат. Сіз оны «алты жүз сағат» деп атайтынын естисіз.

Оң жақта қысқы тоқырауға сәйкес келетін жыл күні, солтүстік жарты шарда 21 желтоқсан (шамамен) нөлдік күн '0', ал оңтүстік жарты шарда 21 маусым (шамамен) нөлдік күн '0'.

Мен сағатты бірінші рет орнату кезінде сілтеме үшін екі.pdf файлын ұсындым. Сіз тұратын жарты шарға қатысты файлды таңдаңыз.

Оң жақтағы үш түйме секундтан, минут пен сағатты төменнен жоғары қарай көтереді.

5 -қадам: эскизді орнату

Эскизді орнату
Эскизді орнату

Бастапқы іске қосу үшін бірнеше код жолдары қажет. Бұл сызықтардың кейбірі сағатты ажыратқан сайын және эскиздегі айнымалылардың мәндерін өзгерткен сайын өзгеруі керек. Егер сіз IDE сағатын бастасаңыз, оны жүктеуге және бастауға шамамен 6 секунд кетеді. Егер сіз эскизді IDE -ден жүктесеңіз, сағатты ажыратыңыз және оны қабырғаға немесе қуат көзінен қайта бастаңыз, эскиз шамамен 2,5 секундта қосылады.

11 -жол LiquidCrystal_I2C lcd (0x27, 2, 1, 0, 4, 5, 6, 7);

Бұл жол СКД дисплейіне бағытталған және I2C артқы қаптамасының тиісті мекенжайын орнатады. 0x27 - мен сатып алған артқы қаптамалардың мекен -жайы. Егер сіз сағатты қоссаңыз, бірақ ешқандай деректер көрсетілмесе, бірақ ол СКД -де мекен -жайды басқаша көрсетсе. Мен төмендегі сілтемені СК -дің артқы қаптамасының мекен -жайын қалай өзгерту керектігін немесе адресті табу үшін сипаттаймын.

Жолдар 24 int минуттықSt = 35;

Стандартты сағаттың басталу уақытын орнатыңыз, әдетте оны орнатуға уақыт беру үшін сағатты бастамас бұрын 5 минут бұрын орнатыңыз.

Жолдар 25 int hourSt = 18;

Сағатты STD уақытына қойыңыз (24 сағаттық сағат) басталады. 18:00 сағат 18 болады.

26 -жол int DSTdays = 339;

Сіз тұратын «DST сағаттарының уақыт шкаласы» pdf файлын (Солтүстік немесе Оңтүстік жарты шар) жүктеңіз және қараңыз, күнді іздеңіз және # күнді осы жолға енгізіңіз. (Сол жақ баған). Мысал (24 қараша - Солтүстік жарты шарда #339 күн, оңтүстік жарты шарда #156 күн)

27 -жол int DSTyear = 2019;

Ағымдағы жылды енгізіңіз.

92 -жол егер ((masterTime - previousMasterTimeSt> = 1000) && (microTime - previousMicroTimeSt> = 500)) {

«PreviousMasterTimeSt» миллисекундтармен салыстырылуы керек, сондықтан бұл '1000' Arduino тақтасының ішкі сағатына байланысты 999 -ға дейін өзгеруі мүмкін, сосын сағатты дәл реттеу үшін алдыңғыMicroTime -ді реттеңіз. Ішкі сағат 16MH бір тақтадан екіншісіне өзгереді.

«PreviousMicroTimeSt» дәл 1 секундты санауға көмектесу үшін ішкі сағатты реттейді. Егер сағат тым жылдам болса, микросекундтарды көбейтіңіз, ал егер тым баяу болса, микросекундтарды азайтыңыз, қажет болса миллисекундтарды 999 -ға дейін төмендетіңіз, содан кейін шамамен 999, 990 -да микросекундтарды бастаңыз немесе сағат жылдамдығын арттырыңыз.

Әр Arduino тақтасының жылдамдығы сәл өзгеше, сондықтан бұл сандар әр тақтаға байланысты өзгереді. Кодтың бір бөлігі әлі тексерілмеген, бұл әр кібісе жыл үшін есептелетін 248 -жол. Алдағы бірнеше аптада мен оны тексеремін және қажет болған жағдайда өзгерістер енгіземін.

6 -қадам: Қорытынды жазбалар

Қорытынды ескертулер
Қорытынды ескертулер

Бұл жобаны құрастыру оңай, бірақ кодтағы тұжырымдама мен қажетті түзетулер тапсырма болуы мүмкін, асықпаңыз және ойланыңыз, сағат 2037 жылдың соңына дейін бітпейді. Мен өз жұмысымды мұқият қадағалаймын. Сұрақтарға электрондық пошта жіберіңіз, себебі мен олардың кейбірі болатынына сенімдімін, мен әдеби гений емеспін, сондықтан менің кейбір сипаттамаларым сәл лас болуы мүмкін.

Екі.pdf файл бар, сіз тұратын жарты шардың файлын жүктеңіз, бұл файл сізге сағатты дәл бастау үшін қажетті ақпаратты береді.

Эскизде манипуляцияланған ақпараттың көмегімен стандартты уақыт пен DST уақытын ғана емес, сонымен қатар 2004A СКД дисплейінде күн мен күнді көрсету оңай болар еді. Егер сізге бұл жоба ұсынатын қиындықтар ұнаса, 2004A СК дисплейін қосуға тырысыңыз, содан кейін қосымша ақпаратты көрсету үшін кодты қосыңыз немесе егер қызығушылық жеткілікті болса, мен бұл жобаның басқа нұсқасын қосамын.

Мен бұл жобаға жан-жақты болуға тырыстым, бірақ мен әлемдегі үш саланы таптым. Солтүстік полюс, Оңтүстік полюс және Экватор.

Солтүстік немесе Оңтүстік полюстерде DST қажет немесе мүмкін бе?

Солтүстік немесе Оңтүстік полюсте сағат неше?

Солтүстік полюстен немесе оңтүстік полюстен шығу үшін қай бағытқа барар едіңіз?

Оңтүстік полюстен Австралияға, Солтүстік Америкаға, Еуропаға немесе Азияға жету үшін қай бағытқа барар едіңіз?

Аяз ата қай уақыт белдеуінде тұрады?

Оған DST қажет пе?

Солтүстік полюсте сағат нешеде?

Аяз ата барлық сыйлықтарын жеткізу үшін қай бағытта жүреді?

DST қандай кеңістікте тиімді?

Енді Экватор үшін;

Бұл сағатты Экваторда қолдануға бола ма?

Олар Солтүстік немесе Оңтүстік жарты шарды қолдана ма?

Қысқы және жазғы тоқсанның күндері қандай?

DST қандай кеңістікте тиімді?

Пингвиндерге DST қажет пе?

Қалай ойлайсыңдар, мен бұл сұрақтарға ойланып қалдым ба?

Барлығына құрылыс құтты болсын!

филмнут

7 -қадам: Басқа сілтемелер

Бұл I2C артқы бумасындағы мекенжайды анықтауға немесе өзгертуге сілтеме:

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

PiotrS I2C аппараттық мекенжайлары үшін тамаша нұсқаулық жазды

playground.arduino.cc/Main/I2cScanner

Бұл сілтеме сіздің I2C құрылғыңызды сканерлеп, мекенжайды қайтарады

Ұсынылған: