Sadržaj:

Precizni sat: 3 koraka
Precizni sat: 3 koraka

Video: Precizni sat: 3 koraka

Video: Precizni sat: 3 koraka
Video: 3 точки, и пищеварение станет лёгким 2024, Juli
Anonim
Precizni sat
Precizni sat

Svima su nam potrebni satovi, pa zašto ne napravite sami u ovom uputstvu, pokazat ću vam kako napraviti precizni sat nakon što ga postavite automatski će pratiti trenutno vrijeme u pozadini svega. Iako mu je potrebno samo vrlo malo zaliha i nula lemljenja.

Supplies

Prvo će vam trebati Arduino, ali svaki Arduino će raditi

Zatim će vam trebati niz općih žica za kratkospojnike.

2 12mm Sparkfun prekidača

Tradicionalna iverica

i LCD 1602 16 pinski ekran

Korak 1: Ožičenje

Ožičenje
Ožičenje

Da bi ovaj sat radio, morate ovo povezati na vrlo specifičan način, inače ćete dobiti hrpu slučajnih brojeva na ekranu, a ne vrijeme.

Korak 2: Kodeks

Budući da ne koristimo RTC, kôd će biti malo dugačak, ali na sreću obavio sam sav težak posao za vas i pružio ga ovdje.

Samo kopirajte i zalijepite ovo u Arduino IDE ili web uređivač.

#include "LiquidCrystal.h"

// Ovo definira ožičenje LCD -a na DIGITAL -ove pinove const int rs = 2, en = 3, d4 = 4, d5 = 5, d6 = 6, d7 = 7; LiquidCrystal lcd (rs, en, d4, d5, d6, d7);

// Postavka ograničenja digitalnog LCD -a int cs = 9; // pin 9 za kontrast PWM const int kontrast = 100; // zadani kontrast

// početni prikaz vremena je 12:59:45 PM int h = 12; int m = 59; int s = 45; int flag = 1; // PM

// Dugmad za podešavanje vremena int button1; int button2;

// Definicija pinova za tipke za podešavanje vremena int hs = 0; // pin 0 za sate Postavljanje int ms = 1; // pin 1 za postavljanje minuta

// Backlight Time Out const int Time_light = 150; int bl_TO = Time_light; // Istek pozadinskog osvjetljenja int bl = 10; // Pozadinsko osvjetljenje pin const int pozadinsko osvjetljenje = 120; // ne više od 7mA !!!

// Za precizno očitavanje vremena, koristite Arduino sat u stvarnom vremenu, a ne samo delay () static uint32_t last_time, now = 0; // RTC

void setup () {lcd.begin (16, 2); pinMode (hs, INPUT_PULLUP); // izbjegavajte vanjske Pullup otpornike za Button 1 pinMode (ms, INPUT_PULLUP); // i Button 2 analogWrite (cs, kontrast); // Podesite kontrast VO analogWrite (bl, pozadinsko osvjetljenje); // Uključite na pozadinskom osvjetljenju sada = millis (); // očitavanje početne vrijednosti RTC -a}

void loop () {lcd.begin (16, 2); // svake sekunde // Ažuriraj LCD ekran // VRIJEME ispisa u satima, min, sek + AM/PM lcd.setCursor (0, 0); lcd.print ("Vrijeme"); if (h <10) lcd.print ("0"); // uvijek 2 znamenke 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); // za 2. red lcd.print ("Precizni sat");

// poboljšana zamjena kašnjenja (1000) // Mnogo bolja preciznost, ne ovisi više o vremenu izvršavanja petlje

for (int i = 0; i <5; i ++) // napravi 5 puta 200ms petlju, za brži odgovor dugmeta {

while ((now-last_time) <200) // delay200ms {now = millis (); } // unutrašnja petlja od 200 ms last_time = now; // priprema za sljedeću petlju

// čitanje dugmadi za podešavanje button1 = digitalRead (hs); // Buttons Button Button2 = digitalRead (ms);

// Istek pozadinskog osvjetljenja bl_TO--; if (bl_TO == 0) {analogWrite (bl, 0); // Pozadinsko osvetljenje ISKLJUČENO bl_TO ++; } // Pritisnite bilo koje za aktiviranje pozadinskog osvjetljenja if (((button1 == 0) | (button2 == 0)) & (bl_TO == 1)) {bl_TO = Time_light; analogWrite (bl, pozadinsko osvetljenje); // čekamo dok se dugme ne otpusti while ((button1 == 0) | (button2 == 0)) {button1 = digitalRead (hs); // Dugmad za čitanje button2 = digitalRead (ms); }} else // Procesno dugme 1 ili dugme 2 kada se pritisne dok je pozadinsko osvetljenje uključeno {if (button1 == 0) {h = h+1; bl_TO = Vremensko svjetlo; analogWrite (bl, pozadinsko osvetljenje); }

if (button2 == 0) {s = 0; m = m+1; bl_TO = Vremensko svjetlo; analogWrite (bl, pozadinsko osvetljenje); }

/* ---- upravljanje sekundama, minutima, satima am/pm overflow ----*/if (s == 60) {s = 0; m = m+1; } if (m == 60) {m = 0; h = h+1; } if (h == 13) {h = 1; zastava = zastava+1; if (flag == 2) flag = 0; }

if ((button1 == 0) | (button2 == 0)) // Ažuriraj prikaz ako je pritisnuto dugme za postavljanje vremena {// Ažuriraj LCD ekran // Ispiši VRIJEME u satima, min, sek + AM/PM lcd.setCursor (0, 0); lcd.print ("Vrijeme"); if (h <10) lcd.print ("0"); // uvijek 2 znamenke 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); // za 2. red lcd.print ("Precizni sat"); }

} // završi ako je drugačije} // završi za

// vanjska petlja 1000ms

s = s+1; // prirast sec. odbrojavanje // ---- upravljanje sekundama, minutima, satima am/pm overflow ---- if (s == 60) {s = 0; m = m+1; } if (m == 60) {m = 0; h = h+1; } if (h == 13) {h = 1; zastava = zastava+1; if (flag == 2) flag = 0; }

// kraj petlje}

Korak 3: Šema (ovo nije korak)

Shema (ovo nije korak)
Shema (ovo nije korak)

Ako neko čita ovo je tehnološki štreber, evo i sheme koju možete pogledati kako poludi.

Uživajte i zabavite se, a prije svega ostanite svježi.

Preporučuje se: