Sisällysluettelo:

Tarkkuuskello: 3 vaihetta
Tarkkuuskello: 3 vaihetta

Video: Tarkkuuskello: 3 vaihetta

Video: Tarkkuuskello: 3 vaihetta
Video: Microfiber an Important Evolution for Watchmaking 2024, Heinäkuu
Anonim
Tarkkuuskello
Tarkkuuskello

Me kaikki tarvitsemme kelloja, joten miksi et tee omaasi tässä ohjeessa? Näytän sinulle, kuinka tehdä tarkkuuskello, kun asetat automaattisesti seuraamaan nykyistä aikaa kaiken taustalla. Samalla kun tarvitaan vain hyvin vähän tarvikkeita ja nolla juotoksia.

Tarvikkeet

Ensinnäkin tarvitset Arduinon, mutta mikä tahansa Arduino toimii

Seuraavaksi tarvitset valikoiman yleisiä hyppyjohtoja.

2 12 mm: n Sparkfun -painikekytkintä

Perinteinen leipälauta

ja 162 -nastainen LCD 1602 -näyttö

Vaihe 1: Johdotus

Johdotus
Johdotus

Jotta tämä kello toimisi, sinun on kytkettävä se hyvin erityisellä tavalla, muuten näyttöön tulee joukko satunnaisia numeroita ajan sijaan.

Vaihe 2: Koodi

Koska emme käytä RTC: tä, koodi tulee olemaan hieman pitkä, mutta onneksi olen tehnyt kaiken kovan työn puolestasi ja toimittanut sen täällä.

Kopioi ja liitä tämä joko Arduino IDE: hen tai web -editoriin.

#include "LiquidCrystal.h"

// Tämä määrittää nestekidenäytön johdotuksen DIGITALpins -vakioihin int rs = 2, en = 3, d4 = 4, d5 = 5, d6 = 6, d7 = 7; LiquidCrystal lcd (rs, en, d4, d5, d6, d7);

// Digitaalisen nestekidenäytön kontrastiasetus int cs = 9; // nasta 9 kontrastia varten PWM const int kontrasti = 100; // oletuskontrasti

// alkuajan näyttö on 12:59:45 int h = 12; int m = 59; int s = 45; int lippu = 1; // PM

// Aika -asetuspainikkeet int -painike1; int -painike2;

// Nastan määritelmä aika -painikkeille int hs = 0; // nolla 0 tuntiasetukselle int ms = 1; // nasta 1 minuutti -asetukselle

// Taustavalon aikakatkaisu const int Time_light = 150; int bl_TO = Aikavalo; // Taustavalon aikakatkaisu int bl = 10; // Taustavalonappi const int taustavalo = 120; // ei enempää kuin 7mA !!!

// Tarkan ajan lukemiseksi käytä Arduinon reaaliaikakelloa äläkä vain viivytystä () staattinen uint32_t last_time, now = 0; // RTC

void setup () {lcd.begin (16, 2); pinMode (hs, INPUT_PULLUP); // vältä ulkoisia vetovoimia painikkeelle 1 pinMode (ms, INPUT_PULLUP); // ja Button 2 analogWrite (cs, kontrasti); // Säädä kontrastia VO analogWrite (bl, taustavalo); // Käännä taustavalossa nyt = millis (); // lue RTC: n alkuarvo}

void loop () {lcd.begin (16, 2); // joka sekunti // Päivitä LCD -näyttö // Tulosta TIME in Hour, Min, Sec + AM/PM lcd.setCursor (0, 0); lcd.print ("Aika"); if (h <10) lcd.print ("0"); // aina 2 numeroa lcd.print (h); lcd.print (":"); jos (m <10) lcd.print ("0"); lcd.print (m); lcd.print (":"); jos (s <10) lcd.print ("0"); lcd.print (s);

if (lippu == 0) lcd.print ("AM"); if (lippu == 1) lcd.print ("PM"); lcd.setCursor (0, 1); // riville 2 lcd.print ("tarkkuuskello");

// parannettu viiveen korvaaminen (1000) // Paljon parempi tarkkuus, ei enää riippuvainen silmukan suoritusajasta

for (int i = 0; i <5; i ++) // tee 5 kertaa 200 ms: n silmukka, nopeampi painikkeen vastaus {

while ((nyt-viimeinen aika) <200) // delay200ms {now = millis (); } // sisäinen 200 ms: n silmukka last_time = now; // valmistaudu seuraavaan silmukkaan

// asetusasetuspainikkeiden lukeminen -painike1 = digitalRead (hs); // Read Buttons -painike2 = digitalRead (ms);

// Taustavalon aikakatkaisu bl_TO--; if (bl_TO == 0) {analogWrite (bl, 0); // Taustavalo POIS bl_TO ++; } // Paina mitä tahansa aktivoidaksesi taustavalon, jos (((painike1 == 0) | (painike2 == 0)) & (bl_TO == 1)) {bl_TO = Aikavalo; analogWrite (bl, taustavalo); // odota, kunnes painike vapautetaan, kun ((painike1 == 0) | (painike2 == 0)) {painike1 = digitalRead (hs); // lukupainikkeet -painike2 = digitalRead (ms); }} else // Käsittelypainike 1 tai painike 2, kun sitä painetaan taustavalon ollessa päällä {if (button1 == 0) {h = h+1; bl_TO = Aikavalo; analogWrite (bl, taustavalo); }

jos (painike2 == 0) {s = 0; m = m+1; bl_TO = Aikavalo; analogWrite (bl, taustavalo); }

/* ---- hallitse sekunteja, minuutteja, tunteja am/pm ylivuoto ----*/if (s == 60) {s = 0; m = m+1; } jos (m == 60) {m = 0; h = h+1; } jos (h == 13) {h = 1; lippu = lippu+1; jos (lippu == 2) lippu = 0; }

if ((painike1 == 0) | (painike2 == 0)) // Päivitä näyttö, jos aika -painiketta painetaan {// Päivitä LCD -näyttö // Tulosta TIME in Hour, Min, Sec + AM/PM lcd.setCursor (0, 0); lcd.print ("Aika"); if (h <10) lcd.print ("0"); // aina 2 numeroa lcd.print (h); lcd.print (":"); jos (m <10) lcd.print ("0"); lcd.print (m); lcd.print (":"); jos (s <10) lcd.print ("0"); lcd.print (s);

if (lippu == 0) lcd.print ("AM"); if (lippu == 1) lcd.print ("PM"); lcd.setCursor (0, 1); // riville 2 lcd.print ("tarkkuuskello"); }

} // end if else} // end for

// ulompi 1000 ms: n silmukka

s = s+1; // lisäys sek. laskeminen // ---- hallitse sekunteja, minuutteja, tunteja am/pm ylivuoto ---- if (s == 60) {s = 0; m = m+1; } jos (m == 60) {m = 0; h = h+1; } jos (h == 13) {h = 1; lippu = lippu+1; jos (lippu == 2) lippu = 0; }

// Silmukan loppu}

Vaihe 3: Kaavio (tämä ei todellakaan ole askel)

Kaavamainen (tämä ei todellakaan ole askel)
Kaavamainen (tämä ei todellakaan ole askel)

Jos joku, joka lukee tätä, on tekninen nörtti, tässä on myös kaavio, jonka voit katsoa hulluksi.

Nauti ja pidä hauskaa ja ennen kaikkea pysy tuoreena.

Suositeltava: