Мазмуну:

Жеңил күндүзгү саат: 7 кадам
Жеңил күндүзгү саат: 7 кадам

Video: Жеңил күндүзгү саат: 7 кадам

Video: Жеңил күндүзгү саат: 7 кадам
Video: Аялдардын ката жана туура намазы. #Исхактв 2024, Июль
Anonim
Жеңил күндүзгү саат
Жеңил күндүзгү саат
Жеңил күндүзгү саат
Жеңил күндүзгү саат

Окуя

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

Жазгы убакыт же (DST) 100+ жылдардан бери келе жатат (Google it, анын абдан түстүү тарыхы бар). Мен саясатка киргим келбейт, бирок бул карапайым калктын жашоосун жеңилдетпеген одоно жана оор машыгуу (сен жана мен). Көбүнчө биз күндүзгү кошумча сааттан ырахат алабыз, бирок анын колдонулушу ырайымсыз. Эң эски идеяга чоң жаңыртуу убактысы келди.

Бул мисал санариптик доордо жана технологиядагы жетишкендиктер менен жашоого оңой, санариптик сааттардын бардык түрлөрүнө оңой колдонулат, бирок аналогдук сааттын жок болушуна жардам бериши мүмкүн. Стандарттык убакыттан DST убактысына 1 саат секирүүнүн ордуна, DST убактысы стандарттык убакытка чейин, бул убакыт кыштын түнүнөн жайдын күнүнө чейин акырындык менен жылышына негизделген, андан кийин жыл сайын кийинки кышкы күн батышында стандарттык убакытка кайтып келет. Бул өтүү ар бир 6 айлык мезгилдин 180 күнүндө ишке ашат, тууралоо күнүнө 20 секунд, 360 күн үчүн калган 5 же 6 күн солстикстин узундугуна кошулат. Менин мисалым бул жерде 180 күндүк циклдин ичинде үч күндө бир жолу 1 мүнөткө көбөйөт. Ар бир жылдын 21 -июнунда саат болжол менен 1 саат алдыда жана 21 -декабрда же болжол менен саат стандарттык убакытка жылдырылган. Кабыл алуу жылы, айрыкча, RTC колдонулганда оңой эсепке алынат. Түштүк жарым шары бул саатка да оңой ыңгайлаштырылган, слайддын масштабы түндүк жарым шардын фазасынан 6 айга чейин.

Дүйнөдө экстатордук чөлкөм жана уюлдар жок болсо, DST абдан көп болмок үч жер бар. Менимче, экватордо күндүн жарыгы анча деле өзгөрбөйт, мен билбейм, тропикалык аймактардын бирөөсү DSTди колдонсо, полюстар дагы бир башка окуя, жөн гана "ЭМНЕ", уюлдарда баары бир?

1 -кадам: Саат жөнүндө

Саат жөнүндө
Саат жөнүндө
Саат жөнүндө
Саат жөнүндө

Мен жараткан саат стандарттуу убакытка негизделген, ал эл аралык кабыл алынган дүйнөлүк сааттан эч качан өзгөрбөйт, бул 1602 ЖКнын биринчи сабында көрсөтүлөт. Экинчи сызык ошол эле убакыт масштабы, бирок ал бир күндөн экинчи күнгө чейинки мүнөттөрдүн өчүшүн көрсөтөт. Кышкы токтоодон жайкы күнгө чейин өчүрүү ар бир үч күндө бир мүнөттөн максимум алтымыш мүнөткө чейин көбөйөт. Жайдын токтоосунан кыштын күнүнө чейин өчүрүү белгиленген убакыт менен DST убактысы бирдей болгонго чейин үч күндө бир мүнөткө азаят.

Бул мисал үчүн мен 24 саат убакыттын шкаласы менен тааныш эмес адамдарга жардам берүү үчүн аскердик убакытты (24 сааттык саат) жана стандарттык убакытты (12 сааттык саат) AM жана PM колдондум, ошондой эле ал менин бөлмөмө 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 вольттуу батареяны сактайт. Бул батарейка Arduino менен USB порттун жанындагы кубат уячасы аркылуу туташат. Батареяны тартууну азайтуу үчүн USB портун сеткага туташтырып турам. Ардуиного эч кандай зыян келтирбестен, эки энергия булагын бир убакта колдонсо болот. 12 вольттук батарейканы максималдуу 14,5 вольтко чейин толтурууга болот, бул Arduino үчүн өтө жогору, ошондуктан мен батарейканын чыңалуусун 9-12 вольтко чейин азайтуу үчүн бак конвертерин колдоном. 12 вольттуу батарейка, эгерде күн бүркөлсө, 3 же 4 күнгө жетет. Мен колдонгон жөнгө салгыч, эгер батареянын чыңалуусу 11 вольтко түшсө, Arduino электр энергиясын өчүрөт. Мендеги батарейка коммерциялык имараттар үчүн авариялык жарык системасынан келет, анын кичинекей машинасынын батарейкасынын төрттөн бир бөлүгү. Эгерде сиз машинанын аккумуляторун колдонгуңуз келсе, аны жакшы желдетилүүчү жерде (сыртта) сактоону унутпаңыз, машинанын батареялары суутек менен кычкылтек газын заряддап жана чыгарганда бөлүп чыгарат, бул жарылуучу аралашма.

ЭСКЕРТҮҮ

БАТАРЕЯНЫ ЖАКШЫ САКТАҢЫЗ

ЖЕЛДЕТТҮҮ АЙМАК, OUTTSIDE

3 -кадам: Кабелдөө

Электр өткөргүчтөрү
Электр өткөргүчтөрү

Мен бул долбоордун бардык байланыштарынын схемасын бердим, эгерде сиз нан тактасын колдонсоңуз, анда сизге орточо өлчөмдөгү такта керек болот, өчүргүчтөргө жайылышы керек, андыктан схема чаташтырбашы керек.

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

Үч баскыч баскычтар сааттын убактысын тууралоо үчүн колдонулат. Алар убакытты гана алга жылдырышат (АЛДЫНДА). Акыркы өзгөртүүлөрдө, сааттын жай жагындагы кодунда сактаңыз (күнүнө 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 -кадам: Sketch Setup

Эскиз орнотуу
Эскиз орнотуу

Баштапкы иштетүү үчүн орнотулушу керек болгон бир нече коддор бар. Бул линиялардын айрымдары саатты ажыратып, эскиздеги өзгөрмөлөрдүн маанилерин өзгөрткөн сайын өзгөрүүлөр болушу керек. Эгерде сиз IDE үчүн саатты баштасаңыз, жүктөө жана баштоо үчүн болжол менен 6 секунд убакыт кетет. Эгер эскизди IDEден жүктөсөңүз, анда саатты ажыратып, дубал сөөлүнөн же электр энергиясынан өчүрүп күйгүзүңүз, эскиз болжол менен 2,5 секундада жүктөлөт.

11 -сап LiquidCrystal_I2C lcd (0x27, 2, 1, 0, 4, 5, 6, 7);

Бул линия LCD дисплейине кайрылып, I2C арткы пакетинин туура дарегин белгилейт. 0x27 - мен сатып алган ар кандай пакеттердин дареги. Эгерде сиз саатты иштетсеңиз, бирок эч кандай маалымат көрсөтүлбөсө, бирок ал сиздин ЖКда дарегиңизди башкача кылып күйгүзөт. Мен сиздин LCD арткы пакетиңиздин дарегин кантип өзгөртүү керектигин же дарегин табуу үчүн төмөндөгү шилтемени коём.

Саптар 24 int мүнөтSt = 35;

Стандарттык сааттын башталыш мүнөтүн коюңуз, адатта, аны орнотууга убакыт берүү үчүн саатты баштоодон 5 мүнөт мурун коюңуз.

Саптар 25 int hourSt = 18;

Саатты STD убактысына коюңуз (24 сааттык саат) башталып жатат. 6 PM саат 18 болмок.

26 -сап DSTdays = 339;

Сиз жашап жаткан "Easy DST Clock Time Scale" 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 -кадам: Акыркы эскертүүлөр

Final Notes
Final Notes

Бул долбоорду куруу оңой, бирок коддогу түшүнүк жана керектүү оңдоолор тапшырма болушу мүмкүн, убактыңызды бөлүп, ойлонуп көрүңүз, саат 2037 -жылдын аягына чейин бүтпөйт. Суроолор үчүн электрондук почта, кээ бирлери болот деп ишенем, мен адабий гений эмесмин, андыктан менин сүрөттөөлөрүмдүн бир аз баткак болушу мүмкүн.

Эки.pdf файл камтылган, сиз жашаган жарым шар үчүн файлды жүктөп алыңыз, бул файл саатты так баштоо үчүн сизге керектүү маалыматты берет.

Эскизде иштелип чыккан маалымат менен 2004A ЖКда стандарттык убакытты жана DST убактысын гана эмес, күндү жана датаны көрсөтүү оңой болмок. Эгерде сизге бул проект сунуштаган кыйынчылыктар жакса, 2004А ЖК дисплейин туташтырып көрүңүз, анда кошумча маалыматты көрсөтүү үчүн кодду кошуңуз же эгерде кызыкдарлык көрсөтүлсө, мен бул долбоордун башка вариациясын жасайм, анын ичинде бул кошумча маалымат.

Мен бул долбоорго ар тараптуу болууга аракет кылдым, бирок бул дүйнөнүн үч тармагын таптым. Түндүк уюл, Түштүк уюл жана Экватор.

Түндүк же Түштүк уюлдарда DST керекпи же мүмкүнбү?

Түндүк же Түштүк уюлда саат канча?

Түндүк уюлдан же Түштүк уюлдан чыгуу үчүн кайсы багытты көздөйт элеңиз?

Түштүк уюлдан Австралия, Түндүк Америка, Европа же Азияга жетүү үчүн кайсы багытты көздөйт элеңиз?

Аяз ата кайсы убакыт тилкесинде жашайт?

Ага DST керекпи?

Түндүк уюлда саат канчада?

Аяз ата бардык белектерин жеткирүү үчүн кайсы багытты көздөй барат?

DST кайсы кеңдикте эффективдүү?

Эми Экватор үчүн;

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

Алар Түндүк же Түштүк жарым шар шкаласын колдонушмак беле?

Кышкы жана жайкы күндөрдүн датасы кандай?

DST кайсы кеңдикте эффективдүү?

Пингвиндерге DST керекпи?

Бул суроолордун үстүнөн ойлонуп жатканым кызык деп ойлойсузбу?

Баарынарды бактылуу кургула!

филмнут

7 -кадам: Башка шилтемелер

Бул I2C арткы пакетиндеги даректи аныктоо же өзгөртүү үчүн шилтеме:

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

PiotrS I2C аппараттык даректери үчүн эң сонун көрсөтмө жазды

playground.arduino.cc/Main/I2cScanner

Бул шилтеме I2C түзмөгүңүздү сканерлеп, дарегин кайтарат

Сунушталууда: