Indholdsfortegnelse:
- Forbrugsvarer
- Trin 1: Ledningsføring
- Trin 2: Koden
- Trin 3: Skematisk (dette er virkelig ikke et trin)
Video: Præcisionsur: 3 trin
2024 Forfatter: John Day | [email protected]. Sidst ændret: 2024-01-30 08:26
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
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)
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:
Arduino bil omvendt parkering alarmsystem - Trin for trin: 4 trin
Arduino bil omvendt parkering alarmsystem. Trin for trin: I dette projekt vil jeg designe en simpel Arduino bil omvendt parkeringssensorkreds ved hjælp af Arduino UNO og HC-SR04 ultralydssensor. Dette Arduino -baserede bilomvendt alarmsystem kan bruges til en autonom navigation, robotafstand og andre rækkevidde
Trin for trin pc -bygning: 9 trin
Trin for trin PC Building: Supplies: Hardware: MotherboardCPU & CPU -køler PSU (strømforsyningsenhed) Opbevaring (HDD/SSD) RAMGPU (ikke påkrævet) CaseTools: Skruetrækker ESD -armbånd/mathermal pasta m/applikator
Tre højttalerkredsløb -- Trin-for-trin vejledning: 3 trin
Tre højttalerkredsløb || Trin-for-trin vejledning: Højttalerkredsløb styrker lydsignalerne, der modtages fra miljøet til MIC og sender det til højttaleren, hvorfra forstærket lyd produceres. Her vil jeg vise dig tre forskellige måder at lave dette højttalerkredsløb på:
Trin-for-trin uddannelse i robotik med et sæt: 6 trin
Trin-for-trin uddannelse i robotteknologi med et kit: Efter ganske få måneder med at bygge min egen robot (se alle disse), og efter at jeg to gange havde dele mislykkedes, besluttede jeg at tage et skridt tilbage og tænke min strategi og retning. De flere måneders erfaring var til tider meget givende, og
Akustisk levitation med Arduino Uno trin for trin (8 trin): 8 trin
Akustisk levitation med Arduino Uno Step-by Step (8-trin): ultralyds lydtransducere L298N Dc kvindelig adapter strømforsyning med en han-DC-pin Arduino UNOBreadboard Sådan fungerer det: Først uploader du kode til Arduino Uno (det er en mikrokontroller udstyret med digital og analoge porte til konvertering af kode (C ++)