Innholdsfortegnelse:

Presisjonsklokke: 3 trinn
Presisjonsklokke: 3 trinn

Video: Presisjonsklokke: 3 trinn

Video: Presisjonsklokke: 3 trinn
Video: Timeless Evolution: The Watch's Story 2024, November
Anonim
Presisjonsklokke
Presisjonsklokke

Vi trenger alle klokker, så hvorfor ikke lage din egen i denne instruksjonsfulle jeg skal vise deg hvordan du lager en presisjonsklokke når du setter den automatisk vil holde oversikt over gjeldende tid i bakgrunnen av alt. Selv om den bare trenger veldig lite utstyr og null lodding.

Rekvisita

Først trenger du en Arduino, men enhver Arduino vil fungere

Deretter trenger du et utvalg av generiske hoppetråder.

2 12 mm Sparkfun trykknappbrytere

Et tradisjonelt brødbrett

og en LCD 1602 16 -pinners skjerm

Trinn 1: Kabling

Kabling
Kabling

For at denne klokken skal fungere, må du koble denne på en veldig spesifikk måte, ellers får du en haug med tilfeldige tall på skjermen i stedet for tiden.

Trinn 2: Koden

Siden vi ikke bruker en RTC, kommer koden til å bli litt lang, men heldigvis har jeg gjort alt hardt arbeid for deg og gitt den her.

Bare kopier og lim dette inn i enten Arduino IDE eller webredigereren.

#include "LiquidCrystal.h"

// Dette definerer LCD -ledningene til 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 -innstilling int cs = 9; // pin 9 for kontrast PWM const int contrast = 100; // standardkontrast

// innledende tidsvisning er 12:59:45 PM int h = 12; int m = 59; int s = 45; int flagg = 1; // PM

// Time Set Buttons int button1; int -knapp 2;

// Pins definisjon for Time Set Buttons int hs = 0; // pin 0 for Timer Setting int ms = 1; // pin 1 for Minutes Setting

// Backlight Time Out const int Time_light = 150; int bl_TO = Time_light; // Time-Out for bakgrunnsbelysning int bl = 10; // Bakgrunnsbelysning pin const int bakgrunnsbelysning = 120; // ikke mer enn 7mA !!!

// For nøyaktig tidsavlesning, bruk Arduino sanntidsklokke og ikke bare forsink () statisk uint32_t siste_tid, nå = 0; // RTC

ugyldig oppsett () {lcd.begin (16, 2); pinMode (hs, INPUT_PULLUP); // unngå eksterne Pullup -motstander for knapp 1 pinMode (ms, INPUT_PULLUP); // og knapp 2 analogWrite (cs, kontrast); // Juster kontrast VO analogWrite (bl, bakgrunnsbelysning); // Turn på bakgrunnsbelysning nå = millis (); // les innledende verdi for RTC}

void loop () {lcd.begin (16, 2); // hvert sekund // Oppdater LCD -skjerm // Print TIME in Hour, Min, Sec + AM/PM lcd.setCursor (0, 0); lcd.print ("Tid"); hvis (h <10) lcd.print ("0"); // alltid 2 siffer lcd.print (h); lcd.print (":"); hvis (m <10) lcd.print ("0"); lcd.print (m); lcd.print (":"); hvis (s <10) lcd.print ("0"); lcd.print (r);

hvis (flagg == 0) lcd.print ("AM"); if (flag == 1) lcd.print ("PM"); lcd.setCursor (0, 1); // for Linje 2 lcd.print ("Presisjonsklokke");

// forbedret utskifting av forsinkelse (1000) // Mye bedre nøyaktighet, ikke mer avhengig av sløyfekjøringstid

for (int i = 0; i <5; i ++) // lag 5 gangers 200 ms sløyfe, for raskere knapprespons {

mens ((nå-siste_tid) <200) // forsinkelse200ms {nå = millis (); } // indre 200 ms sløyfe siste_tid = nå; // forbered deg på neste sløyfe

// lese Innstillingsknapper button1 = digitalRead (hs); // Read Buttons button2 = digitalRead (ms);

// Tidsavbrudd for motlys bl_TO--; hvis (bl_TO == 0) {analogWrite (bl, 0); // Bakgrunnsbelysning AV bl_TO ++; } // Trykk på hvilken som helst for å aktivere bakgrunnsbelysning hvis (((knapp1 == 0) | (knapp2 == 0)) og (bl_TO == 1)) {bl_TO = Time_light; analogWrite (bl, bakgrunnsbelysning); // vent til knappen slippes mens ((knapp1 == 0) | (knapp2 == 0)) {knapp1 = digitalRead (hs); // Leseknapper -knapp2 = digitalRead (ms); }} else // Behandle knapp 1 eller knapp 2 når du treffer den mens bakgrunnsbelysning er på {hvis (knapp1 == 0) {h = h+1; bl_TO = Time_light; analogWrite (bl, bakgrunnsbelysning); }

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

/* ---- administrer sekunder, minutter, timer am/pm overløp ----*/if (s == 60) {s = 0; m = m+1; } hvis (m == 60) {m = 0; h = h+1; } hvis (h == 13) {h = 1; flagg = flagg+1; hvis (flagg == 2) flagg = 0; }

hvis ((knapp1 == 0) | (knapp2 == 0)) // Oppdater visning hvis tidsinnstillingsknappen trykkes ned {// Oppdater LCD -skjerm // Skriv ut TID i time, min, sek + AM/PM lcd.setCursor (0, 0); lcd.print ("Tid"); hvis (h <10) lcd.print ("0"); // alltid 2 siffer lcd.print (h); lcd.print (":"); hvis (m <10) lcd.print ("0"); lcd.print (m); lcd.print (":"); hvis (s <10) lcd.print ("0"); lcd.print (r);

hvis (flagg == 0) lcd.print ("AM"); if (flag == 1) lcd.print ("PM"); lcd.setCursor (0, 1); // for Linje 2 lcd.print ("Presisjonsklokke"); }

} // ende hvis annet} // ende for

// ytre 1000ms sløyfe

s = s+1; // økning sek. telling // ---- administrer sekunder, minutter, timer am/pm overløp ---- if (s == 60) {s = 0; m = m+1; } hvis (m == 60) {m = 0; h = h+1; } hvis (h == 13) {h = 1; flagg = flagg+1; hvis (flagg == 2) flagg = 0; }

// Sløyfe -slutt}

Trinn 3: Skjematisk (dette er egentlig ikke et trinn)

Skjematisk (dette er egentlig ikke et trinn)
Skjematisk (dette er egentlig ikke et trinn)

Hvis noen som leser dette er en teknisk nerd, er dette også en skjematisk du kan se på at det blir gal.

Nyt og ha det gøy, og vær mest frisk.

Anbefalt: