Tartalomjegyzék:
Videó: Precíziós óra: 3 lépés
2024 Szerző: John Day | [email protected]. Utoljára módosítva: 2024-01-30 09:40
Mindannyiunknak szüksége van órákra, ezért miért ne készítse el sajátját ebben az oktatóanyagban. Megmutatom, hogyan kell precíziós órát készíteni, miután beállította, automatikusan nyomon követi az aktuális időt a háttérben. Miközben szintén csak nagyon kevés kellékre és nulla forrasztásra van szükség.
Kellékek
Először is szüksége lesz egy Arduino -ra, de bármelyik Arduino működni fog
Ezután szükség lesz egy sor általános jumper vezetékre.
2 12 mm -es Sparkfun nyomógombos kapcsoló
Hagyományos kenyérlap
és egy 1660 -as LCD 1602 kijelző
1. lépés: Kábelezés
Annak érdekében, hogy ez az óra működjön, ezt nagyon specifikus módon kell bekötni, különben egy csomó véletlenszerű szám jelenik meg a képernyőn, nem pedig az idő.
2. lépés: A kód
Mivel nem RTC -t használunk, a kód egy kicsit hosszú lesz, de szerencsére minden kemény munkát elvégeztem érted, és itt megadtam.
Csak másolja és illessze be ezt az Arduino IDE -be vagy a webszerkesztőbe.
#include "LiquidCrystal.h"
// Ez határozza meg az LCD kábelezését a DIGITALpins const int rs = 2, en = 3, d4 = 4, d5 = 5, d6 = 6, d7 = 7; LiquidCrystal lcd (rs, en, d4, d5, d6, d7);
// Digitális LCD -kontraszt beállítás int cs = 9; // 9 -es tű a kontraszthoz PWM const int kontraszt = 100; // alapértelmezett kontraszt
// a kezdeti idő kijelzése 12:59:45 PM int h = 12; int m = 59; int s = 45; int zászló = 1; //DÉLUTÁN
// Időbeállító gombok int gomb1; int gomb2;
// Tű definíció az időbeállítási gombokhoz int hs = 0; // pin 0 for Oours Setting int ms = 1; // pin 1 for perc
// Háttérfény időkorlátja konst int int Time_light = 150; int bl_TO = Időfény; // Háttérvilágítás időtúllépése int bl = 10; // Háttérfény pin konst int int háttérvilágítás = 120; // nem több, mint 7mA !!!
// A pontos időolvasáshoz használja az Arduino valós idejű órát, és ne csak a delay () static uint32_t last_time, now = 0; // RTC
void setup () {lcd.begin (16, 2); pinMode (hs, INPUT_PULLUP); // kerülje a külső Pullup ellenállásokat az 1. gombhoz PinMode (ms, INPUT_PULLUP); // és a Button 2 analogWrite (cs, kontraszt); // Állítsa be a kontraszt VO analogWrite (bl, háttérvilágítás); // Turn a Háttérvilágítás most = millis (); // olvassa el az RTC kezdeti értékét}
void loop () {lcd.begin (16, 2); // minden másodpercben // LCD kijelző frissítése // IDŐ nyomtatása órában, percben, másodpercben + AM/PM lcd.setCursor (0, 0); lcd.print ("Idő"); if (h <10) lcd.print ("0"); // mindig 2 számjegy lcd.print (h); lcd.print (":"); ha (m <10) lcd.print ("0"); lcd.print (m); lcd.print (":"); if (s <10) lcd.print ("0"); lcd.nyomat (ok);
if (zászló == 0) lcd.print ("AM"); if (zászló == 1) lcd.print ("PM"); lcd.setCursor (0, 1); // 2. sor lcd.print ("Precíziós óra");
// továbbfejlesztett késleltetés (1000) // Sokkal jobb pontosság, nem függ a ciklus végrehajtási idejétől
for (int i = 0; i <5; i ++) // készítsen 5 alkalommal 200 ms -os ciklust, a gyorsabb válaszért {
while ((most-utolsó_idő) <200) // delay200ms {most = millis (); } // belső 200 ms ciklus last_time = now; // készülj fel a következő körre
// Beállítás gombok olvasása gomb1 = digitalRead (hs); // Gombok olvasása gomb2 = digitalRead (ms);
// Háttérvilágítás időtúllépése bl_TO--; if (bl_TO == 0) {analogWrite (bl, 0); // Háttérvilágítás KI bl_TO ++; } // Nyomja meg bármelyiket a Háttérvilágítás aktiválásához, ha ((((gomb1 == 0) | (gomb2 == 0)) & (bl_TO == 1)) {bl_TO = Időfény; analogWrite (bl, háttérvilágítás); // várjon, amíg a gombot elengedik, miközben ((gomb1 == 0) | (gomb2 == 0)) {gomb1 = digitalRead (hs); // gombok olvasása gomb2 = digitalRead (ms); }} else // Az 1. gomb vagy a 2. gomb feldolgozása, ha megérinti, miközben a háttérvilágítás be van kapcsolva {if (button1 == 0) {h = h+1; bl_TO = Időfény; analogWrite (bl, háttérvilágítás); }
ha (gomb2 == 0) {s = 0; m = m+1; bl_TO = Időfény; analogWrite (bl, háttérvilágítás); }
/* ---- kezelje a másodperceket, perceket, órákat am/pm túlcsordulás ----*/if (s == 60) {s = 0; m = m+1; } ha (m == 60) {m = 0; h = h+1; } ha (h == 13) {h = 1; zászló = zászló+1; if (zászló == 2) zászló = 0; }
if ((gomb1 == 0) | (gomb2 == 0)) // Kijelző frissítése, ha megnyomja az időbeállító gombot {// LCD kijelző frissítése // IDŐ nyomtatása órában, percben, másodpercben + AM/PM lcd.setCursor (0, 0); lcd.print ("Idő"); if (h <10) lcd.print ("0"); // mindig 2 számjegy lcd.print (h); lcd.print (":"); ha (m <10) lcd.print ("0"); lcd.print (m); lcd.print (":"); if (s <10) lcd.print ("0"); lcd.nyomat (ok);
if (zászló == 0) lcd.print ("AM"); if (zászló == 1) lcd.print ("PM"); lcd.setCursor (0, 1); // 2. sor lcd.print ("Precíziós óra"); }
} // end if else} // end for
// külső 1000 ms -os hurok
s = s+1; // növekmény mp. számlálás // ---- másodpercek, percek, órák kezelése am/pm túlcsordulás ---- if (s == 60) {s = 0; m = m+1; } ha (m == 60) {m = 0; h = h+1; } ha (h == 13) {h = 1; zászló = zászló+1; if (zászló == 2) zászló = 0; }
// Hurok vége}
3. lépés: Vázlatos (ez nem igazán lépés)
Ha valaki, aki ezt olvassa, technikai nerd, itt is van egy sematikus nézegetheti, hogy megőrül.
Élvezze és érezze jól magát, és legfőképpen friss maradjon.
Ajánlott:
Arduino Nano - MPL3115A2 Precíziós magasságmérő oktató: 4 lépés
Arduino Nano - MPL3115A2 Precíziós magasságmérő oktató: Az MPL3115A2 MEMS nyomásérzékelőt alkalmaz I2C interfésszel a pontos nyomás/magasság és hőmérséklet adatok biztosításához. Az érzékelő kimeneteit egy nagy felbontású 24 bites ADC digitalizálja. A belső feldolgozás eltávolítja a kompenzációs feladatokat a
Raspberry Pi - MPL3115A2 Precíziós magasságmérő Python oktatóanyag: 4 lépés
Raspberry Pi - MPL3115A2 Precíziós magasságmérő Python oktatóanyag: Az MPL3115A2 MEMS nyomásérzékelőt alkalmaz I2C interfésszel a pontos nyomás/magasság és hőmérséklet adatok biztosításához. Az érzékelő kimeneteit egy nagy felbontású 24 bites ADC digitalizálja. A belső feldolgozás eltávolítja a kompenzációs feladatokat a
DropArt - Precíziós két csepp fényképes ütköző: 11 lépés (képekkel)
DropArt - Precíziós két csepp fényképes ütköző: Üdvözlet! Ebben az oktatható formában bemutatom a számítógép által vezérelt két folyadékcsepp -ütköző tervét. Mielőtt belekezdenénk a tervezési részletekbe, úgy gondolom, ésszerű elmagyarázni, hogy pontosan mi a tervezés célja. Szórakoztató, érdekes
ESP8266 Hálózati óra RTC nélkül - Nodemcu NTP óra Nem RTC - INTERNET ÓRA PROJEKT: 4 lépés
ESP8266 Hálózati óra RTC nélkül | Nodemcu NTP óra Nem RTC | INTERNET ÓRA PROJEKT: A projektben óra projektet készítenek RTC nélkül, időbe telik az internet az wifi használatával, és megjeleníti az st7735 kijelzőn
Raspberry Pi - MPL3115A2 Precíziós magasságmérő Java oktató: 4 lépés
Raspberry Pi - MPL3115A2 Precíziós magasságmérő Java oktatóanyag: Az MPL3115A2 MEMS nyomásérzékelőt alkalmaz I2C interfésszel a pontos nyomás/magasság és hőmérséklet adatok biztosításához. Az érzékelő kimeneteit egy nagy felbontású 24 bites ADC digitalizálja. A belső feldolgozás eltávolítja a kompenzációs feladatokat a