Obsah:

Presné hodiny: 3 kroky
Presné hodiny: 3 kroky

Video: Presné hodiny: 3 kroky

Video: Presné hodiny: 3 kroky
Video: 3 kroky ako nebyť obeťou 2024, Júl
Anonim
Presné hodiny
Presné hodiny

Všetci potrebujeme hodiny, tak prečo si ich nevyrobiť v tomto návode. Ukážem vám, ako vytvoriť hodiny Precision, akonáhle ich nastavíte, budú automaticky sledovať aktuálny čas na pozadí všetkého. Aj keď potrebuje len veľmi málo zásob a nulové spájkovanie.

Zásoby

Najprv budete potrebovať Arduino, ale akékoľvek Arduino bude fungovať

Ďalej budete potrebovať sortiment generických prepojovacích káblov.

2 12 mm spínače Sparkfun

Tradičný Breadboard

a 16 -pinový displej LCD 1602

Krok 1: Zapojenie

Elektrické vedenie
Elektrické vedenie

Aby tieto hodiny fungovali, musíte ich prepojiť veľmi špecifickým spôsobom, inak dostanete na obrazovku veľa náhodných čísel a nie čas.

Krok 2: Kód

Pretože nepoužívame RTC, kód bude trochu dlhý, ale našťastie som pre vás vykonal všetku tvrdú prácu a poskytol som ho tu.

Stačí to skopírovať a prilepiť do Arduino IDE alebo do webového editora.

#include "LiquidCrystal.h"

// Toto definuje vedenie LCD k DIGITÁLNYM pinom const int rs = 2, en = 3, d4 = 4, d5 = 5, d6 = 6, d7 = 7; LiquidCrystal lcd (rs, en, d4, d5, d6, d7);

// Nastavenie digitálneho LCD kontrastu int cs = 9; // pin 9 pre kontrast PWM konšt. Kontrast int. = 100; // predvolený kontrast

// počiatočné zobrazenie času je 12:59:45 PM int h = 12; int m = 59; int s = 45; int príznak = 1; //POPOLUDNIE

// Tlačidlá nastavenia času int button1; int tlačidlo2;

// Definícia pinov pre tlačidlá nastavenia času int hs = 0; // pin 0 pre nastavenie hodín int ms = 1; // pin 1 pre nastavenie minút

// Časový limit podsvietenia const int Time_light = 150; int bl_TO = Time_light; // Časový limit podsvietenia int bl = 10; // Kolík podsvietenia const int podsvietenie = 120; // nie viac ako 7mA !!!

// Na presné odčítanie času použite hodiny reálneho času Arduino a nie len delay () static uint32_t last_time, now = 0; // RTC

neplatné nastavenie () {lcd.begin (16, 2); pinMode (hs, INPUT_PULLUP); // vyhnite sa externým vyťahovacím rezistorom pre Button 1 pinMode (ms, INPUT_PULLUP); // a Button 2 analogWrite (cs, kontrast); // Nastavenie kontrastu VO analogWrite (bl, podsvietenie); // Turn na podsvietenie teraz = milis (); // čítať počiatočnú hodnotu RTC}

void loop () {lcd.begin (16, 2); // každú sekundu // Aktualizácia LCD displeja // TIME TIME in Hour, Min, Sec + AM/PM lcd.setCursor (0, 0); lcd.print („čas“); if (h <10) lcd.print ("0"); // vždy 2 číslice lcd.print (h); lcd.print (":"); if (m <10) lcd.print ("0"); lcd.print (m); lcd.print (":"); if (s <10) lcd.print ("0"); lcd.print (s);

if (flag == 0) lcd.print ("AM"); if (flag == 1) lcd.print ("PM"); lcd.setCursor (0, 1); // pre riadok 2 lcd.print ("presné hodiny");

// vylepšená náhrada oneskorenia (1000) // Oveľa lepšia presnosť, už nezávisí od času vykonania slučky

for (int i = 0; i <5; i ++) // urobte 5 -násobnú 200ms slučku, pre rýchlejšiu odozvu tlačidla {

while ((now-last_time) <200) // delay200ms {now = millis (); } // vnútorná 200ms slučka last_time = teraz; // pripravte sa na ďalšiu slučku

// čítanie tlačidiel nastavenia tlačidiel1 = digitalRead (hs); // Tlačidlá čítania tlačidiel2 = digitalRead (ms);

// Čas podsvietenia bl_TO--; if (bl_TO == 0) {analogWrite (bl, 0); // Vypnutie podsvietenia bl_TO ++; } // Podsvietenie aktivujete stlačením ľubovoľného klávesu if (((button1 == 0) | (button2 == 0)) & (bl_TO == 1)) {bl_TO = Time_light; analogWrite (bl, podsvietenie); // počkajte, kým sa tlačidlo neuvoľní ((button1 == 0) | (button2 == 0)) {button1 = digitalRead (hs); // Tlačidlá čítania button2 = digitalRead (ms); }} else // Spracujte tlačidlo 1 alebo tlačidlo 2 pri stlačení pri zapnutom podsvietení {if (button1 == 0) {h = h+1; bl_TO = Time_light; analogWrite (bl, podsvietenie); }

if (button2 == 0) {s = 0; m = m+1; bl_TO = Time_light; analogWrite (bl, podsvietenie); }

/* ---- zvládnuť pretečenie sekúnd, minút, hodín ráno/hod ----*/if (s == 60) {s = 0; m = m+1; } if (m == 60) {m = 0; h = h+1; } if (h == 13) {h = 1; vlajka = vlajka+1; if (flag == 2) flag = 0; }

if ((button1 == 0) | (button2 == 0)) // Aktualizácia displeja, ak je stlačené tlačidlo nastavenia času {// Aktualizácia LCD displeja // Tlač ČASU za hodinu, min, sek + AM/PM lcd.setCursor (0, 0); lcd.print („čas“); if (h <10) lcd.print ("0"); // vždy 2 číslice lcd.print (h); lcd.print (":"); if (m <10) lcd.print ("0"); lcd.print (m); lcd.print (":"); if (s <10) lcd.print ("0"); lcd.print (s);

if (flag == 0) lcd.print ("AM"); if (flag == 1) lcd.print ("PM"); lcd.setCursor (0, 1); // pre riadok 2 lcd.print ("presné hodiny"); }

} // end if else} // end for

// vonkajšia 1000ms slučka

s = s+1; // prírastok sek. počítanie // ---- riadiť preteky sekúnd, minút, hodín dopoludnia/hodiny ---- if (s == 60) {s = 0; m = m+1; } if (m == 60) {m = 0; h = h+1; } if (h == 13) {h = 1; vlajka = vlajka+1; if (flag == 2) flag = 0; }

// koniec slučky}

Krok 3: Schéma (toto nie je naozaj krok)

Schéma (Toto skutočne nie je krok)
Schéma (Toto skutočne nie je krok)

Ak niekto, kto to číta, je technický hlupák, má tiež schému, môžete sa na to pozrieť a zblázniť sa.

Užívajte si a bavte sa a hlavne zostaňte svieži.

Odporúča: