Turinys:

Išėjimo į pensiją / suskaičiavimo / „Dn“laikrodis: 4 žingsniai (su nuotraukomis)
Išėjimo į pensiją / suskaičiavimo / „Dn“laikrodis: 4 žingsniai (su nuotraukomis)

Video: Išėjimo į pensiją / suskaičiavimo / „Dn“laikrodis: 4 žingsniai (su nuotraukomis)

Video: Išėjimo į pensiją / suskaičiavimo / „Dn“laikrodis: 4 žingsniai (su nuotraukomis)
Video: Nuo ko priklausys Jūsų pensija? 2024, Lapkritis
Anonim
Senatvės laikrodis / suskaičiuokite / Dn laikrodis
Senatvės laikrodis / suskaičiuokite / Dn laikrodis

Stalčiuje turėjau keletą šių 8x8 LED taškinių matricų ekranų ir galvojau, ką su jais daryti. Įkvėptas kitų nurodymų, man kilo idėja sukurti atgalinio skaičiavimo atgal/atgal ekraną, kad būtų galima skaičiuoti iki būsimos datos/laiko ir, jei praėjo numatytas laikas, skaičiuoti nuo jo. Dabar aš padariau tai savo pensinį laikrodį, sėdintį ant lentynos.

Idėja įdėti jį į butelį buvo daugiau atsitiktinumas galvojant apie korpusą. Kiti įdėjo laivus į butelį, kodėl gi ne laikrodį?

Taip pat norėjau, kad laikrodis atitiktų vasaros laiką ir, žinoma, atsimintų nustatymus ir laiką, kai jis bus atjungtas. Aš įjungiu laikrodį per USB, todėl jį galima perprogramuoti, jei norite padaryti ką nors kitaip arba tiesiog pridėti kodo funkcijų. Kodas yra gana paprastas ir taip pat gali būti naudojamas daug optimizavimo. Turiu pripažinti, kad netinkamai rūpinausi RAM sunaudojimu. Jei turėsiu laiko ir motyvacijos, grįšiu.

Prekės

1. „Arduino Nano“

2. RTC (naudojau įprastą DS3231, kuris taip pat turi EEPROM)

3. 12x 8x8 taškinės matricos modulis. (Turėjau keturių modulių, kuriuos lengviau suderinti)

4. LDR ekrano ryškumui reguliuoti

5. Rezistorius 10 kOhm

6. Kondensatorius 5x 100 uF slopinantis šuolius iš ekrano

7. Norėdami padidinti 8x8 modulių kontrastą, naudojau tamsiai tonuotą „Langų plėvelę“. Ekrane rodomi šviesos diodai kaip balti taškai, jei jie nedega. Langų plėvelė suteikia blizgančią juodą išvaizdą.

1 veiksmas: prijunkite komponentus

Prijunkite komponentus
Prijunkite komponentus
Prijunkite komponentus
Prijunkite komponentus

Ekranui surinkti naudojau tris iš keturių ekranų. Norėdami parodyti datą su brūkšniais ir laiką su dvitaškiais, mums reikia vietos 8 simboliams. Naudojant įprastą 5x7 šriftą, mums reikia šešių 8x8 blokų kiekvienoje eilutėje. Aš perpjoviau vieną iš keturių blokų per pusę ir išdėstiau jas dviem eilėmis šešiais blokais, kaip parodyta duonos lentos schemoje.

2 žingsnis: 3D spausdintos dalys

3D spausdintos dalys
3D spausdintos dalys
3D spausdintos dalys
3D spausdintos dalys
3D spausdintos dalys
3D spausdintos dalys

Norėdami laikyti dvi ekrano eilutes ir įdėti jas į butelį, aš išspausdinau apvalius ekrano rėmo žiedus. Aš pridėjau failus, kuriuos naudoju žemiau. Kad juos būtų galima spausdinti be palaikymo, jie yra padalinti į dalis. Ekrano kopijoje rodomi du žiedai, priklijuoti prie ekrano rėmo. Butelio kaklelio dangtelyje yra trys mygtukai, skirti perjungti rodymo režimus ir nustatyti dabartinį laiką bei tikslinį laiką. Buteliuko kaklelio dangtelį atspausdinau TPU, leidžiantį įstumti USB kabelį į dangtelį nenutraukiant jungčių ir susieti jį keliomis vielos apvijomis. Pamiršau paminėti, kad naudojau 1,5 l vyno butelį, kurį supjaustiau pačioje apačioje. Visos spausdintinos dalys dedamos ant 20x20 cm (8x8 colių) spausdintuvo lovos.

3 žingsnis: Kodas

„Arduino“kodas naudoja keletą dažniausiai naudojamų bibliotekų.

MD_MAX72xx

SPI

Viela

RTClib

Laiko zona

„TimeLib“

INO faile yra keletas eilučių, kurias gali tekti pakeisti:

38 eilutė: #define HARDWARE_TYPE MD_MAX72XX:: FC16_HW <- priklauso nuo 8x8 modulio ir jo orientacijos

vietoj FC16_HW jis gali būti vienas iš šių:

- MD_MAX72XX:: PAROLA_HW

- MD_MAX72XX:: GENERIC_HW

- MD_MAX72XX:: ICSTATION_HW

- MD_MAX72XX:: FC16_HW

Kodas naudoja JAV centrinio laiko nustatymus ir jį reikia koreguoti pagal kitas laiko juostas:

53/54 eilutė:

TimeChangeRule myDST = {"CDT", Second, Sun, Mar, 2, -300}; // vasaros laikas UTC -5TimeChangeRule mySTD = {"CST", First, Sun, Nov, 2, -360}; // Standartinis laikas UTC -6

Tai lengva sureguliuoti. Pavadinimas CST/CDT yra tik nuoroda. Aš nerodau trijų raidžių santrumpos, todėl tai nesvarbu. Kiti parametrai nurodo, kurią mėnesio dieną vyksta perjungimas. Koregavimas atliekamas per kelias minutes, todėl vietovės, kuriose naudojami +/- 30 minučių koregavimai, taip pat veiks.

RTC veikia viduje UTC laiku, todėl laiko juostų biblioteka gali veikti taip, kaip numatyta. Jums gali kilti klausimas, kodėl kodas nurodo senesnį DS1307 lustą, priešingai nei mano naudojamas laikrodžio lustas, tačiau tai nesvarbu. Biblioteka puikiai veikia su bet kuria mikroschema. DS1307 turi tendenciją nutolti daugiau nei DS3132. DS3132 yra pageidaujamas laikrodis. Tiems, kurie nori pridėti laiko internete, ESP8266 gana lengvai atliks šį darbą. Dėl to RTC gali pasenti. Jei atliksite šiuos pakeitimus, naudokite „Arduino EEPROM“norimam laikui išsaugoti, aš tam naudojau RTC EEPROM.

4 veiksmas: valdymas ir nustatymai

Operacija ir nustatymai
Operacija ir nustatymai
Operacija ir nustatymai
Operacija ir nustatymai
Operacija ir nustatymai
Operacija ir nustatymai

Yra trys mygtukai

1. Meniu / nustatymai

2. Aukštyn

3. Žemyn

Meniu mygtukas leidžia važiuoti trimis ekrano tipais: Dabartinis laikas, Tikslinis laikas, Delta laikas. Delta laikas rodo dienų skaičių, HH/MM/SS tarp dabartinio laiko ir tikslinio laiko. Bus rodomas t- ir skaičiavimas atgal, jei tikslas yra ateityje arba t+, ir skaičiuojamas atgal, jei tikslas yra praeityje.

Norėdami koreguoti dabartinį arba tikslinį laiką, pasirinkite dabartinį laiką arba tikslinio laiko rodinį. Norėdami pakeisti laiką, 2 sekundes palaikykite nuspaudę meniu mygtuką ir atleiskite, tada pateksite į nustatymo režimą. Šalia esantis „/“arba „:“virsta „“, kad nurodytų, kurį skaitmenį koreguojate. Naudokite aukštyn/žemyn mygtukus, kad sureguliuotumėte individualius hh/mm/ss ir mm/dd/yy. Nepridėjau nustatymo, kad perjungtumėte mm/dd/yy į dd/mm/yy, tai reikia pakeisti kodu arba galbūt kažkas nori pridėti šią funkciją.

Pastebėsite, kad jei padidinsite minučių skaičių virš 59 arba žemiau 00, taip pat bus sureguliuotas valandų rodymas. tas pats pasakytina apie sekundes, valandas ir dienas, keičiant kitą didesnę vertę, jei kertama žemiau 0 arba viršijama šio skaitmens maksimali vertė. Aš tai padariau, kad išvengčiau įvairių atskirų mėnesių ribų programavimo ir jei vasariui reikia 29 dienų keliamaisiais metais. Laiko koregavimas iš tikrųjų atliekamas epochos laiku, sekundėmis nuo sausio 1–1970 m.

Pridėjau paprastą vaizdo įrašą, kuris parodo skaičiavimą. Norėjau tai padaryti kaip besisukantį rato ekraną. Jei norite pakoreguoti pakeitimo trukmę, INO 69 eilutėje pateikiamos kelios galimybės, kaip paspartinti arba sulėtinti pakeitimą. 120 ms priverstų skaitmenis slinkti pakankamai lėtai, nes tai būtų nuolat veikiantis ratas.

Tikiuosi, kad jums patiko ši pamoka.

Patrickas Geschwindneris

Rekomenduojamas: