Innehållsförteckning:

Pensionsklocka / räkna upp / Dn -klocka: 4 steg (med bilder)
Pensionsklocka / räkna upp / Dn -klocka: 4 steg (med bilder)

Video: Pensionsklocka / räkna upp / Dn -klocka: 4 steg (med bilder)

Video: Pensionsklocka / räkna upp / Dn -klocka: 4 steg (med bilder)
Video: Макрон тайно снял дорогие часы под столом и этого ему не простили 2024, November
Anonim
Pensionsklocka / räkna upp / Dn klocka
Pensionsklocka / räkna upp / Dn klocka

Jag hade några av dessa 8x8 LED-punktmatrisdisplayer i lådan och funderade på vad jag skulle göra med dem. Inspirerad av andra instruktioner fick jag idén att bygga en nedräkning/upp display för att räkna ner till ett framtida datum/tid och om måltiden passerade, räkna upp från den. Jag gjorde detta nu till min pensionsklocka som satt på hyllan.

Tanken att lägga den i en flaska var mer en olycka när man tänkte på ett hölje. Andra lägger fartyg i en flaska, varför inte en klocka?

Jag ville också få klockan att lyda sommartid och naturligtvis komma ihåg inställningarna och tiden när den kopplades bort. Jag driver klockan via USB vilket gör den omprogrammerbar om du vill göra något annorlunda eller bara lägga till funktioner i koden. Koden är ganska enkel och kan också använda mycket optimering. Jag tog inte väl hand om RAM -förbrukningen måste jag erkänna. Om jag har tid och motivation kommer jag tillbaka till det.

Tillbehör

1. Arduino Nano

2. RTC (jag använde den vanliga DS3231 som också har en EEPROM)

3. 12x 8x8 dot matrismodul. (Jag hade fyrmodulerna som är lättare att ställa upp)

4. LDR för att justera skärmens ljusstyrka

5. Motstånd 10 kOhm

6. Kondensator 5x 100 uF undertrycker spikar från displayen

7. För att öka kontrasten mellan 8x8 -modulerna använde jag den mörkfärgade "Window Film". Displayen visar lysdioderna som vita prickar om de inte lyser. Fönsterfilmen ger en blank svart look.

Steg 1: Anslut komponenterna

Anslut komponenterna
Anslut komponenterna
Anslut komponenterna
Anslut komponenterna

Jag använde tre av fyrskärmarna för att montera bildskärmen. För att visa ett datum med snedstreck och tid med kolon behöver vi plats för 8 tecken. Med det typiska 5x7 -teckensnittet skulle vi behöva sex 8x8 block per rad. Jag skar ett av fyrhjulingsblocken på mitten och ordnade dessa som två rader med sex block som visas i panelen.

Steg 2: 3D -tryckta delar

3D -tryckta delar
3D -tryckta delar
3D -tryckta delar
3D -tryckta delar
3D -tryckta delar
3D -tryckta delar

För att hålla de två raderna på displayen och placera dessa i flaskan skrev jag ut runda distansringar för displayramen. Jag lade till filerna jag använde nedan. För att kunna skriva ut dessa utan stöd är de delade i delar. Skärmdumpen visar de två ringarna limmade på bildskärmsramen. Flaskhalsskyddet innehåller de tre knapparna för att växla mellan visningslägen och ställa in aktuell tid och måltid. Flaskhalsskyddet skrev jag ut i TPU så att USB -kabeln kunde skjutas in i locket utan att klippa av kontakterna och binda fast det med några trådlindningar. Jag glömde nämna att jag använde en 1,5 L vinflaska som jag skär längst ner. Alla delar som ska skrivas ut passar på en 20x20 cm (8x8 tum) skrivarsäng.

Steg 3: Koden

Arduino -koden använder några få vanliga bibliotek.

MD_MAX72xx

SPI

Tråd

RTClib

Tidszon

TimeLib

Det finns några rader i INO -filen som kan behöva ändras:

Rad 38: #define HARDWARE_TYPE MD_MAX72XX:: FC16_HW <- beror på 8x8-modulen och dess orientering

istället för FC16_HW kan det vara en av:

- MD_MAX72XX:: PAROLA_HW

- MD_MAX72XX:: GENERIC_HW

- MD_MAX72XX:: ICSTATION_HW

- MD_MAX72XX:: FC16_HW

Koden använder inställningarna för amerikansk central tid och behöver justeras för andra tidszoner:

Linje 53/54:

TimeChangeRule myDST = {"CDT", andra, sön, mar, 2, -300}; // Sommartid UTC -5TimeChangeRule mySTD = {"CST", First, Sun, Nov, 2, -360}; // Standardtid UTC -6

Detta är lätt att justera. Namnet CST/CDT är bara för att ha en referens. Jag visar inte förkortningen på tre bokstäver, så det spelar ingen roll. Nästa parametrar hänvisar till vilken dag i månaden växlingen sker. Justeringen sker i minuter, så platser som använder +/- 30 minuters justeringar fungerar också.

RTC körs internt på UTC-tid så att tidszonsbiblioteket fungerar som avsett. Du kanske undrar varför koden refererar till det äldre DS1307 -chipet i motsats till klockchippet jag använde, men det spelar ingen roll. Biblioteket fungerar bra med båda chippen. DS1307 har en tendens att glida av mer än DS3132. DS3132 är den föredragna klockan. För dem som vill lägga till internettid kommer en ESP8266 att göra jobbet ganska enkelt. Detta kan göra RTC föråldrad. Om du gör dessa ändringar, använd Arduino EEPROM för att lagra måltiden, jag använde RTC EEPROM för att göra det.

Steg 4: Användning och inställningar

Användning och inställningar
Användning och inställningar
Användning och inställningar
Användning och inställningar
Användning och inställningar
Användning och inställningar

Det finns tre knappar

1. Meny / inställningar

2. Upp

3. Ner

Menyknappen gör det möjligt att cykla genom de tre skärmtyperna: Aktuell tid, Måltid, Delta -tid. Delta -tiden visar antalet dagar, HH/MM/SS mellan aktuell tid och måltid. Det visar t- och nedräkning om målet är i framtiden eller t+ och räknar upp om målet är tidigare.

Om du vill justera aktuell eller måltid väljer du aktuell eller visad måltid. För att ändra tiden, håll menyknappen nedtryckt i 2 sekunder och släpp, vilket tar dig till inställningsläget. Den intilliggande "/" eller ":" kommer att förvandlas till "" för att indikera vilken siffra du justerar. Använd upp/ner -knapparna för att justera de individuella hh/mm/ss och mm/dd/åå. Jag lade inte till en inställning för att växla mellan mm/dd/åå och dd/mm/åå, detta måste ändras i koden eller kanske är någon villig att lägga till den här funktionen.

Du kommer att märka att om du kliver minuter över 59 eller under 00, kommer timvisningen också att justeras. samma sak gäller för sekunder, timmar och dagar som ändrar nästa högre värde om man passerar under 0 eller över maxvärdet för denna siffra. Jag gjorde detta för att undvika att programmera de olika gränserna för enskilda månader och om februari behöver 29 dagar under ett skottår. Justeringen av tiden görs faktiskt i epoktid, sekunder sedan 1-1-1970.

Jag lade till en enkel video för att visa räkningen. Jag ville göra dessa som en svänghjulsdisplay. Om du gillar att justera ändringens varaktighet ger rad 69 i INO dig några alternativ för att påskynda eller bromsa ändringen. 120 ms skulle få siffrorna att rulla tillräckligt långsamt eftersom det skulle vara ett hjul som löper kontinuerligt.

Jag hoppas att du njöt av detta instruerbara.

Patrick Geschwindner

Rekommenderad: