Innholdsfortegnelse:

Pensjonsklokke / Count Up / Dn Clock: 4 trinn (med bilder)
Pensjonsklokke / Count Up / Dn Clock: 4 trinn (med bilder)

Video: Pensjonsklokke / Count Up / Dn Clock: 4 trinn (med bilder)

Video: Pensjonsklokke / Count Up / Dn Clock: 4 trinn (med bilder)
Video: Convenience items needed in the family 2024, Juli
Anonim
Pensjonsklokke / Count Up / Dn Clock
Pensjonsklokke / Count Up / Dn Clock

Jeg hadde noen av disse 8x8 LED-dotmatriseskjermene i skuffen og tenkte på hva jeg skulle gjøre med dem. Inspirert av andre instruktører, fikk jeg ideen om å bygge en nedtelling/oppvisning for å telle ned til en fremtidig dato/tid, og hvis måletiden gikk, kan du telle opp fra den. Jeg gjorde dette nå til pensjonsklokken min på hyllen.

Ideen om å putte den i en flaske var mer en ulykke mens du tenkte på et foringsrør. Andre legger skip i en flaske, hvorfor ikke en klokke?

Jeg ønsket også å få klokken til å lyde sommertid og selvfølgelig huske innstillingene og klokkeslettet når den ble koblet fra. Jeg driver klokken via USB, noe som gjør den omprogrammerbar hvis du vil gjøre noe annerledes eller bare legge til funksjoner i koden. Koden er ganske enkel og kan også bruke mye optimalisering. Jeg tok ikke godt vare på RAM -forbruket må jeg innrømme. Hvis jeg får tid og motivasjon, kommer jeg tilbake til det.

Rekvisita

1. Arduino Nano

2. RTC (jeg brukte den vanlige DS3231 som også har en EEPROM)

3. 12x 8x8 dot matrisemodul. (Jeg hadde firemodulene som er lettere å stille opp)

4. LDR for å justere displayets lysstyrke

5. Motstand 10 kOhm

6. Kondensator 5x 100 uF undertrykker pigger fra displayet

7. For å øke kontrasten til 8x8 modulene, brukte jeg den mørkfargede "Window Film". Displayet viser lysdiodene som hvite prikker hvis de ikke lyser. Vindusfilmen gir et skinnende svart utseende.

Trinn 1: Koble til komponentene

Koble til komponentene
Koble til komponentene
Koble til komponentene
Koble til komponentene

Jeg brukte tre av fire -skjermer for å montere skjermen. For å vise en dato med skråstreker og tid med kolon, trenger vi plass til åtte tegn. Ved å bruke den typiske 5x7 -skriften trenger vi seks 8x8 blokker per rad. Jeg kuttet en av firblokkene i to og ordnet disse som to rader med seks blokker som vist i brødbrettskjemaet.

Trinn 2: 3D -trykte deler

3D -trykte deler
3D -trykte deler
3D -trykte deler
3D -trykte deler
3D -trykte deler
3D -trykte deler

For å holde de to radene på displayet og plassere disse i flasken, skrev jeg ut runde avstandsringer for skjermrammen. Jeg la til filene jeg brukte nedenfor. For å kunne skrive ut disse uten støtte, er de delt i deler. Skjermbildet viser de to ringene limt til skjermrammen. Flaskehalsdekselet inneholder de tre knappene for å bytte mellom visningsmoduser og innstilling av nåværende tid og måltid. Flaskehalsdekselet jeg trykte i TPU, slik at du kan skyve USB -kabelen inn i dekselet uten å kutte av kontaktene og feste det med et par viklinger av ledning. Jeg glemte å nevne at jeg brukte en 1,5 L vinflaske som jeg kuttet helt nederst. Alle delene som skal skrives ut passer på en 20x20 cm (8x8 in) skriverseng.

Trinn 3: Koden

Arduino -koden bruker noen få brukte biblioteker.

MD_MAX72xx

SPI

Metalltråd

RTClib

Tidssone

TimeLib

Det er noen få linjer i INO -filen som må endres:

Linje 38: #define HARDWARE_TYPE MD_MAX72XX:: FC16_HW <- avhenger av 8x8-modulen og dens retning

i stedet for FC16_HW kan det være en av:

- MD_MAX72XX:: PAROLA_HW

- MD_MAX72XX:: GENERIC_HW

- MD_MAX72XX:: ICSTATION_HW

- MD_MAX72XX:: FC16_HW

Koden bruker innstillingene for amerikansk sentral tid og må justeres for andre tidssoner:

Linje 53/54:

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

Dette er enkelt å justere. Navnet CST/CDT er bare for å ha en referanse. Jeg viser ikke forkortelsen på tre bokstaver, så det spiller ingen rolle. De neste parametrene refererer til hvilken dag i måneden byttet skjer. Justeringen er i minutter, så steder som bruker justeringer på +/- 30 minutter vil også fungere.

RTC kjører internt på UTC-tid slik at tidssonebiblioteket kan fungere etter hensikten. Du lurer kanskje på hvorfor koden refererer til den eldre DS1307 -brikken i motsetning til klokkebrikken jeg brukte, men dette spiller ingen rolle. Biblioteket fungerer fint med begge brikkene. DS1307 har en tendens til å drive av mer enn DS3132. DS3132 er den foretrukne klokken. For de som ønsker å legge til internettid, vil en ESP8266 gjøre jobben ganske enkelt. Dette kan gjøre RTC foreldet. Hvis du gjør disse endringene, bruker du Arduino EEPROM til å lagre måltiden. Jeg brukte RTC EEPROM til å gjøre det.

Trinn 4: Drift og innstillinger

Drift og innstillinger
Drift og innstillinger
Drift og innstillinger
Drift og innstillinger
Drift og innstillinger
Drift og innstillinger

Det er tre knapper

1. Meny / innstillinger

2. Opp

3. Ned

Menyknappen lar deg sykle gjennom de tre displaytypene: Nåværende tid, Måltid, Delta -tid. Delta -tiden viser antall dager, HH/MM/SS mellom gjeldende tid og måltid. Det vil vise t- og telle ned hvis målet er i fremtiden eller t+ og telle opp hvis målet er i fortiden.

For å justere gjeldende eller måltid, velg gjeldende klokkeslett eller måltidsvisning. For å endre klokkeslettet, hold inne menyknappen i 2 sekunder og slipp som vil bringe deg til innstillingsmodus. Naboen "/" eller ":" blir til "" for å indikere hvilket siffer du justerer. Bruk opp/ned -knappene for å justere de individuelle tt/mm/ss og mm/dd/åå. Jeg la ikke til en innstilling for å bytte mellom mm/dd/åå og dd/mm/åå, dette må endres i koden eller kanskje noen er villige til å legge til denne funksjonen.

Du vil legge merke til at hvis du går minuttene over 59 eller under 00, vil timevisningen også justeres. det samme gjelder for sekunder, timer og dager som endrer neste høyere verdi hvis du krysser under 0 eller over maks for dette sifferet. Jeg gjorde dette for å unngå å programmere de forskjellige grensene for individuelle måneder, og hvis februar trenger 29 dager i et skuddår. Justering av klokkeslettet er faktisk gjort i epok-tid, sekunder siden 1-1-1970.

Jeg la til en enkel video for å vise tellingen. Jeg ønsket å lage disse som et svinghjul. Hvis du liker å justere varigheten av endringen, gir linje 69 i INO deg noen alternativer for å øke eller bremse endringen. 120 ms ville få sifrene til å rulle sakte nok, da det ville være et hjul som løper kontinuerlig.

Jeg håper du likte dette lærerikt.

Patrick Geschwindner

Anbefalt: