INHOUDSOPGAWE:

Presisieklok: 3 stappe
Presisieklok: 3 stappe

Video: Presisieklok: 3 stappe

Video: Presisieklok: 3 stappe
Video: ДЕЛАЙ 3 ПРИЁМА КАЖДЫЙ ДЕНЬ С УТРА И ВОТ ЧТО БУДЕТ... 2024, Julie
Anonim
Presisie klok
Presisie klok

Ons het almal horlosies nodig, so hoekom maak u nie u eie in hierdie instruksionele nie, gaan ek u wys hoe u 'n presiese horlosie kan maak sodra u dit ingestel het, outomaties die huidige tyd op die agtergrond van alles byhou. Alhoewel dit slegs baie benodigdhede en nul soldeersels benodig.

Voorrade

Eerstens benodig u 'n Arduino, maar enige Arduino werk

Vervolgens benodig u 'n verskeidenheid algemene draaddrade.

2 12 mm Sparkfun -drukknopskakelaars

'N Tradisionele broodbord

en 'n 1660 -skerm LCD 1602 -skerm

Stap 1: Bedrading

Bedrading
Bedrading

Om hierdie horlosie te laat werk, moet u dit op 'n baie spesifieke manier bedraad, anders kry u 'n klomp ewekansige getalle op die skerm eerder as die tyd.

Stap 2: Die kode

Aangesien ons nie 'n RTC gebruik nie, sal die kode 'n bietjie lank wees, maar gelukkig het ek al die harde werk vir u gedoen en dit hier verskaf.

Kopieer en plak dit óf in die Arduino IDE óf in die webredakteur.

#sluit "LiquidCrystal.h" in

// Dit definieer die LCD -bedrading na die DIGITALpins const int rs = 2, en = 3, d4 = 4, d5 = 5, d6 = 6, d7 = 7; LiquidCrystal lcd (rs, en, d4, d5, d6, d7);

// Digitale LCD Constrast -instelling int cs = 9; // pen 9 vir kontras PWM const int contrast = 100; // standaard kontras

// aanvanklike tydsvertoning is 12:59:45 PM int h = 12; int m = 59; int s = 45; int vlag = 1; // PM

// Tydsinstellingsknoppies int knoppie1; int knoppie2;

// Pins definisie vir Time Set Buttons int hs = 0; // pin 0 for Hours Setting int ms = 1; // pin 1 for Minutes Setting

// Backlight Time Out const int Time_light = 150; int bl_TO = Time_light; // Backlight Time-Out int bl = 10; // Backlight pin const int backlight = 120; // nie meer as 7mA nie !!!

// Vir akkurate tydlesing, gebruik Arduino Real Time Clock en vertraag nie net () statiese uint32_t last_time nie, nou = 0; // RTC

ongeldige opstelling () {lcd.begin (16, 2); pinMode (hs, INPUT_PULLUP); // vermy eksterne Pullup -weerstande vir Button 1 pinMode (ms, INPUT_PULLUP); // en Button 2 analogWrite (cs, kontras); // Pas kontras VO analogWrite aan (bl, agtergrond); // Draai nou op agtergrond = millis (); // lees RTC se aanvanklike waarde}

leegte -lus () {lcd.begin (16, 2); // elke sekonde // Werk LCD -skerm op // Druk TYD in uur, min., sek. + AM/PM lcd.setCursor (0, 0); lcd.print ("Tyd"); as (h <10) lcd.print ("0"); // altyd 2 syfers lcd.print (h); lcd.print (":"); as (m <10) lcd.print ("0"); lcd.print (m); lcd.print (":"); as (s <10) lcd.print ("0"); lcd.print (s);

as (vlag == 0) lcd.print ("AM"); as (vlag == 1) lcd.print ("PM"); lcd.setCursor (0, 1); // vir reël 2 lcd.print ("presisieklok");

// verbeterde vervanging van vertraging (1000) // Baie beter akkuraatheid, nie meer afhanklik van lusuitvoeringstyd nie

for (int i = 0; i <5; i ++) // maak 5 keer 200ms lus, vir vinniger knoppie -reaksie {

terwyl ((nou-laaste_tyd) <200) // delay200ms {nou = millis (); } // binneste 200ms lus last_time = nou; // berei u voor vir die volgende lus

// lees Knoppie knoppies instel1 = digitalRead (hs); // Knoppies leesknoppies2 = digitalRead (ms);

// Tydsverloop teen agtergrond bl_TO--; as (bl_TO == 0) {analogWrite (bl, 0); // Backlight OFF bl_TO ++; } // Druk op enige om die agtergrond te aktiveer as (((knoppie1 == 0) | (knoppie2 == 0)) en (bl_TO == 1)) {bl_TO = Tydslig; analogWrite (bl, agtergrond); // wag totdat Knoppie vrygestel word terwyl ((knoppie1 == 0) | (knoppie2 == 0)) {knoppie1 = digitalRead (hs); // Lees knoppies knoppie2 = digitalRead (ms); }} anders // Verwerk knoppie 1 of knoppie 2 wanneer dit getref word terwyl die agtergrond aan {if (button1 == 0) {h = h+1; bl_TO = Tydslig; analogWrite (bl, agtergrond); }

as (knoppie2 == 0) {s = 0; m = m+1; bl_TO = Tydslig; analogWrite (bl, agtergrond); }

/* ---- bestuur sekondes, minute, ure am/pm oorloop ----*/if (s == 60) {s = 0; m = m+1; } as (m == 60) {m = 0; h = h+1; } as (h == 13) {h = 1; vlag = vlag+1; as (vlag == 2) vlag = 0; }

if ((knoppie1 == 0) | (knoppie2 == 0)) // Opdateer die vertoning as die tydstelknoppie ingedruk word {// Werk LCD -skerm op // Druk TYD in uur, min, sek + AM/PM lcd.setCursor (0, 0); lcd.print ("Tyd"); as (h <10) lcd.print ("0"); // altyd 2 syfers lcd.print (h); lcd.print (":"); as (m <10) lcd.print ("0"); lcd.print (m); lcd.print (":"); as (s <10) lcd.print ("0"); lcd.print (s);

as (vlag == 0) lcd.print ("AM"); as (vlag == 1) lcd.print ("PM"); lcd.setCursor (0, 1); // vir reël 2 lcd.print ("presisieklok"); }

} // end if else} // end for

// buitenste 1000ms lus

s = s+1; // toename sek. tel // ---- beheer sekondes, minute, ure am/pm oorloop ---- as (s == 60) {s = 0; m = m+1; } as (m == 60) {m = 0; h = h+1; } as (h == 13) {h = 1; vlag = vlag+1; as (vlag == 2) vlag = 0; }

// Lus einde}

Stap 3: Skematiese (dit is nie regtig 'n stap nie)

Skematiese (dit is nie regtig 'n stap nie)
Skematiese (dit is nie regtig 'n stap nie)

As iemand wat dit lees 'n tegniese nerd is, is dit ook 'n skematiese skema, u kan gek daaroor kyk.

Geniet dit en geniet dit en bly veral vars.

Aanbeveel: