Turinys:
- Prekės
- 1 žingsnis: laidų prijungimas
- 2 žingsnis: kodas
- 3 žingsnis: schema (tai tikrai nėra žingsnis)
Video: Tikslus laikrodis: 3 žingsniai
2024 Autorius: John Day | [email protected]. Paskutinį kartą keistas: 2024-01-30 10:45
Mums visiems reikia laikrodžių, tad kodėl gi nepasigaminus šio pamokomo pamokymo, aš jums parodysiu, kaip padaryti tikslų laikrodį, kai tik nustatysite, automatiškai stebės esamą laiką. Nors taip pat reikia tik labai mažai atsargų ir nulinio litavimo.
Prekės
Pirma, jums reikės „Arduino“, bet bet kuris „Arduino“veiks
Be to, jums reikės įvairių jungiamųjų laidų.
2 12 mm „Sparkfun“mygtukiniai jungikliai
Tradicinė duonos lenta
ir 16 kontaktų LCD 1602 ekranas
1 žingsnis: laidų prijungimas
Kad šis laikrodis veiktų, turite jį prijungti labai konkrečiu būdu, kitaip ekrane gausite daugybę atsitiktinių skaičių, o ne laiko.
2 žingsnis: kodas
Kadangi mes nenaudojame RTC, kodas bus šiek tiek ilgas, bet, laimei, aš padariau visą sunkų darbą už jus ir pateikiau jį čia.
Tiesiog nukopijuokite ir įklijuokite jį į „Arduino IDE“arba žiniatinklio redaktorių.
#įtraukti „LiquidCrystal.h“
// Tai apibrėžia LCD laidų prijungimą prie DIGITALpins const int rs = 2, en = 3, d4 = 4, d5 = 5, d6 = 6, d7 = 7; „LiquidCrystal“LCD (rs, en, d4, d5, d6, d7);
// Skaitmeninio LCD kontrasto nustatymas int cs = 9; // kaištis 9 kontrastui PWM const int kontrastas = 100; // numatytasis kontrastas
// pradinis laiko rodymas yra 12:59:45 PM int h = 12; int m = 59; int s = 45; int vėliava = 1; // PM
// Laiko nustatymo mygtukai int mygtukas1; int mygtukas2;
// Laiko nustatymo mygtukų smeigtukų apibrėžimas int hs = 0; // kaištis 0 valandų nustatymui int ms = 1; // kaištis 1 minučių nustatymui
// „Backlight Time Out“konst int int Time_light = 150; int bl_TO = Laiko šviesa; // Foninio apšvietimo skirtasis laikas int bl = 10; // Apšvietimo kaištis const int foninis apšvietimas = 120; // ne daugiau kaip 7mA !!!
// Norėdami tiksliai nuskaityti laiką, naudokite „Arduino Real Time Clock“, o ne tik delay () static uint32_t last_time, now = 0; // RTC
void setup () {lcd.begin (16, 2); pinMode (hs, INPUT_PULLUP); // venkite išorinių „Pullup“rezistorių 1 mygtukui „pinMode“(ms, INPUT_PULLUP); // ir 2 mygtukas „analogWrite“(cs, kontrastas); // Sureguliuokite kontrastą VO analogWrite (bl, foninis apšvietimas); // Pasukite ant foninio apšvietimo dabar = milis (); // skaityti pradinę RTC vertę}
void loop () {lcd.begin (16, 2); // kas sekundę // Atnaujinti LCD ekraną // Spausdinti TIME in Hour, Min, Sec + AM/PM lcd.setCursor (0, 0); lcd.print („Laikas“); if (h <10) lcd.print ("0"); // visada 2 skaitmenys lcd.print (h); lcd.print (":"); jei (m <10) lcd.print ("0"); lcd.print (m); lcd.print (":"); jei (s <10) lcd.print ("0"); lcd.print (-ai);
if (vėliava == 0) lcd.print ("AM"); if (vėliava == 1) lcd.print ("PM"); lcd.setCursor (0, 1); // 2 eilutei lcd.print ("Tikslus laikrodis");
// patobulintas delsos pakeitimas (1000) // Daug geresnis tikslumas, daugiau nepriklausantis nuo ciklo vykdymo laiko
for (int i = 0; i <5; i ++) // padaryti 5 kartų 200 ms ciklą, kad mygtukas greičiau reaguotų {
while ((dabar-paskutinis laikas) <200) // delay200ms {now = millis (); } // vidinė 200 ms kilpa last_time = now; // pasiruošti kitai ciklui
// mygtukas skaityti nustatymo mygtukus1 = digitalRead (hs); // Mygtuko skaitymas mygtukas2 = digitalRead (ms);
// Apšvietimo laikas baigėsi bl_TO--; if (bl_TO == 0) {analogWrite (bl, 0); // Foninis apšvietimas IŠJUNGTAS bl_TO ++; } // Paspauskite bet kurį, kad suaktyvintumėte foninį apšvietimą, jei ((((mygtukas1 == 0) | (mygtukas2 == 0)) & (bl_TO == 1)) {bl_TO = Laiko šviesa; analogWrite (bl, foninis apšvietimas); // laukti, kol mygtukas bus paleistas, kol ((mygtukas1 == 0) | (mygtukas2 == 0)) {mygtukas1 = skaitmeninis skaitymas (hs); // mygtukas skaityti mygtukas2 = skaitmeninis skaitymas (ms); }} else // Apdoroti 1 arba 2 mygtukus, kai jie paspaudžiami, kai įjungiamas foninis apšvietimas {if (button1 == 0) {h = h+1; bl_TO = Laiko šviesa; analogWrite (bl, foninis apšvietimas); }
jei (mygtukas2 == 0) {s = 0; m = m+1; bl_TO = Laiko šviesa; analogWrite (bl, foninis apšvietimas); }
/* ---- valdyti sekundžių, minučių, valandų am/pm perpildymą ----*/jei (s == 60) {s = 0; m = m+1; } jei (m == 60) {m = 0; h = h+1; } jei (h == 13) {h = 1; vėliava = vėliava+1; jei (vėliava == 2) vėliava = 0; }
if ((mygtukas1 == 0) | (mygtukas2 == 0)) // Atnaujinti ekraną, jei paspaustas laiko nustatymo mygtukas {// Atnaujinti LCD ekraną // Spausdinti TIME valandomis, minutėmis, sek. + AM/PM lcd.setCursor (0, 0); lcd.print („Laikas“); if (h <10) lcd.print ("0"); // visada 2 skaitmenys lcd.print (h); lcd.print (":"); jei (m <10) lcd.print ("0"); lcd.print (m); lcd.print (":"); jei (s <10) lcd.print ("0"); lcd.print (-ai);
if (vėliava == 0) lcd.print ("AM"); if (vėliava == 1) lcd.print ("PM"); lcd.setCursor (0, 1); // 2 eilutei lcd.print ("Tikslus laikrodis"); }
} // end if else} // end for
// išorinė 1000 ms kilpa
s = s+1; // prieaugis sek. skaičiavimas // ---- valdyti sekundes, minutes, valandas am/pm overflow ---- if (s == 60) {s = 0; m = m+1; } jei (m == 60) {m = 0; h = h+1; } jei (h == 13) {h = 1; vėliava = vėliava+1; jei (vėliava == 2) vėliava = 0; }
// ciklo pabaiga}
3 žingsnis: schema (tai tikrai nėra žingsnis)
Jei kas nors, skaitantis tai, yra technologijų šaunuolis, čia taip pat yra schema, galite pasižiūrėti, kaip išprotėti.
Mėgaukitės ir linksminkitės, o svarbiausia išlikite švieži.
Rekomenduojamas:
„Waveshare“elektroninio rašalo ekranas Tikslus voltmetras (0–90 V DC) su „Arduino Nano“: 3 žingsniai
„Waveshare E-ink“ekranas Tikslus voltmetras (0–90 V DC) su „Arduino Nano“: šioje instrukcijoje aš naudoju 2,9 colio „Waveshare“el. Popieriaus ekraną su „Arduino Nano“, įtampos dalikliu ir ADS1115, kad būtų rodoma tiksli įtampa iki 90 voltų nuolatinės srovės ant elektroninio popieriaus ekrano. Ši instrukcija sujungia šiuos du ankstesnius projektus:- Ardui
Tikslus ir tikslus „Arduino“voltų matuoklis (0–90 V DC): 3 žingsniai
Tikslus ir tikslus „Arduino“voltų matuoklis (0–90 V DC): Šioje instrukcijoje aš sukūriau voltmetrą, kuris santykinai tiksliai ir tiksliai matuoja aukštą įtampą (0–90 V), naudodamas „Arduino Nano“. Mano atlikti bandomieji matavimai buvo pakankamai tikslūs, daugiausia 0,3 V riboje nuo faktinės įtampos, išmatuotos naudojant
3D spausdintas „Endgame Arc Reactor“(tikslus ir nešiojamas filmas): 7 žingsniai (su nuotraukomis)
3D atspausdintas „Endgame Arc Reactor“(tikslus ir nešiojamas filmas): Pilna „YouTube“pamoka: neradau ypač tikslių 3D filmų, skirtų „Mark 50“lankiniam reaktoriui/nanodalelių korpusui, todėl su bičiuliu paruošėme saldžių. Prireikė daug pakeitimų, kad viskas atrodytų tiksliai ir nuostabiai
ESP8266 Tinklo laikrodis be jokio RTC - Nodemcu NTP laikrodis Nr. RTC - INTERNETO LAIKRODŽIO PROJEKTAS: 4 žingsniai
ESP8266 Tinklo laikrodis be jokio RTC | Nodemcu NTP laikrodis Nr. RTC | INTERNETO LAIKRODŽIO PROJEKTAS: Projekte bus sukurtas laikrodžio projektas be RTC, užtruks laikas iš interneto naudojant „Wi -Fi“ir jis bus rodomas st7735 ekrane
„Gixie“laikrodis: gražiausias švytėjimo vamzdžio laikrodis: 4 žingsniai
„Gixie Clock“: gražiausias „Glow Tube“laikrodis: „Nixie Tube“man labai patinka, tačiau jis yra per brangus, negaliu to sau leisti. Taigi aš praleidau pusę metų kurdamas šį „Gixie“laikrodį. „Gixie“laikrodis pasiekiamas naudojant apšvietimą „ws2812“, kad būtų akrilo šviesa. Aš darau viską, kad RGB vamzdelis būtų plonesnis