Det verkar som att du använder en gammal webbläsare, det kan göra att allt inte fungerar eller ser ut som det borde.

Håll tiden med Arduino

Behovet av RTC-modul

Arduino Uno har ingen intern klocka på sig. Det enda sättet för Arduinon att hålla tiden någorlunda är att använda processorns klockfrekvens som referens. Det fungerar bra för att få saker att hända med ungefärlig fördröjning, men det är oanvändbart i sammanhang då den exakta tiden är väsentlig. 

Tidsproblematiken kan lösas på två sätt. Antingen kan tiden hämtas från en webbserver eller så kan utvecklingskortet kompletteras med en RTC-modul (Real Time Clock). Det är en modul som håller tiden med samma typ av kvartskristall som sitter i våra armbandsur och väggklockor. 

29-1_1.png

I bokens tillhörande komponentkit finns en RTC-modul. Den drivs med en vanlig CR2032-knappcell och har en avvikelse på ungefär en minut per år.

Bygg en digital klocka

I följande exempel vill vi bygga en digital klocka med hjälp av en RTC-modul och en OLED-display. Den hårdvarumässiga kopplingen ser ut på följande vis. 

29-2_1.png

Illustration gjord med komponenter från Fritzing (fritzing.org). CC BY-SA 3.0

Lägg märke till att både displayen och RTC-modulen är kopplade till I²C-porten! Detta är möjligt eftersom I²C-tillbehören har olika adresser och I²C-protokollet är smart nog för att kunna adressera tillbehören individuellt. 

Vi behöver skriva två sketcher: en sketch för att ställa in klockan och en sketch för att visa klockan. Programmet som ställer in klockan ska enbart köras en inledande gång (och vid ändring från t.ex. sommartid till normaltid). 

Innan vi skriver sketcherna måste vi installera biblioteket Rtc by Makuna. Vi inleder sedan tidsinställningssketchen med att importera det biblioteket och Wire-biblioteket. Vi skapar en ny RTC-modul och använder setup-funktionen för att skriva tiden då koden kompilerades till RTC-modulen. På så sätt synkroniseras RTC-modulens tid med datorns tid. 

RtcOledSetTime.ino

Obs! Vi får ingen återkoppling om att tiden har ställts om. Om vi vill få det kan vi be Arduinon att informera om det i Serial monitor. 

Sketchen för att visa klockan är lite längre, men baseras i stor utsträckning på sketchen som vi skrev i Visa text och grafik på displayer. Vi importerar nödvändiga bibliotek och skapar både en ny display och en ny RTC-modul. Vi deklarerar variabler som vi ska använda för att lagra timmar, minuter och sekunder. 

Del 1/3 av RtcOledClock.ino

Setup-funktionen är tom och loop-funktionen ser likadan ut som i tidigare exempel. Vi avslutar bara loop-funktionen med att anropa funktionen updateTime som vi använder för att hämta tiden från RTC-modulen.

Del 2/3 av RtcOledClock.ino

Draw-funktionen skriver vi om från början. Vi väljer vilket typsnitt vi vill ha och skapar en char-array för tecknen som ska skrivas ut. Funktionen spritf låter oss formatera om datan från variablerna hoursminutes och seconds så att tidpunkten alltid skrivs på samma sätt (med två siffror för timmar, två siffror för minuter och två siffror för sekunder). Avslutningsvis skriver vi ut tecknen från char-arrayen på displayen.

Del 3/3 av RtcOledClock.ino

Senast ändrad: 2017-02-27
Behovet av RTC-modulBygg en digital klocka
Bli medlem idagGör som nästan 2 miljoner andra och ta del av erbjudanden samt förmåner när du handlar!

Som medlem får du:

  • Exklusiva medlemserbjudanden
  • Poäng på allt du handlar
  • 100 dagars öppet köp
  • Se dina köp på kjell.com
Som medlem hos Kjell & Company kan du köpa utvalda medlemsvaror till extra bra priser, samla poäng och få bonuscheckar, samt ta del av unika medlemserbjudanden. Du får även förtur till vår kundservice, utökat öppet köp och förlängd garanti på utvalda varumärken.Läs mer om medlemskapet
Alltid tryggt att handla hos Kjell
Fri frakt

Vi bjuder på frakten när du handlar för mer än 300:-

Fri retur

Fria returer i alla våra butiker.

Snabba leveranser

1-2 arbetsdagar leveranstid

Hämta i butik

Reservera online och hämta ut i butik samma dag

Medlem i

Medlem i trygg e-handel

Du betalar enkelt

Får din beställning levererad med

Du kan handla från både