2025 Autor: John Day | [email protected]. Zadnja izmjena: 2025-01-23 14:37
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
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)
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:
Arduino precizni i tačni voltmetar (0-90V DC): 3 koraka
Arduino precizni i tačni voltmetar (0-90V DC): U ovom uputstvu sam izgradio voltmetar za mjerenje visokog napona DC (0-90v) sa relativnom preciznošću i tačnošću koristeći Arduino Nano. Testna mjerenja koja sam obavila bila su dovoljno točna, uglavnom unutar 0,3v od stvarnog napona izmjerenog sa
Raspberry Pi - MPL3115A2 Precizni senzor visinomjera Senzor za Python: 4 koraka
Raspberry Pi - MPL3115A2 Precizni senzor visinomera sa Python vodičem: MPL3115A2 koristi MEMS senzor pritiska sa I2C interfejsom za pružanje tačnih podataka o pritisku/nadmorskoj visini i temperaturi. Izlazi senzora digitalizirani su 24-bitnim ADC-om visoke rezolucije. Interna obrada uklanja zadatke kompenzacije iz
DropArt - Precizni fotografski kolajder s dva ispuštanja: 11 koraka (sa slikama)
DropArt - Precizni fotografski sudarač sa dvije kapi: Pozdrav svima, u ovom uputstvu predstavljam svoj dizajn za računarski upravljani sudarač sa dvije kapljice tekućine. Prije nego počnemo s detaljima dizajna, mislim da ima smisla objasniti tačno koja je svrha dizajna. Zabava, interesi
SnappyXO precizni robot za kretanje: 6 koraka
SnappyXO precizni robot za kretanje: Neka vaš Arduino robot ide ravno na određenu udaljenost ili se okreće do određenog kuta pomoću biblioteke PreciseMovement Arduino. Robotu je potreban kotač za valjanje ili ekvivalent za minimiziranje trenja pri uvijanju.https: //www.pololu. com/produ
Visoko precizni regulator temperature: 6 koraka (sa slikama)
Visokoprecizni regulator temperature: U znanosti i svijetu inženjeringa praćenje temperature aka (kretanje atoma u termodinamici) jedan je od osnovnih fizičkih parametara koje treba uzeti u obzir gotovo svugdje, počevši od ćelijske biologije do rakete na tvrdo gorivo