Tartalomjegyzék:

Egyszerű nyári időszámítás: 7 lépés
Egyszerű nyári időszámítás: 7 lépés

Videó: Egyszerű nyári időszámítás: 7 lépés

Videó: Egyszerű nyári időszámítás: 7 lépés
Videó: A titok: Merj álmodni (teljes film magyarul) 2020 2024, Július
Anonim
Egyszerű nyári időszámítás
Egyszerű nyári időszámítás
Egyszerű nyári időszámítás
Egyszerű nyári időszámítás

Sztori

Ez a projekt kihívásnak indult számomra, hogy megtanuljak programozni (kódolni) az Arduino Uno -val és egyetlen 1602A -s LCD kijelzővel. Először is az Arduino -t akartam elérni a pontosságig. Ez egy olyan projekt, amelynek célja egy óra felépítése RTC modul (Valós idejű óra modul) használata nélkül, és további késleltetés nélkül (); parancsok, mert a delay (); parancs leállítja a kódot egy meghatározott ideig. Miközben az alapvető időmegőrzési kódot dolgoztam át, azt gondoltam, hogy ez egy kicsit hétköznapi lehet, ezért úgy döntöttem, hogy új nyári időszámítási funkcióval egészítem ki a dolgokat, és talán felkeltem az érdeklődést a projekt iránt. Eleinte az ötlet tisztán újszerű volt, de minél többet dolgozom vele és nézem az asztalon futó fizikai órát, annál praktikusabb az ötlet. Az RTC modul hozzáadásával és a kód beállításával ez az óra évekig pontos lenne, és nagyon alacsony költséggel járna az ilyen órát vásárló gyártóknak és lakosságnak.

A nyári időszámítás (DST) több mint 100 éve létezik (Google -on, elég színes története van). Nem akarok belemenni a politikába, de ez durva és fájdalmas gyakorlat, amely nem könnyíti meg az egyszerű emberek (te és én) életét. Nagyrészt élvezzük a plusz egy órás napfényt, de az alkalmazás módja brutális. Itt az ideje egy nagyon régi ötlet nagy frissítésének.

Ezt a példát könnyű együtt élni a digitális korszakkal, és a technológia fejlődése könnyen alkalmazható a digitális órák minden formájára, de segíthet az analóg óra megszűnésében. Ahelyett, hogy 1 órát ugrott volna a normál időről a DST időre, majd a DST időre a normál időre, ez az óra a téli napforduló és a nyári napforduló közötti idő fokozatos előrehaladásán alapul, majd a következő téli napfordulón évről évre vissza a normál időbe. Ez az átmenet minden 6 hónapos időszakból 180 napig tart, a kiigazítás napi 20 másodperc 360 napig, a fennmaradó 5 vagy 6 nap pedig hozzáadódik a napfordulók hosszához. Példám itt hárompercenként 1 perccel növekszik a 180 napos cikluson belül. Minden év június 21 -én vagy körülbelül az óra 1 órával előrébb van, és minden év december 21 -én vagy körülbelül az óra visszacsúszott a normál időre. A szökőévet könnyen el lehet számolni, különösen RTC használata esetén. A déli félteke is könnyen alkalmazkodik ehhez az órához, a csúszka egyszerűen 6 hónapos fázison kívül van az északi féltekétől.

Három olyan hely van a világon, ahol a DST nagyjából csak az egyenlítői régióban és a pólusokban lenne. Nem hiszem, hogy a napfény sokat változik az Egyenlítőn, nem tudom, hogy a trópusi területeken van -e még DST és a pólusok is más történet, csak a "MILYEN" idő van a pólusokon?

1. lépés: Az óráról

Az Óráról
Az Óráról
Az Óráról
Az Óráról

Az általam készített óra szabványos időn alapul, amely soha nem változik a nemzetközileg elfogadott világórától, ez megjelenik az 1602 LCD első sorában. A második sor ugyanaz az időskála, de a percek eltolódását mutatja az egyik napfordulóról a másikra. A téli napfordulótól a nyári napfordulóig az eltolás háromnaponként egy perccel, legfeljebb hatvan percre nő. A nyári napfordulótól a téli napfordulóig az eltolás három percenként egy perccel csökken, amíg a normál és a nyári időszámítás megegyezik.

Ebben a példában a katonai időt (24 órás óra) és a szokásos időt (12 órás óra) AM és PM használtam, hogy segítsek azoknak az embereknek, akik nem ismerik a 24 órás időskálát. tól. A kód megváltoztatható a 12 órás óra megjelenítéséhez. Az idő beállításához három nyomógombot adtam hozzá a 2, 3 és 4 digitális csapokhoz. Ezek a gombok csak a másodperceket, perceket vagy órákat növelik. A gombok opcionálisak, az óra akkor is jól fog működni, ha nem csatlakoztatja a gombokat, és nincs szükség a kód megváltoztatására. Azt javaslom, hogy legalább egy gombot használjon a másodpercek beállításához, és ha a teljes pontosság nem érhető el, tartsa az órát a lassú oldalon, a gomb másodpercenként 1 másodperccel halad előre.

Ha az órát az Arduino IDE -ről indítja, a vázlat betöltése és indítása körülbelül 5,5-6 másodpercet vesz igénybe, ha a vázlatot betöltötte az Arduino -ba, akkor csatlakoztassa azt egy fali szemölcshöz vagy tápegységhez. 3 másodperc az indításhoz és a futtatáshoz.

Némi kézi beállításra van szükség, amikor végre készen áll az óra működésre.

Ez az óra nem használ RTC modult, és nem adagolja a "delay ();" parancsokat.

Ha szeretné használni az RTC -t az Arduino -val, akkor ez a koncepció továbbra is használható. Az RTC minden információt megad az EDSC idő hozzáadásához. A kód egy RTC modulnál egészen más lehet, nem néztem bele. Nagyjából egyedül vagy, ha megteszed, de ez egy nagyszerű módja az agy gyakorlásának.

2. lépés: Amire szüksége lesz

Amire szüksége lesz
Amire szüksége lesz
Amire szüksége lesz
Amire szüksége lesz
Amire szüksége lesz
Amire szüksége lesz

BEVÁSÁRLÓ LISTA

1 Arduino Uno vagy Mega2569 (az I2C csapok A4 és A5 az UNO -n, és 20 és 21 a 2560 Mega -n)

Csaknem minden más Arduino -nak működnie kell, a használt csapok eltérőek lehetnek. Ebből a szempontból bármelyik vezérlőpanel működni fog. Át kell írnia az adott tábla vagy gyártó kódját.

1 1602 LCD kijelző (választott szín)

I2C hátlapot használok az LCD -vel, könnyebb és gyorsabb a beállítása.

Jumper vezetékek

OPCIONÁLIS KELLÉKEK

1 db közepes méretű kenyértábla

1-3 pillanatnyi érintőgomb

1-3 10 K ohmos ellenállások

Ez az oktatható hosszú, ezért nem megyek bele a tartóba vagy a szekrénybe, amelyet az óra megjelenítésére használtam. Ha tetszik ez a projekt, és szeretne állandó verziót készíteni, tervezze meg tetszés szerint. Ez a dizájn tökéletes számomra, mert a szeméttárolóban volt minden, amire szükségem volt, és tetszik a kinézete.

MEGJEGYZÉSEK:

Az áramkimaradások elkerülése érdekében az utolsó órámat egy kint lévő napelem táplálja. A napelem egy 12 voltos akkumulátort tart, amelyen egy szabályozó található, hogy megakadályozza a túltöltést. Ez az akkumulátor az USB -port melletti hálózati csatlakozón keresztül csatlakozik az Arduino -hoz. Az USB portot a hálózathoz csatlakoztatva tartom, hogy csökkentsem az akkumulátor lemerülését. Mindkét áramforrás egyszerre használható, az Arduino károsodása nélkül. Egy 12 voltos akkumulátort legfeljebb 14,5 voltra lehet tölteni, ami túl magas az Arduino számára, ezért bak konverterrel csökkentem az akkumulátor tápfeszültségét 9 és 12 volt között. Az általam feltöltött 12 voltos akkumulátor 3-4 napig bírja, ha borús a nap. Az általam használt szabályozó leállítja az Arduino áramellátását, ha az akkumulátor feszültsége 11 voltra csökken. A nálam lévő akkumulátor kereskedelmi épületek vészvilágító rendszeréből származik, körülbelül egynegyede akkora, mint egy kisautó -akkumulátor. Ha autós akkumulátort kíván használni, feltétlenül tartsa jól szellőző helyen (kívül), mert az autó akkumulátorai töltés és kisülés közben hidrogént és oxigéngázt bocsátanak ki, ez robbanásveszélyes kombináció.

FIGYELEM

AZ AKKUMULÁTOROT JÓL TARTSA

SZELLŐZETT TERÜLET, KÍVÜL

3. lépés: huzalozás

Vezeték
Vezeték

