Përmbajtje:
2025 Autor: John Day | [email protected]. E modifikuara e fundit: 2025-01-23 15:10
Ne të gjithë kemi nevojë për orë, kështu që pse të mos bëni tuajin në këtë udhëzues, unë do t'ju tregoj se si të bëni një orë të saktë pasi të keni vendosur, automatikisht do të mbajë gjurmët e kohës aktuale në sfondin e gjithçkaje. Ndërsa gjithashtu ka nevojë vetëm për shumë pak furnizime dhe zero saldime.
Furnizimet
Së pari, do t'ju duhet një Arduino, por çdo Arduino do të funksionojë
Tjetra, do t'ju duhet një shumëllojshmëri e telave të përgjithshëm të kërcyesit.
2 Çelësa 12mm mm Sparkfun Pushbutton
Një Breadboard tradicionale
dhe një ekran LCD 1602 16 pin
Hapi 1: Instalimet elektrike
Në mënyrë që kjo orë të funksionojë, duhet ta lidhni atë në një mënyrë shumë specifike, përndryshe do të merrni një bandë numrash të rastit në ekran sesa në kohë.
Hapi 2: Kodi
Meqenëse ne nuk po përdorim një RTC, kodi do të jetë pak i gjatë, por fatmirësisht unë kam bërë gjithë punën e vështirë për ju dhe e kam siguruar këtu.
Thjesht Kopjoni dhe Ngjiteni këtë ose në Arduino IDE ose në Redaktuesin e uebit.
#përfshi "LiquidCrystal.h"
// Kjo përkufizon instalimet LCD në kontekstin DIGITALpins int rs = 2, en = 3, d4 = 4, d5 = 5, d6 = 6, d7 = 7; LiquidCrystal LCD (rs, en, d4, d5, d6, d7);
// Cilësimi i Kontrastit LCD Dixhital int cs = 9; // pin 9 për kontrast PWM const int kontrast = 100; // Kontrasti i parazgjedhur
// Shfaqja fillestare e Kohës është 12:59:45 pasdite int h = 12; int m = 59; int s = 45; int flamur = 1; // PM
// Butonat e Vendosjes së Kohës butoni int1; butoni int2;
// Përcaktimi i kunjave për Butonat e Vendosjes së Kohës int hs = 0; // pin 0 për Orë Cilësimi int ms = 1; // pin 1 për Vendosjen e Minutave
// Koha e ndriçimit të sfondit konst int Time_light = 150; int bl_TO = Koha-drita; // Drita e prapme Time-Out int bl = 10; // Pin backlight konst int backlight = 120; // jo më shumë se 7mA !!!
// Për leximin e saktë të kohës, përdorni Arduino Ora në kohë reale dhe jo vetëm të vononi () statike uint32_t kohën e fundit, tani = 0; // RTC
void setup () {lcd.filloj (16, 2); pinMode (hs, INPUT_PULLUP); // shmang rezistencat e jashtme tërheqëse për Button 1 pinMode (ms, INPUT_PULLUP); // dhe Button 2 analogWrite (cs, kontrast); // Rregulloni Kontrastin VO analogWrite (bl, backlight); // Turn në Backlight tani = millis (); // lexoni vlerën fillestare të RTC}
lak i pavlefshëm () {lcd.filloj (16, 2); // çdo sekondë // Përditëso ekranin LCD // Koha e printimit në orë, min, sek. + AM/PM lcd.setCursor (0, 0); lcd.print ("Koha"); nëse (h <10) lcd.print ("0"); // gjithmonë 2 shifra lcd.print (h); lcd.print (":"); nëse (m <10) lcd.print ("0"); lcd.print (m); lcd.print (":"); nëse (s <10) lcd.print ("0"); lcd.print (s);
nëse (flamuri == 0) lcd.print ("AM"); nëse (flamuri == 1) lcd.print ("PM"); lcd.setCursor (0, 1); // për Linjën 2 lcd.print ("Ora e saktë");
// zëvendësimi i përmirësuar i vonesës (1000) // Saktësi shumë më e mirë, jo më e varur nga koha e ekzekutimit të lakut
për (int i = 0; i <5; i ++) // bëni 5 herë lak 200ms, për përgjigje më të shpejtë të butonit {
ndërsa ((tani-koha e fundit) <200) // vonesa200ms {tani = milis (); } // lak i brendshëm 200ms last_time = tani; // përgatituni për lakin tjetër
// lexo butonin Setting Buttons1 = digitalRead (hs); // Button Read Button2 = digitalRead (ms);
// Koha e kalimit të dritës së prapme bl_TO--; if (bl_TO == 0) {analogWrite (bl, 0); // Backlight OFF bl_TO ++; } // Goditi ndonjërën për të aktivizuar Dritën e prapme nëse (((butoni1 == 0) | (butoni2 == 0)) & (bl_TO == 1)) {bl_TO = Koha e ndriçimit; analogWrite (bl, backlight); // prisni derisa Butoni të lëshohet ndërsa ((button1 == 0) | (button2 == 0)) {button1 = digitalRead (hs); // Butonat e leximit butoni2 = digitalRead (ms); }} else // Butoni i procesit 1 ose Butoni 2 kur goditet ndërsa Backlight ndizet {if (button1 == 0) {h = h+1; bl_TO = Kohëzgjatja; analogWrite (bl, backlight); }
nëse (butoni2 == 0) {s = 0; m = m+1; bl_TO = Kohëzgjatja; analogWrite (bl, backlight); }
/* ---- menaxhoni sekonda, minuta, orë paradite/pasdite tejmbushje ----*/nëse (s == 60) {s = 0; m = m+1; } nëse (m == 60) {m = 0; h = h+1; } nëse (h == 13) {h = 1; flamur = flamur+1; nëse (flamuri == 2) flamuri = 0; }
nëse ((butoni1 == 0) | (butoni2 == 0)) // Përditëso ekranin nëse shtypet butoni i caktuar i kohës {// Përditëso ekranin LCD // Koha e printimit në orë, min, sek + AM/PM lcd.setCursor (0, 0); lcd.print ("Koha"); nëse (h <10) lcd.print ("0"); // gjithmonë 2 shifra lcd.print (h); lcd.print (":"); nëse (m <10) lcd.print ("0"); lcd.print (m); lcd.print (":"); nëse (s <10) lcd.print ("0"); lcd.print (s);
nëse (flamuri == 0) lcd.print ("AM"); nëse (flamuri == 1) lcd.print ("PM"); lcd.setCursor (0, 1); // për Linjën 2 lcd.print ("Ora e saktë"); }
} // përfundo nëse tjetër} // përfundo për
// lak i jashtëm 1000ms
s = s+1; // rritje sek. duke numëruar // ---- menaxhoni sekonda, minuta, orë paradite/pasdite tejmbushje ---- nëse (s == 60) {s = 0; m = m+1; } nëse (m == 60) {m = 0; h = h+1; } nëse (h == 13) {h = 1; flamur = flamur+1; nëse (flamuri == 2) flamuri = 0; }
// Fundi i lakut}
Hapi 3: Skematik (Ky nuk është me të vërtetë një hap)
Nëse dikush që e lexon këtë është një budalla i teknologjisë këtu është gjithashtu një skematik që mund ta shikoni duke u çmendur.
Shijoni dhe argëtohuni dhe mbi të gjitha qëndroni të freskët.
Recommended:
Voltmetër i saktë i ekranit me bojë E-bojë me valë (0-90v DC) Me Arduino Nano: 3 hapa
Voltmetër preciz i ekranit me bojë E-bojë Waveshare (0-90v DC) Me Arduino Nano: Në këtë udhëzues, unë përdor një ekran E-Paper 2.9 "Waveshare me një Arduino Nano, një ndarës të tensionit dhe një ADS1115 për të shfaqur tensione të sakta deri në 90 volt DC në E-Paper Display. Ky udhëzues kombinon këto dy projekte të mëparshme:- Ardui
Matës i saktë dhe i saktë i tensionit Arduino (0-90V DC): 3 hapa
Matës i saktë dhe i saktë i tensionit Arduino (0-90V DC): Në këtë udhëzues, unë kam ndërtuar një voltmetër për të matur tensione të larta DC (0-90v) me saktësi dhe saktësi relative duke përdorur një Arduino Nano. Matjet e provës që mora ishin mjaft të sakta, kryesisht brenda 0.3v të tensionit aktual të matur me një
Reaktori i harkut të Fundit të Shtypur 3D (Filmi i Saktë dhe i Veshshëm): 7 Hapa (me Fotografi)
Reaktori i harkut të Fundit të Shtypur 3D (Filmi i Saktë dhe i Veshshëm): Udhëzues i plotë në Youtube: Unë nuk mund të gjeja ndonjë skedar 3d të filmit veçanërisht të saktë për reaktorin/strehimin e harkut Mark 50 për nanoprimcat, kështu që shoku im dhe unë gatuam disa të ëmbla. U desh një shumë rregullim për ta bërë gjënë të dukej e saktë dhe e mrekullueshme
GPSDO YT, Oscillator i Disiplinuar 10Mhz Frekuenca e Referencës. Çmim i ulët. E saktë .: 3 hapa
GPSDO YT, Oscillator i Disiplinuar 10Mhz Frekuenca e Referencës. Çmim i ulët. E saktë .: ******************************************* ****************************** STOP STOP STOP STOP STOP STOP STOP STOP STOP Ky është një projekt i vjetëruar. Në vend të kësaj kontrolloni timen versioni i ri i ekranit 2x16 LCD është i disponueshëm këtu: https: //www.instructables.com/id
Vendosja e DS3231 RTC (Ora në kohë reale) në mënyrë të saktë, të shpejtë dhe të automatizuar duke përdorur Java (+-1s): 3 hapa
Vendosja e DS3231 RTC (Ora në kohë reale) në mënyrë të saktë, të shpejtë dhe të automatizuar duke përdorur Java (+-1s): Ky udhëzues do t'ju tregojë se si të vendosni kohën në një orë në kohë reale DS3231 duke përdorur një Arduino dhe një aplikacion të vogël Java që përdor lidhja serike e Arduino. Logjika themelore e këtij programi: 1. Arduino dërgon një kërkesë serike