2025 Autor: John Day | [email protected]. Naposledy zmenené: 2025-01-23 15:05
Všetci potrebujeme hodiny, tak prečo si ich nevyrobiť v tomto návode. Ukážem vám, ako vytvoriť hodiny Precision, akonáhle ich nastavíte, budú automaticky sledovať aktuálny čas na pozadí všetkého. Aj keď potrebuje len veľmi málo zásob a nulové spájkovanie.
Zásoby
Najprv budete potrebovať Arduino, ale akékoľvek Arduino bude fungovať
Ďalej budete potrebovať sortiment generických prepojovacích káblov.
2 12 mm spínače Sparkfun
Tradičný Breadboard
a 16 -pinový displej LCD 1602
Krok 1: Zapojenie
Aby tieto hodiny fungovali, musíte ich prepojiť veľmi špecifickým spôsobom, inak dostanete na obrazovku veľa náhodných čísel a nie čas.
Krok 2: Kód
Pretože nepoužívame RTC, kód bude trochu dlhý, ale našťastie som pre vás vykonal všetku tvrdú prácu a poskytol som ho tu.
Stačí to skopírovať a prilepiť do Arduino IDE alebo do webového editora.
#include "LiquidCrystal.h"
// Toto definuje vedenie LCD k DIGITÁLNYM pinom const int rs = 2, en = 3, d4 = 4, d5 = 5, d6 = 6, d7 = 7; LiquidCrystal lcd (rs, en, d4, d5, d6, d7);
// Nastavenie digitálneho LCD kontrastu int cs = 9; // pin 9 pre kontrast PWM konšt. Kontrast int. = 100; // predvolený kontrast
// počiatočné zobrazenie času je 12:59:45 PM int h = 12; int m = 59; int s = 45; int príznak = 1; //POPOLUDNIE
// Tlačidlá nastavenia času int button1; int tlačidlo2;
// Definícia pinov pre tlačidlá nastavenia času int hs = 0; // pin 0 pre nastavenie hodín int ms = 1; // pin 1 pre nastavenie minút
// Časový limit podsvietenia const int Time_light = 150; int bl_TO = Time_light; // Časový limit podsvietenia int bl = 10; // Kolík podsvietenia const int podsvietenie = 120; // nie viac ako 7mA !!!
// Na presné odčítanie času použite hodiny reálneho času Arduino a nie len delay () static uint32_t last_time, now = 0; // RTC
neplatné nastavenie () {lcd.begin (16, 2); pinMode (hs, INPUT_PULLUP); // vyhnite sa externým vyťahovacím rezistorom pre Button 1 pinMode (ms, INPUT_PULLUP); // a Button 2 analogWrite (cs, kontrast); // Nastavenie kontrastu VO analogWrite (bl, podsvietenie); // Turn na podsvietenie teraz = milis (); // čítať počiatočnú hodnotu RTC}
void loop () {lcd.begin (16, 2); // každú sekundu // Aktualizácia LCD displeja // TIME TIME in Hour, Min, Sec + AM/PM lcd.setCursor (0, 0); lcd.print („čas“); if (h <10) lcd.print ("0"); // vždy 2 číslice 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); // pre riadok 2 lcd.print ("presné hodiny");
// vylepšená náhrada oneskorenia (1000) // Oveľa lepšia presnosť, už nezávisí od času vykonania slučky
for (int i = 0; i <5; i ++) // urobte 5 -násobnú 200ms slučku, pre rýchlejšiu odozvu tlačidla {
while ((now-last_time) <200) // delay200ms {now = millis (); } // vnútorná 200ms slučka last_time = teraz; // pripravte sa na ďalšiu slučku
// čítanie tlačidiel nastavenia tlačidiel1 = digitalRead (hs); // Tlačidlá čítania tlačidiel2 = digitalRead (ms);
// Čas podsvietenia bl_TO--; if (bl_TO == 0) {analogWrite (bl, 0); // Vypnutie podsvietenia bl_TO ++; } // Podsvietenie aktivujete stlačením ľubovoľného klávesu if (((button1 == 0) | (button2 == 0)) & (bl_TO == 1)) {bl_TO = Time_light; analogWrite (bl, podsvietenie); // počkajte, kým sa tlačidlo neuvoľní ((button1 == 0) | (button2 == 0)) {button1 = digitalRead (hs); // Tlačidlá čítania button2 = digitalRead (ms); }} else // Spracujte tlačidlo 1 alebo tlačidlo 2 pri stlačení pri zapnutom podsvietení {if (button1 == 0) {h = h+1; bl_TO = Time_light; analogWrite (bl, podsvietenie); }
if (button2 == 0) {s = 0; m = m+1; bl_TO = Time_light; analogWrite (bl, podsvietenie); }
/* ---- zvládnuť pretečenie sekúnd, minút, hodín ráno/hod ----*/if (s == 60) {s = 0; m = m+1; } if (m == 60) {m = 0; h = h+1; } if (h == 13) {h = 1; vlajka = vlajka+1; if (flag == 2) flag = 0; }
if ((button1 == 0) | (button2 == 0)) // Aktualizácia displeja, ak je stlačené tlačidlo nastavenia času {// Aktualizácia LCD displeja // Tlač ČASU za hodinu, min, sek + AM/PM lcd.setCursor (0, 0); lcd.print („čas“); if (h <10) lcd.print ("0"); // vždy 2 číslice 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); // pre riadok 2 lcd.print ("presné hodiny"); }
} // end if else} // end for
// vonkajšia 1000ms slučka
s = s+1; // prírastok sek. počítanie // ---- riadiť preteky sekúnd, minút, hodín dopoludnia/hodiny ---- if (s == 60) {s = 0; m = m+1; } if (m == 60) {m = 0; h = h+1; } if (h == 13) {h = 1; vlajka = vlajka+1; if (flag == 2) flag = 0; }
// koniec slučky}
Krok 3: Schéma (toto nie je naozaj krok)
Ak niekto, kto to číta, je technický hlupák, má tiež schému, môžete sa na to pozrieť a zblázniť sa.
Užívajte si a bavte sa a hlavne zostaňte svieži.
Odporúča:
GPSDO YT, disciplinovaný oscilátor, referenčná frekvencia 10 MHz. Nízke náklady. Presné .: 3 kroky
GPSDO YT, disciplinovaný oscilátor, referenčná frekvencia 10 MHz. Nízke náklady. Presné .: ************************************* ******************************* STOP STOP STOP STOP STOP STOP STOP STOP STOP STOP Toto je zastaraný projekt. Namiesto toho skontrolujte moju nová verzia displeja 2x16 lcd je k dispozícii tu: https: //www.instructables.com/id
Presné počítadlo predplatiteľov YouTube: 4 kroky
Presné počítadlo predplatiteľov YouTube: Na tento projekt som sa začal pripravovať zhruba pred mesiacom, ale potom ma vykoľajil YouTube, keď oznámili, že už nebudú poskytovať skutočný počet predplatiteľov, ale najbližšie zaokrúhlené číslo. V súčasnej dobe to nie je problém pre
Presné ovládanie teploty na krokoch Raspberry Pi 4: 3
Presná kontrola teploty na Raspberry Pi 4: Pimoroni Fan Shim je skvelým riešením na zníženie teploty vášho Pi, keď je horúci. Výrobcovia dokonca poskytujú softvér, ktorý spúšťa ventilátor, keď teplota procesora stúpne nad určitú prahovú hodnotu (napr. 65 stupňov). Teplota q
Presné, rýchle a automatické nastavenie DS3231 RTC (hodín v reálnom čase) pomocou Javy (+-1 s): 3 kroky
Presné, rýchle a automatizované nastavenie hodín DS3231 RTC (hodiny v reálnom čase) pomocou Javy (+-1 s): Tento návod vám ukáže, ako nastaviť čas na hodinách reálneho času DS3231 pomocou Arduina a malej aplikácie Java, ktorá používa sériové pripojenie Arduina. Základná logika tohto programu: 1. Arduino odosiela sériovú požiadavku
Presné peristaltické čerpadlo: 13 krokov
Presné peristaltické čerpadlo: Sme študentský tím z rôznych odborov RWTH Aachen University a vytvorili sme tento projekt v kontexte súťaže iGEM 2017. Po všetkej práci, ktorá bola súčasťou našej pumpy, by sme sa s vami chceli podeliť o naše výsledky ! Postavíme