Taula de continguts:
Vídeo: Rellotge de precisió: 3 passos
2024 Autora: John Day | [email protected]. Última modificació: 2024-01-30 08:12
Tots necessitem rellotges, així que, per què no fer-ho vostre en aquest instructiu, us mostraré com fer un rellotge de precisió un cop hàgiu configurat, que farà un seguiment automàtic de l’hora actual al fons de tot. Tot i que només necessita molt pocs subministraments i zero soldadures.
Subministraments
Primer, necessitareu un Arduino, però qualsevol Arduino funcionarà
A continuació, necessitareu un assortiment de cables genèrics de pont.
2 interruptors de polsador Sparkfun de 12 mm
Una taula de pa tradicional
i una pantalla LCD 1602 de 16 pins
Pas 1: cablejat
Per tal que aquest rellotge funcioni, heu de connectar-lo d'una manera molt específica o, en cas contrari, obtindreu un munt de números aleatoris a la pantalla en lloc de l'hora.
Pas 2: el codi
Com que no fem servir un RTC, el codi serà una mica llarg, però, per sort, he fet tot el treball dur per a vosaltres i us el proporciono aquí.
Simplement copieu-lo i enganxeu-lo a l'IDE Arduino o a l'editor web.
#include "LiquidCrystal.h"
// Això defineix el cablejat de la pantalla LCD a la DIGITALpins const int rs = 2, en = 3, d4 = 4, d5 = 5, d6 = 6, d7 = 7; LiquidCrystal lcd (rs, en, d4, d5, d6, d7);
// Configuració LCD Constrast digital int cs = 9; // pin 9 per al contrast PWM const int contrast = 100; // contrast per defecte
// la visualització de l’hora inicial és a les 12:59:45 PM int h = 12; int m = 59; int s = 45; int flag = 1; // PM
// Botó de configuració de l'hora int button1; int button2;
// Definició de pins per als botons de temps establerts int hs = 0; // pin 0 per a Configuració d'hores int ms = 1; // pin 1 per a Configuració de minuts
// Temps de retroiluminació const int Time_light = 150; int bl_TO = Time_light; // Backlight Time-Out int bl = 10; // Llum de fons pin const int retroil·luminació = 120; // no més de 7mA !!!
// Per a una lectura exacta del temps, utilitzeu Arduino Real Time Clock i no només delay () static uint32_t last_time, now = 0; // RTC
void setup () {lcd.begin (16, 2); pinMode (hs, INPUT_PULLUP); // evitar les resistències externes Pullup per al botó 1 pinMode (ms, INPUT_PULLUP); // i el botó 2 analogWrite (cs, contrast); // Ajustar el contrast VO analogWrite (bl, contrallum); // Girar a contrallum ara = millis (); // llegir valor inicial RTC}
bucle buit () {lcd.begin (16, 2); // cada segon // Actualització de la pantalla LCD // TEMPS d'impressió en hora, mínim, segon + AM / PM lcd.setCursor (0, 0); lcd.print ("Temps"); if (h <10) lcd.print ("0"); // sempre 2 dígits lcd.print (h); lcd.print (":"); if (m <10) lcd.print ("0"); lcd.print (m); lcd.print (":"); if (s <10) lcd.print ("0"); lcd.print (s);
if (flag == 0) lcd.print ("AM"); if (flag == 1) lcd.print ("PM"); lcd.setCursor (0, 1); // per a la línia 2 lcd.print ("Rellotge de precisió");
// millora de la substitució del retard (1000) // Molt millor precisió, ja no depèn del temps d'execució del bucle
for (int i = 0; i <5; i ++) // fa un bucle de 200 ms de 5 temps, per a una resposta més ràpida del botó {
while ((now-last_time) <200) // delay200ms {now = millis (); } // bucle interior de 200 ms last_time = ara; // prepara't per al següent bucle
// llegir botons de configuració botó1 = lectura digital (hs); // botó llegir botons2 = lectura digital (ms);
// Temps d'espera de la il·luminació de fons bl_TO--; if (bl_TO == 0) {analogWrite (bl, 0); // Retroil·luminació OFF bl_TO ++; } // Feu clic a qualsevol per activar la llum de fons si (((botó1 == 0) | (botó2 == 0)) & (bl_TO == 1)) {bl_TO = Llum_hora; analogWrite (bl, llum de fons); // espereu fins que es deixi anar el botó mentre ((botó1 == 0) | (botó2 == 0)) {botó1 = lectura digital (hs); // botons de lectura botó2 = lectura digital (ms); }} else // Procés el botó 1 o el botó 2 quan es prem mentre es controla la llum de fons {if (botó1 == 0) {h = h + 1; bl_TO = Llum_temporal; analogWrite (bl, llum de fons); }
if (botó2 == 0) {s = 0; m = m + 1; bl_TO = Llum_temporal; analogWrite (bl, llum de fons); }
/ * ---- gestiona el desbordament de segons, minuts, hores am / pm ---- * / if (s == 60) {s = 0; m = m + 1; } if (m == 60) {m = 0; h = h + 1; } if (h == 13) {h = 1; bandera = bandera + 1; if (flag == 2) flag = 0; }
if ((botó1 == 0) | (botó2 == 0)) // Actualització de la pantalla si es prem el botó de configuració de l'hora {// Actualització de la pantalla LCD // HORA d'impressió en hora, mínim, segon + AM / PM lcd.setCursor (0, 0); lcd.print ("Temps"); if (h <10) lcd.print ("0"); // sempre 2 dígits lcd.print (h); lcd.print (":"); if (m <10) lcd.print ("0"); lcd.print (m); lcd.print (":"); if (s <10) lcd.print ("0"); lcd.print (s);
if (flag == 0) lcd.print ("AM"); if (flag == 1) lcd.print ("PM"); lcd.setCursor (0, 1); // per a la línia 2 lcd.print ("Rellotge de precisió"); }
} // acabar si més} // acabar per
// bucle exterior de 1000 ms
s = s + 1; // increment de seg. comptar // ---- gestionar el desbordament de segons, minuts, hores am / pm ---- if (s == 60) {s = 0; m = m + 1; } if (m == 60) {m = 0; h = h + 1; } if (h == 13) {h = 1; bandera = bandera + 1; if (flag == 2) flag = 0; }
// Final del bucle}
Pas 3: esquema (realment no és un pas)
Si algú que llegeix això és un nerd tecnològic, aquí també hi ha un esquema que es pot tornar boig.
Gaudeix i diverteix-te i, sobretot, mantén-te fresc.
Recomanat:
Pingo: un llançador de boles de ping-pong amb detecció de moviment i alta precisió: 8 passos
Pingo: un llançador de boles de ping-pong amb detecció de moviment i alta precisió: Kevin Nitiema, Esteban Poveda, Anthony Mattacchione, Raphael Kay
Arduino Nano - Tutorial del sensor d’altímetre de precisió MPL3115A2: 4 passos
Arduino Nano - Tutorial del sensor d’altímetre de precisió MPL3115A2: El MPL3115A2 utilitza un sensor de pressió MEMS amb una interfície I2C per proporcionar dades de pressió / altitud i temperatura precises. Les sortides del sensor es digitalitzen mitjançant un ADC de 24 bits d'alta resolució. El processament intern elimina les tasques de compensació del
Raspberry Pi - Tutorial Python del sensor altímetre de precisió MPL3115A2: 4 passos
Raspberry Pi - Tutorial Python del sensor d’altímetre de precisió MPL3115A2: el MPL3115A2 utilitza un sensor de pressió MEMS amb una interfície I2C per proporcionar dades de pressió / altitud i temperatura precises. Les sortides del sensor es digitalitzen mitjançant un ADC de 24 bits d'alta resolució. El processament intern elimina les tasques de compensació del
Raspberry Pi - Sensor d’altímetre de precisió MPL3115A2 Tutorial de Java: 4 passos
Raspberry Pi - Sensor d’altímetre de precisió MPL3115A2 Tutorial Java: El MPL3115A2 utilitza un sensor de pressió MEMS amb una interfície I2C per proporcionar dades de pressió / altitud i temperatura precises. Les sortides del sensor es digitalitzen mitjançant un ADC de 24 bits d'alta resolució. El processament intern elimina les tasques de compensació del
Fotó de partícules - Tutorial del sensor d’altímetre de precisió MPL3115A2: 4 passos
Particle Photon - Tutorial del sensor d’altímetre de precisió MPL3115A2: el MPL3115A2 utilitza un sensor de pressió MEMS amb una interfície I2C per proporcionar dades de pressió / altitud i temperatura precises. Les sortides del sensor es digitalitzen mitjançant un ADC de 24 bits d'alta resolució. El processament intern elimina les tasques de compensació del