Go Down

Topic: Digitale klok met veel mogelijkheden (Read 892 times) previous topic - next topic

SebastiaanSpeck

Jan 12, 2018, 04:51 pm Last Edit: Jan 13, 2018, 11:04 am by SebastiaanSpeck
Ik heb met behulp van een RTC (DS3231) en een LCD (16x2) een digitale klok gebouwd.

De klok heeft veel mogelijkheden:
  • Tijd weergeven
  • Datum weergeven (verschillende formaten)
  • Temperatuur weergeven (Celcius en Fahrenheit)
  • Dag vd week weergeven (Engels en Nederlands)
  • Weeknummer weergeven
  • Dagnummer weergeven

Future:
  • Luchtvochtigheid (%)
  • Dauwpunt (Celcius en Fahrenheit)
  • Alarm
  • Timer
  • Zomer/wintertijd instellen
  • Lokale tijd van verschillende locaties


Deze klok wordt nog verder uitgebreid dmv knoppen, maar hiervoor koop ik een shield of een groter LCD. Mijn vraag aan jullie is, is of jullie verbeteringen hebben voor mijn code.

nicoverduin

Delay(5000) niet echt de beste keuze
Commentaar en functie beschrijving commentaar
Met vriendelijke groet / kindest regards
Nico Verduin
www.verelec.nl
Do not PM me for personal consultancy unless you are willing to pay for it.

SebastiaanSpeck

Delay(5000) niet echt de beste keuze
Commentaar en functie beschrijving commentaar
Delay(5000) vervangen door eenzelfde oplossing als BlinkNoDelay?
En wat bedoel je precies met commentaar en functie beschrijving commentaar? Meer uitleg geven over de functies?

sterretje

Geef previousMillis en oldMillis namen die de lading dekken.

bv previousMillis -> lastDateTimeRefreshMillis

If you understand an example, use it.
If you don't understand an example, don't use it.

Electronics engineer by trade, software engineer by profession. Trying to get back into electronics after 15 years absence.

nicoverduin

Met vriendelijke groet / kindest regards
Nico Verduin
www.verelec.nl
Do not PM me for personal consultancy unless you are willing to pay for it.

Koepel

#5
Jan 18, 2018, 07:06 am Last Edit: Jan 18, 2018, 07:14 am by Koepel
Ziet er goed uit.
Een paar opmerkingen:

Zoveel moeite doen en dan de DHT22 sensor gebruiken ?
De DS18B20 is nauwkeurig voor de temperatuur en de BME280 is nauwkeurig voor de luchtvochtigheid.

Beschrijf je ergens welk Arduino board je gebruikt ?

Sommigen zeggen dat je voor een Arduino Uno de 'String' class beter niet kunt gebruiken.
Ik zie bij jou geen voordeel van de String class. Je zou gewoon char arrays kunnen doen, en die later in PROGMEM zetten.
Stel dat je daar een stuk of 20 talen wilt gaan doen, dan is String vervelend, en gewone char arrays in PROGMEM handiger.

Je hebt regel 68, met "const String months[kNumSu..." op één regel gezet. Dat ziet er niet mooi uit (nou ja, dat vind ik dan).
De code binnen een if-statement zal ik ook nooit er achter zetten maar altijd op een nieuwe regel.
Toen ik wat beter naar de stijl ging kijken zag ik zelfs nog iets dat niet consequent is. Bij een paar functies staat de openings '{' op een nieuwe regel, terwijl die bij de meeste achteraan staat.

Is de "static_cast<int>" niet een beetje overbodig ? Gewoon (int) of int() kan toch ook.

Zit de Europese zomer/wintertijd (DST) in die Timezone library ? Dat is lastig om te zien in de code van die library. Veel code doet de berekening per dag en schakelt de DST om 00:00 om. Heb je het geprobeerd of het goed werkt ?
Ik heb een klok met Nextion scherm, die verspringt op de seconde van 01:59:59 naar 03:00:00 en in oktober van 02:59:59 naar 02:00:00. De klok draait in de lokale tijd, en iedere keer als ik de tijd laat zien dan tel ik daar met een functie de eventuele zomertijd bij op. Die funtie kijkt of het zomer- of wintertijd is. Zo hou ik de tijd als wintertijd en kan ik dus gemakkelijk berekenen hoeveel uur iets duurt.

Go Up