A projekt összes csatlakozásához vázlatot készítettem, ha kenyérsütő deszkát használ, akkor közepes méretű táblára lesz szüksége, a kapcsolóknak helyet kell szétteríteni, így az áramkör nem zavaró.

Az 1602 LCD kijelző az egyszerűség érdekében I2C hátsó csomaggal rendelkezik, ha SPI kapcsolatokat használ, akkor meg kell néznie a használatát, és módosítania kell a kódot a vázlat elején. Soha nem használtam az SPI csatlakozásokat, így előfordulhat, hogy a 2, 3 és 4 csapok nem állnak rendelkezésre a három nyomógombhoz.

A három nyomógombbal állítható be az óra. Csak előre haladnak az idővel (AHEAD). A végső beállításoknál tartsa az órát a lassú oldalon lévő kódban (kb. 1-2 másodperc naponta vagy több nap), így szükség esetén előreléphet. Minden gomb másodpercenként egy lépéssel, az alsó gomb 2 másodpercenként, a középső gomb 1 perccel, a felső gomb pedig 1 órával halad előre. Meglehetősen magas fokú pontosságot kell elvégezni, így nem kell gyakran módosítani.

Ha a másodperceket, perceket vagy órákat állítja be (például, ha a percek 58, 59, 00 óra előre vannak állítva), akkor az óra a következő órára lép.

Ez a három gomb az óra utolsó pillanatának kiegészítése, jól működnek, de lehet, hogy van jobb módszer is. Ne feledje, hogy ha elrontja a kód ezen részét, a "delay ();" parancs nem használható. Azért használtam ezt a módszert, mert nem kell tartanom a kapcsoló ugrálásától és a furcsa ugrásoktól az idő előrehaladtával.

4. lépés: Mit jelenít meg a kijelző

Amit a kijelző mutat
Amit a kijelző mutat

Rengeteg információt helyeztem el az 1602 LCD kijelzőn, amelyek némi magyarázatot igényelnek:

1. sor vagy nulla "0" sor, amikor kóddal beszél, a standard időt mutatja. A bal oldalon az „STD”, ez az „STandarD” idő.

A középső első sorban a helyi normál idő következik. Ne nyári időszámítással kezdje, az óra ezt a második sorban jeleníti meg.

Ez az időskála egy 12 órás óra, így a jobb oldalon az „AM” vagy a „PM” jelzi a délelőttöt vagy a délutáni órát.

2. sor, vagy az „1” sor, amikor kóddal beszél, a nyári időszámítást mutatja, amely az év napjától függően változik. A bal oldali „DST” azt jelenti, hogy „nyári időszámítás”

A második sor közepén a helyi katonai idő áll, amely 24 órás óra. Hallhatja például, hogy „ó hatszáz óra”.

A jobb oldalon a téli napforduló idején az év napja látható, az északi féltekén december 21. (megközelítőleg) a nulla "0" nap, a déli féltekén pedig június 21. (megközelítőleg) a "0" nap.

Két.pdf fájlt adtam meg referenciaként az óra első beállításakor. Válassza ki azt a fájlt, amely arra a féltekére vonatkozik, amelyben él.

A jobb oldali három gomb növeli a másodperceket, perceket és órákat alulról felfelé.

5. lépés: Vázlat beállítása

Sketch Setup
Sketch Setup

Az első indításhoz több sor kódot kell beállítani. Ezen sorok némelyikét minden alkalommal meg kell változtatni, amikor lekapcsolja az órát, és módosítja a vázlatban szereplő változók értékeit. Ha elindítja az IDE óráját, akkor körülbelül 6 másodpercig tart a betöltés és az indítás. Ha betölti a vázlatot az IDE -ből, válassza le az órát, és indítsa újra a fali szemölcsről vagy a tápegységről, a vázlat körülbelül 2,5 másodperc múlva indul el.

11. sor LiquidCrystal_I2C LCD (0x27, 2, 1, 0, 4, 5, 6, 7);

Ez a sor címzi az LCD kijelzőt, és beállítja az I2C hátizsák megfelelő címét. A 0x27 a megvásárolt hátizsákok címe. Ha bekapcsolja az órát, de nem jelennek meg adatok, de világít, a cím valószínűleg más lesz az LCD -n. Az alábbiakban egy linket teszek fel, amely leírja, hogyan módosíthatja az LCD hátizsák címét vagy megtalálja a címet.

24. sorok int percSt = 35;

Állítsa be a kezdő percet a normál órához, általában 5 perccel az óra indítása előtt állítsa be a beállítási időt.

25. sorok int óraSt = 18;

Állítsa be az órát STD időre (24 órás óra). Kezdete 18 óra. 18 óra lenne.

26. sor a DST napokban = 339;

Töltse le és nézze meg az "Easy DST Clock Time Scale" pdf fájlt (északi vagy déli féltekén), amelyben él, keresse meg a dátumot, és illessze be a # napot ebbe a sorba. (Bal oszlop). Példa (november 24. az északi féltekén a 339. nap, a déli féltekén a #156. nap)

27. sor int DSTyear = 2019;

Adja meg az aktuális évet.

92. sor, ha ((masterTime - previousMasterTimeSt> = 1000) && (microTime - previousMicroTimeSt> = 500)) {

Az "previousMasterTimeSt" -et össze kell hasonlítani a ezredmásodpercek számával, így ezt az '1000 -et 999 -re kell változtatni az Arduino kártya belső órájától függően, majd állítsa be az előzőMicroTime -t az óra finomhangolásához. A belső óra, bár a 16MH -nak vannak variációi az egyik tábláról a másikra.

Az "előzőMicroTimeSt" finomhangolja a belső órát, hogy pontos 1 másodpercet számoljon. Ha az óra túl gyors, növelje a mikroszekundumokat, és ha az óra túl lassú, csökkentse a mikroszekundumokat, és ha szükséges, csökkentse az ezredmásodperceket 999 -re, majd indítsa el a mikroszekundumokat körülbelül 999, 990 -ről, vagy növelje az óra sebességét.

Minden Arduino tábla kissé eltérő sebességgel rendelkezik, ezért ezek a számok minden egyes táblával változnak. A kód egy részét még nem tesztelték, ez a szökőév 248 -as sora. A következő hetekben tesztelni fogom, és szükség esetén közzéteszem a változtatásokat.

6. lépés: Záró megjegyzések

Záró megjegyzések
Záró megjegyzések

Ez a projekt könnyen felépíthető, de a kód koncepciója és a szükséges kiigazítások feladatot jelenthetnek, szánjon rá időt, és gondolja végig, az óra nem jár le 2037 végéig. Szorosan figyelemmel fogom kísérni e -mailt kérdésekre, mert biztos vagyok benne, hogy lesz néhány, nem vagyok irodalmi zseni, így néhány leírásom kissé sáros lehet.

Két.pdf fájlt tartalmaz, töltse le a tartózkodási helyének megfelelő féltekét, ez a fájl megadja az óra pontos elindításához szükséges információkat.

A vázlatban manipulált információkkal könnyű lenne nemcsak a normál időt és a DST időt, hanem a napot és a dátumot is megjeleníteni egy 2004A LCD kijelzőn. Ha tetszik a projekt által kínált kihívások, akkor csatlakoztasson egy 2004A LCD -kijelzőt, majd adjon hozzá kódot a további információk megjelenítéséhez, vagy ha elegendő érdeklődés mutatkozik, akkor elkészítem a projekt egy másik változatát, beleértve ezeket a kiegészítő információkat.

Próbáltam mindenben részt venni ebben a projektben, de a világ három területét találtam. Az Északi -sark, a Déli -sark és az Egyenlítő.

Szükséges vagy egyáltalán lehetséges -e a DST az északi vagy a déli póluson?

Hány óra van az északi vagy a déli póluson?

Milyen irányba utazna, hogy elhagyja az Északi -sarkot vagy a Déli -sarkot?

A Déli -sarktól milyen irányba utazna, hogy elérje Ausztráliát, Észak -Amerikát, Európát vagy Ázsiát?

Melyik időzónában él a Mikulás?

Kell neki DST?

Egyébként hány óra van az Északi -sarkon?

Milyen irányba utazik a Mikulás, hogy eljuttassa minden ajándékát?

Milyen szélességi fokon hatékony a DST?

Most az Egyenlítőre;

Használható ez az óra az Egyenlítőn?

Az északi vagy a déli félteke skálát használnák?

Melyek a téli napforduló és a nyári napforduló időpontjai?

Milyen szélességi fokon hatékony a DST?

Szüksége van a pingvineknek DST -re?

Szerinted furcsa vagyok ezeken a kérdéseken gondolkodni?

Boldog építkezést mindenkinek!

filmmutya

7. lépés: Egyéb linkek

Ez a link az I2C hátizsák címének meghatározásához vagy megváltoztatásához:

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

A PiotrS kiváló utasításokat írt az I2C hardvercímekhez

playground.arduino.cc/Main/I2cScanner

Ez a link beolvassa az I2C -eszközt, és visszaadja a címet

Ajánlott: