Tartalomjegyzék:

Nyugdíjas óra / számlálás / Dn óra: 4 lépés (képekkel)
Nyugdíjas óra / számlálás / Dn óra: 4 lépés (képekkel)

Videó: Nyugdíjas óra / számlálás / Dn óra: 4 lépés (képekkel)

Videó: Nyugdíjas óra / számlálás / Dn óra: 4 lépés (képekkel)
Videó: Dark Arrows Mosaic Crochet Pouch, Part 2 2024, November
Anonim
Nyugdíjas óra / Count Up / Dn Clock
Nyugdíjas óra / Count Up / Dn Clock

Volt néhány ilyen 8x8 LED-es pontmátrixos kijelző a fiókban, és azon gondolkodtam, mit kezdjek velük. Más utasítások által inspirálva merült fel bennem az ötlet, hogy készítsek egy visszaszámláló/felfelé mutató kijelzőt, amely visszaszámol egy jövőbeli dátumra/időre, és ha a célidő eltelt, akkor számoljon belőle. Ezt most a nyugdíjas órámnak készítettem a polcon.

Az ötlet, hogy egy üvegbe tegyük, inkább baleset volt, amikor a burkolatra gondoltam. Mások hajókat tesznek egy üvegbe, miért nem egy órát?

Azt is szerettem volna, hogy az óra engedelmeskedjen a nyári időszámításnak, és természetesen ne felejtse el a beállításokat és az időt, amikor kihúzzák a konnektorból. Az órát USB -n keresztül táplálom, ami újraprogramozhatóvá teszi, ha mást szeretne csinálni, vagy csak funkciókat szeretne hozzáadni a kódhoz. A kód meglehetősen egyszerű, és sok optimalizálást is igénybe vehet. Nem törődtem jól a RAM fogyasztásával, be kell vallanom. Ha lesz időm és motivációm, visszatérek rá.

Kellékek

1. Arduino Nano

2. RTC (a közös DS3231 -et használtam, amely EEPROM -ot is tartalmaz)

3. 12x 8x8 pontmátrix modul. (Nekem a négy modulom volt, amelyek könnyebben beállíthatók)

4. LDR a kijelző fényerejének beállításához

5. Ellenállás 10 kOhm

6. Kondenzátor 5x 100 uF elnyomó tüskék a kijelzőről

7. A 8x8 modulok kontrasztjának növelése érdekében a sötét színezett "Window Film" -t használtam. A kijelző fehér pöttyként mutatja a LED -eket, ha nem világít. Az ablakfilm fényes fekete megjelenést kölcsönöz.

1. lépés: Csatlakoztassa az alkatrészeket

Csatlakoztassa az alkatrészeket
Csatlakoztassa az alkatrészeket
Csatlakoztassa az alkatrészeket
Csatlakoztassa az alkatrészeket

A négyes kijelzőből hármat használtam a kijelző összeállításához. Ahhoz, hogy a dátumot perjelekkel, az időt kettősponttal jelenítsük meg, 8 karakterre van szükségünk. A tipikus 5x7 betűtípust használva soronként hat 8x8 blokkra van szükségünk. Az egyik quad blokkot félbevágtam, és ezeket két sorban, hat blokkban rendeztem el, ahogyan a kenyeretábla sematikája mutatja.

2. lépés: 3D nyomtatott alkatrészek

3D nyomtatott alkatrészek
3D nyomtatott alkatrészek
3D nyomtatott alkatrészek
3D nyomtatott alkatrészek
3D nyomtatott alkatrészek
3D nyomtatott alkatrészek

A kijelző két sorának megtartásához és a palackba helyezéséhez kerek távolságú gyűrűket nyomtam a kijelző keretéhez. Az alábbiakban hozzáadtam a használt fájlokat. Ahhoz, hogy ezeket támogatás nélkül kinyomtathassa, részekre van osztva. A képernyőképen a két keret látható a kerethez ragasztva. A palacknyak fedelében található a három gomb a kijelző módok közötti váltáshoz, valamint az aktuális és célidő beállításához. A palacknyak fedelét TPU -ban kinyomtattam, amely lehetővé teszi az USB -kábel behelyezését a fedélbe anélkül, hogy levágná a csatlakozókat, és néhány huzal tekercselésével lekötné. Elfelejtettem megemlíteni, hogy 1,5 literes borosüveget használtam, amelyet az alján vágtam. Minden nyomtatandó alkatrész 20x20 cm -es (8x8 hüvelykes) nyomtatóágyra illeszkedik.

3. lépés: A kód

Az Arduino kód néhány általánosan használt könyvtárat használ.

MD_MAX72xx

SPI

Huzal

RTClib

Időzóna

TimeLib

Az INO fájlban van néhány sor, amelyeket módosítani kell:

38. sor: #define HARDWARE_TYPE MD_MAX72XX:: FC16_HW <- függ a 8x8-as modultól és annak tájolásától

az FC16_HW helyett a következők egyikét teheti:

- MD_MAX72XX:: PAROLA_HW

- MD_MAX72XX:: GENERIC_HW

- MD_MAX72XX:: ICSTATION_HW

- MD_MAX72XX:: FC16_HW

A kód az amerikai középidő beállításait használja, és módosítani kell más időzónákhoz:

53/54. Sor:

TimeChangeRule myDST = {"CDT", Second, Sun, Mar, 2, -300}; // Nyári időszámítás UTC -5TimeChangeRule mySTD = {"CST", First, Sun, Nov, 2, -360}; // Normál idő UTC -6

Ezt könnyű beállítani. A CST/CDT név csak hivatkozásként szolgál. A hárombetűs rövidítést nem jelenítem meg, tehát mindegy. A következő paraméterek arra vonatkoznak, hogy a hónap melyik napján történik a váltás. A beállítás percben történik, így a +/- 30 perces beállításokat használó helyek is működni fognak.

Az RTC belsőleg fut UTC-Time-on, lehetővé téve az időzóna-könyvtár rendeltetésszerű működését. Felmerülhet a kérdés, hogy a kód miért hivatkozik a régebbi DS1307 chipre, ellentétben az általam használt órachippel, de ez nem számít. A könyvtár bármelyik chippel jól működik. A DS1307 hajlamosabb a sodródásra, mint a DS3132. a DS3132 az előnyben részesített óra. Azok számára, akik szeretnék hozzáadni az internethez szükséges időt, az ESP8266 elég könnyen elvégzi a munkát. Ez elavulttá teheti az RTC -t. Ha ezeket a módosításokat végzi, használja az Arduino EEPROM -ot a célidő tárolásához, én az RTC EEPROM -ot használtam ehhez.

4. lépés: Működés és beállítások

Működés és beállítások
Működés és beállítások
Működés és beállítások
Működés és beállítások
Működés és beállítások
Működés és beállítások

Három gomb van

1. Menü / beállítások

2. Fel

3. Le

A menügomb lehetővé teszi a három kijelzőtípus közötti váltást: aktuális idő, célidő, delta idő. A delta idő a napok számát mutatja ÓÓ/HH/SS az aktuális idő és a célidő között. Megjelenik a t- és visszaszámlálás, ha a cél a jövőben van, vagy a t+, és felfelé számol, ha a cél a múltban van.

Az aktuális vagy célidő beállításához válassza ki az aktuális időt vagy a célidőt. Az idő módosításához tartsa lenyomva a menügombot 2 másodpercig, majd engedje el, és a beállítási módba kerül. A szomszédos "/" vagy ":" "" -ra változik, jelezve, hogy melyik számjegyet állítja be. A fel/le gombokkal állítsa be az egyes óó/pp/é és mm/dd/yy értékeket. Nem adtam hozzá beállítást a mm/dd/yy és dd/mm/yy közötti váltáshoz, ezt meg kell változtatni a kódban, vagy esetleg valaki hajlandó hozzáadni ezt a funkciót.

Észre fogja venni, hogy ha a percet 59 fölé vagy 00 alá állítja, akkor az óra kijelzése is módosul. ugyanez vonatkozik a másodpercekre, órákra és napokra, amelyek megváltoztatják a következő magasabb értéket, ha ennek a számjegynek a 0 alatt vagy a maximális érték felett lépnek át. Ezt azért tettem, hogy elkerüljem az egyes hónapok különböző határainak programozását, és ha februárnak szökőévben 29 napra van szüksége. Az idő beállítása valójában korszakidő, másodperc, január 1-1970 óta történik.

Hozzáadtam egy egyszerű videót a számolás bemutatásához. Ezeket úgy akartam csinálni, mint egy forgó kerék kijelzőt. Ha módosítani szeretné a változtatás időtartamát, az INO 69. sora néhány lehetőséget kínál a változás gyorsítására vagy lassítására. 120 ms a számjegyek elég lassú görgetését eredményezné, mivel folyamatosan futó kerékről lenne szó.

Remélem tetszett ez az oktatható.

Patrick Geschwindner

Ajánlott: