Innehållsförteckning:

Precisionsklocka: 3 steg
Precisionsklocka: 3 steg

Video: Precisionsklocka: 3 steg

Video: Precisionsklocka: 3 steg
Video: How Accurate is the Heart Rate Monitor on the Galaxy Watch 4? 2024, Juli
Anonim
Precisionsklocka
Precisionsklocka

Vi behöver alla klockor så varför inte göra dina egna i denna instruerbara Jag ska visa dig hur du gör en Precision -klocka när du ställer in kommer automatiskt att hålla reda på den aktuella tiden i bakgrunden av allt. Även om det bara behövs väldigt lite leveranser och noll lödningar.

Tillbehör

Först behöver du en Arduino men vilken Arduino som helst fungerar

Därefter behöver du ett sortiment av generiska bygelkablar.

2 12 mm Sparkfun -knappar

En traditionell brödbräda

och en LCD 1602 16 -stifts display

Steg 1: Kabeldragning

Kabeldragning
Kabeldragning

För att den här klockan ska fungera måste du koppla den på ett mycket specifikt sätt, annars får du en massa slumpmässiga nummer på skärmen snarare än tiden.

Steg 2: Koden

Eftersom vi inte använder en RTC kommer koden att bli lite lång men tack och lov har jag gjort allt hårt arbete för dig och tillhandahållit det här.

Bara kopiera och klistra in detta i antingen Arduino IDE eller webbredigeraren.

#inkludera "LiquidCrystal.h"

// Detta definierar LCD -kabeln till DIGITALpins const int rs = 2, en = 3, d4 = 4, d5 = 5, d6 = 6, d7 = 7; LiquidCrystal lcd (rs, en, d4, d5, d6, d7);

// Digital LCD Constrast -inställning int cs = 9; // pin 9 för kontrast PWM const int contrast = 100; // standardkontrast

// initial tidsvisning är 12:59:45 PM int h = 12; int m = 59; int s = 45; int flagga = 1; // PM

// Tidsinställningsknappar int -knapp1; int -knapp 2;

// Stiftdefinition för tidsuppsättningsknappar int hs = 0; // stift 0 för timinställning int ms = 1; // stift 1 för minutinställning

// Backlight Time Out const int Time_light = 150; int bl_TO = Time_light; // Backlight Time-Out int bl = 10; // Bakgrundsbelysning stift const int bakgrundsbelysning = 120; // inte mer än 7mA !!!

// För exakt tidsavläsning, använd Arduino Real Time Clock och inte bara fördröja () statisk uint32_t last_time, nu = 0; // RTC

void setup () {lcd.begin (16, 2); pinMode (hs, INPUT_PULLUP); // undvik externa pullup -motstånd för knapp 1 pinMode (ms, INPUT_PULLUP); // och knapp 2 analogWrite (cs, kontrast); // Justera kontrast VO analogWrite (bl, bakgrundsbelysning); // Vrid på bakgrundsbelysning nu = millis (); // läs RTC -initialvärde}

void loop () {lcd.begin (16, 2); // varannan // Uppdatera LCD -skärm // Skriv ut TIME i timme, Min, Sec + AM/PM lcd.setCursor (0, 0); lcd.print ("Tid"); if (h <10) lcd.print ("0"); // alltid 2 siffror lcd.print (h); lcd.print (":"); om (m <10) lcd.print ("0"); lcd.print (m); lcd.print (":"); om (s <10) lcd.print ("0"); lcd.print (er);

if (flagga == 0) lcd.print ("AM"); if (flagga == 1) lcd.print ("PM"); lcd.setCursor (0, 1); // för rad 2 lcd.print ("Precision clock");

// förbättrad ersättning av fördröjning (1000) // Mycket bättre noggrannhet, inte mer beroende av slingans körtid

för (int i = 0; i <5; i ++) // gör 5 gångers 200 ms loop, för snabbare knappsvar {

medan ((nu-sista_tid) <200) // delay200ms {nu = millis (); } // inre 200ms slinga last_time = nu; // förbered för nästa slinga

// read Setting Buttons button1 = digitalRead (hs); // Read Buttons button2 = digitalRead (ms);

// Tidsgräns för bakgrundsbelysning bl_TO--; if (bl_TO == 0) {analogWrite (bl, 0); // Bakgrundsbelysning AV bl_TO ++; } // Tryck på någon för att aktivera bakgrundsbelysning om (((knapp1 == 0) | (knapp2 == 0)) & (bl_TO == 1)) {bl_TO = Time_light; analogWrite (bl, bakgrundsbelysning); // vänta tills knappen släpps medan ((button1 == 0) | (button2 == 0)) {button1 = digitalRead (hs); // Read Buttons button2 = digitalRead (ms); }} else // Bearbeta knapp 1 eller knapp 2 när den träffas medan bakgrundsbelysningen är på {if (knapp1 == 0) {h = h+1; bl_TO = Time_light; analogWrite (bl, bakgrundsbelysning); }

om (knapp2 == 0) {s = 0; m = m+1; bl_TO = Time_light; analogWrite (bl, bakgrundsbelysning); }

/* ---- hantera sekunder, minuter, timmar am/pm överflöd ----*/if (s == 60) {s = 0; m = m+1; } om (m == 60) {m = 0; h = h+1; } om (h == 13) {h = 1; flagga = flagga+1; om (flagga == 2) flagga = 0; }

if ((knapp1 == 0) | (knapp2 == 0)) // Uppdatera displayen om knappen för tidsinställning trycks ned {// Uppdatera LCD -display // Skriv ut TID i timme, min, sek + AM/PM lcd.setCursor (0, 0); lcd.print ("Tid"); if (h <10) lcd.print ("0"); // alltid 2 siffror lcd.print (h); lcd.print (":"); om (m <10) lcd.print ("0"); lcd.print (m); lcd.print (":"); om (s <10) lcd.print ("0"); lcd.print (er);

if (flagga == 0) lcd.print ("AM"); if (flagga == 1) lcd.print ("PM"); lcd.setCursor (0, 1); // för rad 2 lcd.print ("Precisionsklocka"); }

} // slut om annat} // slut för

// yttre 1000ms slinga

s = s+1; // inkrement sek. räkna // ---- hantera sekunder, minuter, timmar am/pm överflöd ---- om (s == 60) {s = 0; m = m+1; } om (m == 60) {m = 0; h = h+1; } om (h == 13) {h = 1; flagga = flagga+1; om (flagga == 2) flagga = 0; }

// Loop end}

Steg 3: Schematisk (det här är verkligen inte ett steg)

Schematisk (det här är verkligen inte ett steg)
Schematisk (det här är verkligen inte ett steg)

Om någon som läser detta är en teknisk nörd här är också en schematisk kan du titta på det blir galet.

Njut och ha kul och håll dig mest fräsch.

Rekommenderad: