Sadržaj:
2024 Autor: John Day | [email protected]. Zadnja promjena: 2024-01-30 09:33
Svima su nam potrebni satovi pa zašto ne napravite sami u ovom uputstvu, pokazat ću vam kako napraviti precizni sat nakon što postavite, automatski će pratiti trenutno vrijeme u pozadini svega. Iako je potrebno samo vrlo malo zaliha i nula lemljenja.
Pribor
Prvo, trebat će vam Arduino, ali svaki Arduino će raditi
Zatim će vam trebati niz općenitih žica za kratkospojnike.
2 12mm prekidača Sparkfun
Tradicionalni Breadboard
i LCD 1602 16 pinski zaslon
Korak 1: Ožičenje
Da bi ovaj sat radio, morate ovo povezati na vrlo specifičan način, inače ćete na ekranu dobiti hrpu slučajnih brojeva, a ne vrijeme.
Korak 2: Kôd
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; LCD tekući kristal (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 zastavica = 1; // PM
// Gumbi za podešavanje vremena int button1; int gumb2;
// Definicija pinova za tipke za postavljanje 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; // Pozadinsko osvjetljenje Time-Out int bl = 10; // Pozadinsko osvjetljenje pin const int pozadinsko osvjetljenje = 120; // ne više od 7mA !!!
// Za točno 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 gumb 1 pinMode (ms, INPUT_PULLUP); // i gumb 2 analogWrite (cs, kontrast); // Prilagodite kontrast VO analogWrite (bl, pozadinsko osvjetljenje); // Uključite na pozadinskom osvjetljenju sada = millis (); // čitanje početne vrijednosti RTC -a}
void loop () {lcd.begin (16, 2); // svake sekunde // Ažuriranje LCD zaslona // TIME 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.tisak (m); lcd.print (":"); if (s <10) lcd.print ("0"); lcd.tisak (i);
if (flag == 0) lcd.print ("AM"); if (flag == 1) lcd.print ("PM"); lcd.setCursor (0, 1); // za redak 2 lcd.print ("Precizni sat");
// poboljšana zamjena odgode (1000) // Mnogo bolja točnost, ne ovisi više o vremenu izvođenja petlje
for (int i = 0; i <5; i ++) // napravi 5 puta 200ms petlju, za brži odgovor gumba {
while ((now-last_time) <200) // delay200ms {now = millis (); } // unutarnja petlja od 200 ms last_time = now; // priprema za sljedeću petlju
// čitanje gumba za postavljanje gumb1 = digitalRead (hs); // gumb gumba za čitanje gumb2 = digitalRead (ms);
// Istek pozadinskog osvjetljenja bl_TO--; if (bl_TO == 0) {analogWrite (bl, 0); // Pozadinsko osvjetljenje 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 osvjetljenje); // čekamo dok se gumb ne otpusti while ((button1 == 0) | (button2 == 0)) {button1 = digitalRead (hs); // Gumbi za čitanje button2 = digitalRead (ms); }} else // Gumb za obradu 1 ili gumb 2 kada se pritisne dok je pozadinsko osvjetljenje uključeno {if (button1 == 0) {h = h+1; bl_TO = Vremensko svjetlo; analogWrite (bl, pozadinsko osvjetljenje); }
if (button2 == 0) {s = 0; m = m+1; bl_TO = Vremensko svjetlo; analogWrite (bl, pozadinsko osvjetljenje); }
/* ---- upravljati sekundama, minutama, 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žuriranje prikaza ako je pritisnuta tipka za postavljanje vremena {// Ažuriranje LCD zaslona // TIME 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.tisak (m); lcd.print (":"); if (s <10) lcd.print ("0"); lcd.tisak (i);
if (flag == 0) lcd.print ("AM"); if (flag == 1) lcd.print ("PM"); lcd.setCursor (0, 1); // za redak 2 lcd.print ("Precizni sat"); }
} // završi ako je drugačije} // završi za
// vanjska petlja 1000ms
s = s+1; // prirast sec. brojanje // ---- upravljanje sekundama, minutama, 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: Shema (ovo zapravo nije korak)
Ako netko čita ovo je tehnološki štreber, ovdje je i shema koju možete pogledati poludjeti.
Uživajte i zabavite se, a prije svega ostanite svježi.
Preporučeni:
Arduino precizni i točni voltmetar (0-90V DC): 3 koraka
Arduino precizni i točni voltmetar (0-90V DC): U ovom uputstvu sam izgradio voltmetar za mjerenje visokog napona DC (0-90v) s relativnom preciznošću i točnošću pomoću Arduino Nano. Testna mjerenja koja sam obavila bila su dovoljno točna, uglavnom unutar 0,3v od stvarnog napona izmjerenog s
Raspberry Pi - MPL3115A2 Precizni senzor visinomjera Senzor za Python: 4 koraka
Raspberry Pi - MPL3115A2 Precizni senzor visinomjera Python Vodič: MPL3115A2 koristi MEMS osjetnik tlaka s I2C sučeljem za pružanje točnih podataka o tlaku/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č s dvije kapi: Pozdrav svima, u ovom uputstvu predstavljam svoj dizajn za računarski upravljani sudarač s dvije kapljice tekućine. Prije nego počnemo s detaljima dizajna, mislim da ima smisla objasniti točno koja je svrha dizajna. Zabava, interesi
Precizni svjetlosni pištolj Wiimote za malinu PI: 9 koraka (sa slikama)
Točan Wiimote Light Gun za Raspberry PI: Uobičajeno, Wii daljinski upravljač koji se koristi kao svjetlosni pištolj nije dovoljno točan za retro igre poput NES Duck Hunt, jer Wii daljinski upravljač zapravo ne odabire točku na televizoru na koju je usmjeren. Ne može! Wii Remote ima infracrvenu kameru na prednjoj strani
Raspberry Pi - MPL3115A2 Precizni senzor visinomjera Java Vodič: 4 koraka
Raspberry Pi - MPL3115A2 Precizni senzor visinomera s Java vodičem: MPL3115A2 koristi MEMS osjetnik tlaka s I2C sučeljem za pružanje točnih podataka o tlaku/nadmorskoj visini i temperaturi. Izlazi senzora digitalizirani su 24-bitnim ADC-om visoke rezolucije. Interna obrada uklanja zadatke kompenzacije iz