Inhoudsopgave:

Precisieklok: 3 stappen
Precisieklok: 3 stappen

Video: Precisieklok: 3 stappen

Video: Precisieklok: 3 stappen
Video: MAXTON DESIGN SPOILER PLAATSEN AUDI|BUMPER SPOILERS PLAKKEN|ROOD TOEVOEGEN CAMOUFLAGE|Twins.tv #28 2024, December
Anonim
Precisieklok
Precisieklok

We hebben allemaal klokken nodig, dus waarom zou je er niet zelf een maken in deze instructable. Ik ga je laten zien hoe je een precisieklok kunt maken zodra je deze hebt ingesteld, die automatisch de huidige tijd op de achtergrond van alles bijhoudt. Terwijl je ook maar heel weinig benodigdheden nodig hebt en geen soldeerwerk.

Benodigdheden

Eerst heb je een Arduino nodig, maar elke Arduino zal werken

Vervolgens hebt u een assortiment generieke jumperdraden nodig.

2 Sparkfun-drukknopschakelaars van 12 mm

Een traditionele Breadboard

en een LCD 1602 16-pins display

Stap 1: Bedrading

Bedrading
Bedrading

Om deze klok te laten werken, moet je deze op een heel specifieke manier bedraden, anders krijg je een aantal willekeurige getallen op het scherm in plaats van de tijd.

Stap 2: De code

Aangezien we geen RTC gebruiken, zal de code een beetje lang zijn, maar gelukkig heb ik al het harde werk voor je gedaan en hier verstrekt.

Kopieer en plak dit gewoon in de Arduino IDE of de webeditor.

#include "LiquidCrystal.h"

// Dit definieert de LCD-bedrading naar de 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-contrastinstelling int cs=9;// pin 9 voor contrast PWM const int contrast = 100;// standaard contrast

// initiële tijdweergave is 12:59:45 uur int h=12; intm=59; int s=45; int vlag=1; //P. M

// Tijdinstelknoppen int button1; int-knop2;

// Pinsdefinitie voor Time Set Buttons int hs=0;// pin 0 voor Ureninstelling int ms=1;// pin 1 voor Minutes Setting

// Time-out achtergrondverlichting const int Time_light=150; int bl_TO=Time_light;// Time-out achtergrondverlichting int bl=10; // Achtergrondverlichting pin const int achtergrondverlichting = 120; // niet meer dan 7mA !!!

// Gebruik voor nauwkeurige tijdaflezing Arduino Real Time Clock en niet alleen delay() static uint32_t last_time, now = 0; // RTC

void setup() { lcd.begin (16, 2); pinMode (hs, INPUT_PULLUP);// vermijd externe Pullup-weerstanden voor knop 1 pinMode (ms, INPUT_PULLUP);// en knop 2 analogWrite (cs, contrast);// Pas contrast aan VO analogWrite (bl, achtergrondverlichting);// Draai op Achtergrondverlichting nu=millis(); // lees RTC initiële waarde}

void loop() { lcd.begin (16, 2);// elke seconde // Update LCD-scherm // Print TIJD in uur, min, sec + AM/PM lcd.setCursor (0, 0); lcd.print("Tijd"); if(h<10)lcd.print("0");// altijd 2 cijfers lcd.print(h); lcd.print(":"); if(m<10)lcd.print("0"); lcd.afdruk(m); lcd.print(":"); if(s<10)lcd.print("0"); lcd.afdruk(ken);

if(flag==0) lcd.print("AM"); if(vlag==1) lcd.print("PM"); lcd.setCursor (0, 1);// voor Line 2 lcd.print ("Precisieklok");

// verbeterde vervanging van vertraging (1000) // Veel betere nauwkeurigheid, niet meer afhankelijk van de uitvoeringstijd van de lus

for (int i=0;i<5;i++)// maak een lus van 5 keer 200 ms, voor snellere knopreactie {

while ((nu-laatste_tijd)<200) //delay200ms { now=millis(); } // binnenste lus van 200 ms last_time=nu; // bereid je voor op de volgende lus

// lees Instellingsknoppen button1=digitalRead (hs);// Read Buttons button2=digitalRead (ms);

// Time-out achtergrondverlichting bl_TO--; if(bl_TO==0) {analogeWrite(bl, 0);// Achtergrondverlichting UIT bl_TO++; } // Druk op een willekeurige om achtergrondverlichting te activeren if(((button1==0)|(button2==0)) & (bl_TO==1)) { bl_TO=Time_light; analogWrite(bl, achtergrondverlichting); // wacht tot de knop wordt losgelaten terwijl ((button1==0)|(button2==0)) { button1=digitalRead (hs);// Read Buttons button2=digitalRead (ms); } } else // Verwerk knop 1 of knop 2 wanneer geraakt terwijl de achtergrondverlichting aan is { if(button1==0){ h=h+1; bl_TO=Tijd_licht; analogWrite(bl, achtergrondverlichting); }

if(knop2==0){ s=0; m=m+1; bl_TO=Tijd_licht; analogWrite(bl, achtergrondverlichting); }

/* ---- beheer seconden, minuten, uren am/pm overflow ----*/ if(s==60){ s=0; m=m+1; } als(m==60) { m=0; h=h+1; } if(h==13) { h=1; vlag=vlag+1; if(vlag==2)vlag=0; }

if((button1==0)|(button2==0))// Update het display als de tijdset-knop is ingedrukt { // Update het LCD-scherm // Print TIME in Hour, Min, Sec + AM/PM lcd.setCursor(0, 0); lcd.print("Tijd"); if(h<10)lcd.print("0");// altijd 2 cijfers lcd.print(h); lcd.print(":"); if(m<10)lcd.print("0"); lcd.afdruk(m); lcd.print(":"); if(s<10)lcd.print("0"); lcd.afdruk(ken);

if(flag==0) lcd.print("AM"); if(vlag==1) lcd.print("PM"); lcd.setCursor (0, 1);// voor Line 2 lcd.print ("Precisieklok"); }

} // end if else }// end for

// buitenste lus van 1000 ms

s=s+1; // verhoog sec. tellen // ---- beheren seconden, minuten, uren am/pm overflow ---- if(s==60){ s=0; m=m+1; } als(m==60) { m=0; h=h+1; } if(h==13) { h=1; vlag=vlag+1; if(vlag==2)vlag=0; }

// Lus einde}

Stap 3: Schematisch (dit is niet echt een stap)

Schematisch (dit is niet echt een stap)
Schematisch (dit is niet echt een stap)

Als iemand die dit leest een technische nerd is, hier is ook een schema, je kunt er gek van worden.

Geniet en veel plezier en blijf vooral vers.

Aanbevolen: