Indholdsfortegnelse:

Præcisionsur: 3 trin
Præcisionsur: 3 trin

Video: Præcisionsur: 3 trin

Video: Præcisionsur: 3 trin
Video: Обязательно запомни эту хитрость! Как можно моментально вывести йод с одежды? #shorts 2024, November
Anonim
Præcisionsur
Præcisionsur

Vi har alle brug for ure, så hvorfor ikke lave din egen i denne instruktive Jeg vil vise dig, hvordan du laver et præcisionsur, når du har indstillet, vil automatisk holde styr på den aktuelle tid i baggrunden for alt. Selvom de kun har brug for meget få forsyninger og nul lodninger.

Forbrugsvarer

Først skal du bruge en Arduino, men enhver Arduino vil fungere

Derefter skal du bruge et sortiment af generiske jumperwires.

2 12 mm Sparkfun -trykknapkontakter

Et traditionelt brødbræt

og en LCD 1602 16 -pins skærm

Trin 1: Ledningsføring

Ledninger
Ledninger

For at dette ur kan fungere, skal du koble dette til på en meget specifik måde, ellers får du en masse tilfældige tal på skærmen frem for tiden.

Trin 2: Koden

Da vi ikke bruger en RTC, vil koden blive lidt lang, men heldigvis har jeg gjort alt det hårde arbejde for dig og givet det her.

Bare kopier og indsæt dette i enten Arduino IDE eller web -editoren.

#include "LiquidCrystal.h"

// Dette definerer LCD -ledningerne til DIGITALpins const int rs = 2, en = 3, d4 = 4, d5 = 5, d6 = 6, d7 = 7; LiquidCrystal lcd (rs, en, d4, d5, d6, d7);

// Digital LCD Constrast -indstilling int cs = 9; // pin 9 for kontrast PWM const int contrast = 100; // standardkontrast

// indledende tidsvisning er 12:59:45 PM int h = 12; int m = 59; int s = 45; int flag = 1; //OM EFTERMIDDAGEN

// Tidsindstillingsknapper int -knap1; int -knap2;

// Pins definition for 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; // Baggrundsbelysning Time-Out int bl = 10; // Baggrundsbelysning pin const int baggrundsbelysning = 120; // ikke mere end 7mA !!!

// For nøjagtig tidslæsning skal du bruge Arduino Real Time Clock og ikke bare forsinke () statisk uint32_t sidste_tid, nu = 0; // RTC

void setup () {lcd.begin (16, 2); pinMode (hs, INPUT_PULLUP); // undgå eksterne Pullup -modstande til Button 1 pinMode (ms, INPUT_PULLUP); // og Button 2 analogWrite (cs, kontrast); // Juster kontrast VO analogWrite (bl, baggrundslys); // Drej på baggrundslys nu = millis (); // læs RTC -startværdi}

void loop () {lcd.begin (16, 2); // hvert sekund // Opdater LCD -display // Print TIME in Time, Min, Sec + AM/PM lcd.setCursor (0, 0); lcd.print ("Tid"); hvis (h <10) lcd.print ("0"); // altid 2 cifre lcd.print (h); lcd.print (":"); hvis (m <10) lcd.print ("0"); lcd.print (m); lcd.print (":"); hvis (s <10) lcd.print ("0"); lcd.print (r);

hvis (flag == 0) lcd.print ("AM"); hvis (flag == 1) lcd.print ("PM"); lcd.setCursor (0, 1); // for linje 2 lcd.print ("præcisionsur");

// forbedret udskiftning af forsinkelse (1000) // Meget bedre nøjagtighed, ikke mere afhængig af sløjfeudførelsestid

for (int i = 0; i <5; i ++) // lav 5 gangs 200 ms loop, for hurtigere knaprespons {

mens ((nu-sidste_tid) <200) // forsinkelse200ms {nu = millis (); } // indre 200ms loop sidste_tid = nu; // forbered dig på næste loop

// læs indstillingsknapper button1 = digitalRead (hs); // Read Buttons button2 = digitalRead (ms);

// Baggrundsbelysning timeout bl_TO--; hvis (bl_TO == 0) {analogWrite (bl, 0); // Baggrundslys OFF bl_TO ++; } // Tryk på en vilkårlig for at aktivere Baggrundslys, hvis (((knap1 == 0) | (knap2 == 0)) & (bl_TO == 1)) {bl_TO = Time_light; analogWrite (bl, baggrundsbelysning); // vent, indtil knappen slippes, mens ((knap1 == 0) | (knap2 == 0)) {knap1 = digitalRead (hs); // Læs knapper knap2 = digitalRead (ms); }} else // Behandl knap 1 eller knap 2, når den rammes, mens baggrundslys er tændt {hvis (knap1 == 0) {h = h+1; bl_TO = Time_light; analogWrite (bl, baggrundsbelysning); }

hvis (knap2 == 0) {s = 0; m = m+1; bl_TO = Time_light; analogWrite (bl, baggrundsbelysning); }

/* ---- administrer sekunder, minutter, timer am/pm overløb ----*/if (s == 60) {s = 0; m = m+1; } hvis (m == 60) {m = 0; h = h+1; } hvis (h == 13) {h = 1; flag = flag+1; hvis (flag == 2) flag = 0; }

hvis ((knap1 == 0) | (knap2 == 0)) // Opdater visning, hvis der er trykket på tidsindstillingsknappen {// Opdater LCD -display // Udskriv TID i time, min., sek + AM/PM lcd.setCursor (0, 0); lcd.print ("Tid"); hvis (h <10) lcd.print ("0"); // altid 2 cifre lcd.print (h); lcd.print (":"); hvis (m <10) lcd.print ("0"); lcd.print (m); lcd.print (":"); hvis (s <10) lcd.print ("0"); lcd.print (r);

hvis (flag == 0) lcd.print ("AM"); hvis (flag == 1) lcd.print ("PM"); lcd.setCursor (0, 1); // for linje 2 lcd.print ("præcisionsur"); }

} // ende hvis ellers} // ende for

// ydre 1000ms sløjfe

s = s+1; // øgningssek. tælle // ---- styre sekunder, minutter, timer am/pm overløb ---- hvis (s == 60) {s = 0; m = m+1; } hvis (m == 60) {m = 0; h = h+1; } hvis (h == 13) {h = 1; flag = flag+1; hvis (flag == 2) flag = 0; }

// Sløjfe slut}

Trin 3: Skematisk (dette er virkelig ikke et trin)

Skematisk (dette er virkelig ikke et trin)
Skematisk (dette er virkelig ikke et trin)

Hvis nogen, der læser dette, er en teknisk nørd, er her også en skematisk, du kan se på det, gå amok.

Nyd og have det sjovt og forbliv mest af alt frisk.

Anbefalede: