Sisukord:

Täppiskell: 3 sammu
Täppiskell: 3 sammu

Video: Täppiskell: 3 sammu

Video: Täppiskell: 3 sammu
Video: НАША ЖИЗНЬ ИЗМЕНИЛАСЬ ПОСЛЕ ПОЯВЛЕНИЯ ............ 2024, Juuli
Anonim
Täppiskell
Täppiskell

Me kõik vajame kellasid, nii et miks mitte teha selles juhendis oma käed? Näitan teile, kuidas teha täpsuskella, kui olete määranud, jälgib automaatselt kõikide taustal praegust aega. Kuigi see vajab ka väga vähe tarneid ja nulljootmist.

Tarvikud

Esiteks vajate Arduinot, kuid mis tahes Arduino töötab

Järgmisena vajate valikut üldisi hüppajajuhtmeid.

2 12mm Sparkfuni klahvilülitit

Traditsiooniline leivalaud

ja 16 -kontaktiline LCD 1602 ekraan

Samm: juhtmestik

Juhtmestik
Juhtmestik

Selleks, et see kell töötaks, peate selle ühendama väga spetsiifilisel viisil, vastasel juhul saate ekraanile hulga juhuslikke numbreid, mitte kellaaega.

2. samm: kood

Kuna me ei kasuta RTC -d, läheb kood natuke pikaks, kuid õnneks olen teinud teie heaks kogu raske töö ja esitanud selle siin.

Lihtsalt kopeerige ja kleepige see kas Arduino IDE -sse või veebiredaktorisse.

#include "LiquidCrystal.h"

// See määratleb LCD juhtmestiku DIGITALpins konstantidega rs = 2, en = 3, d4 = 4, d5 = 5, d6 = 6, d7 = 7; LiquidCrystal LCD (rs, en, d4, d5, d6, d7);

// Digitaalse vedelkristallekraani seadistus int cs = 9; // tihvt 9 kontrasti jaoks PWM const int kontrast = 100; // vaikekontrast

// esialgne kellaaeg on 12:59:45 PM int h = 12; int m = 59; int s = 45; int lipp = 1; // PM

// Aja määramise nupud int nupp1; int nupp2;

// Aja määramise nuppude tihvtide määratlus int hs = 0; // tihvt 0 tundide seadistamiseks int ms = 1; // pin 1 minutite seadistamiseks

// Taustavalguse ajavahemiku konst int int Time_light = 150; int bl_TO = Time_light; // Taustavalguse ajalõpp int bl = 10; // Taustavalgustuse tihvt konst int taustvalgus = 120; // mitte rohkem kui 7mA !!!

// Täpseks aja lugemiseks kasutage Arduino reaalajas kella ja mitte ainult delay () staatilist uint32_t last_time, now = 0; // RTC

void setup () {lcd.begin (16, 2); pinMode (hs, INPUT_PULLUP); // vältige nupu 1 pinMode (ms, INPUT_PULLUP) väliseid tõmbetakistusi; // ja nupp 2 analogWrite (cs, kontrast); // Reguleerige kontrastsust VO analogWrite (bl, taustvalgus); // pööra taustvalgusel kohe = millis (); // RTC algväärtuse lugemine}

void loop () {lcd.begin (16, 2); // iga sekund // Värskenda LCD -ekraani // Prindi TIME in Hour, Min, Sec + AM/PM lcd.setCursor (0, 0); lcd.print ("Aeg"); if (h <10) lcd.print ("0"); // alati 2 numbrit lcd.print (h); lcd.print (":"); kui (m <10) lcd.print ("0"); lcd.print (m); lcd.print (":"); kui (s <10) lcd.print ("0"); lcd.print (s);

if (lipp == 0) lcd.print ("AM"); if (lipp == 1) lcd.print ("PM"); lcd.setCursor (0, 1); // rea 2 lcd.print ("Täppekell");

// täiustatud viivituse asendamine (1000) // Palju parem täpsus, ei sõltu enam tsükli täitmise ajast

jaoks (int i = 0; i <5; i ++) // tehke 5 -kordne 200 ms tsükkel, kiiremaks nupu reageerimiseks {

while ((nüüd-viimane_aeg) <200) // delay200ms {now = millis (); } // sisemine 200 ms silmus last_time = now; // valmistuge järgmiseks tsükliks

// nupp lugemisnuppude lugemine1 = digitalRead (hs); // nuppude lugemine nupp2 = digitalRead (ms);

// Taustavalguse aeg out bl_TO--; if (bl_TO == 0) {analogWrite (bl, 0); // Taustavalgus VÄLJA bl_TO ++; } // Taustvalgustuse aktiveerimiseks vajutage ükskõik millist, kui ((((nupp1 == 0) | (nupp2 == 0)) & (bl_TO == 1)) {bl_TO = Ajavalgus; analogWrite (bl, taustvalgus); // oodake, kuni nupp vabastatakse ((button1 == 0) | (button2 == 0)) {button1 = digitalRead (hs); // nuppude lugemise nupp2 = digitalRead (ms); }} else // Töötle nuppu 1 või nuppu 2, kui taustavalgus on sisse lülitatud {if (button1 == 0) {h = h+1; bl_TO = Aegvalgus; analogWrite (bl, taustvalgus); }

kui (nupp2 == 0) {s = 0; m = m+1; bl_TO = Aegvalgus; analogWrite (bl, taustvalgus); }

/* ---- hallata sekundeid, minuteid, tunde am/pm overflow ----*/if (s == 60) {s = 0; m = m+1; } kui (m == 60) {m = 0; h = h+1; } kui (h == 13) {h = 1; lipp = lipp+1; kui (lipp == 2) lipp = 0; }

if ((nupp1 == 0) | (nupp2 == 0)) // Värskenda kuva, kui kellaaja seadistusnuppu vajutatakse {// Värskenda LCD -ekraani // Prindi TIME in Hour, Min, Sec + AM/PM lcd.setCursor (0, 0); lcd.print ("Aeg"); if (h <10) lcd.print ("0"); // alati 2 numbrit lcd.print (h); lcd.print (":"); kui (m <10) lcd.print ("0"); lcd.print (m); lcd.print (":"); kui (s <10) lcd.print ("0"); lcd.print (s);

if (lipp == 0) lcd.print ("AM"); if (lipp == 1) lcd.print ("PM"); lcd.setCursor (0, 1); // rea 2 lcd.print ("Täppekell"); }

} // lõpp, kui muidu} // lõpp jaoks

// välimine 1000 ms silmus

s = s+1; // juurdekasv sek. loendamine // ---- hallata sekundeid, minuteid, tunde am/pm overflow ---- if (s == 60) {s = 0; m = m+1; } kui (m == 60) {m = 0; h = h+1; } kui (h == 13) {h = 1; lipp = lipp+1; kui (lipp == 2) lipp = 0; }

// Tsükli lõpp}

Samm: skemaatiline (see pole tegelikult samm)

Skeem (see pole tegelikult samm)
Skeem (see pole tegelikult samm)

Kui keegi, kes seda loeb, on siin tehnikahull, on siin ka skemaatiline, võite vaadata, et see läheb hulluks.

Nautige ja nautige ning ennekõike jääge värskeks.

Soovitan: