Table des matières:

Horloge de précision : 3 étapes
Horloge de précision : 3 étapes

Vidéo: Horloge de précision : 3 étapes

Vidéo: Horloge de précision : 3 étapes
Vidéo: Comment lire l'heure ? Apprentissage rapide ! 2024, Juillet
Anonim
Horloge de précision
Horloge de précision

Nous avons tous besoin d'horloges, alors pourquoi ne pas créer la vôtre dans cette instructable, je vais vous montrer comment faire une horloge de précision une fois que vous avez défini, gardera automatiquement une trace de l'heure actuelle en arrière-plan de tout. Tout en ne nécessitant que très peu de fournitures et aucune soudure.

Fournitures

Tout d'abord, vous aurez besoin d'un Arduino mais n'importe quel Arduino fonctionnera

Ensuite, vous aurez besoin d'un assortiment de cavaliers génériques.

2 interrupteurs à bouton-poussoir Sparkfun de 12 mm

Une planche à pain traditionnelle

et un écran LCD 1602 16 broches

Étape 1: Câblage

Câblage
Câblage

Pour que cette horloge fonctionne, vous devez la câbler d'une manière très spécifique, sinon vous obtiendrez un tas de nombres aléatoires à l'écran plutôt que l'heure.

Étape 2: le code

Comme nous n'utilisons pas de RTC, le code va être un peu long, mais heureusement, j'ai fait tout le travail pour vous et je l'ai fourni ici.

Copiez et collez simplement ceci dans l'IDE Arduino ou dans l'éditeur Web.

#include "LiquidCrystal.h"

// Ceci définit le câblage LCD vers les broches DIGITAL const int rs = 2, en = 3, d4 = 4, d5 = 5, d6 = 6, d7 = 7; LiquidCrystal lcd(rs, en, d4, d5, d6, d7);

// Réglage du contraste LCD numérique int cs=9; // broche 9 pour le contraste PWM const int contrast = 100; // contraste par défaut

// l'affichage initial de l'heure est 12:59:45 PM int h=12; entier m=59; int s=45; indicateur int=1; //PM

// Boutons de réglage de l'heure int button1; int bouton2;

// Définition des broches pour les boutons de réglage de l'heure int hs=0; // broche 0 pour le réglage des heures int ms=1; // broche 1 pour le réglage des minutes

// Délai d'expiration du rétroéclairage const int Time_light=150; int bl_TO=Time_light;// Délai d'expiration du rétroéclairage int bl=10; // Broche de rétroéclairage const int backlight=120; // pas plus de 7mA !!!

// Pour une lecture précise de l'heure, utilisez l'horloge temps réel Arduino et pas seulement delay() static uint32_t last_time, now = 0; // RTC

void setup() { lcd.begin (16, 2); pinMode (hs, INPUT_PULLUP); // éviter les résistances Pullup externes pour le bouton 1 pinMode (ms, INPUT_PULLUP); // et bouton 2 analogWrite (cs, contraste); // Ajuster le contraste VO analogWrite (bl, backlight); // Tourner on Backlight now=millis(); // lit la valeur initiale RTC }

void loop() { lcd.begin (16, 2); // chaque seconde // Mettre à jour l'affichage LCD // Imprimer l'HEURE en heures, minutes, secondes + AM/PM lcd.setCursor (0, 0); lcd.print("Heure "); if(h<10)lcd.print("0");// toujours 2 chiffres lcd.print(h); lcd.print(":"); if(m<10)lcd.print("0"); lcd.print(m); lcd.print(":"); if(s<10)lcd.print("0"); lcd.impression(s);

if(drapeau==0) lcd.print(" AM"); if(drapeau==1) lcd.print(" PM"); lcd.setCursor(0, 1);// pour la ligne 2 lcd.print("Horloge de précision");

// amélioration du remplacement du délai (1000) // bien meilleure précision, ne dépend plus du temps d'exécution de la boucle

for (int i=0;i<5;i++)// faire une boucle de 5 fois 200ms, pour une réponse plus rapide du bouton {

while ((now-last_time)<200) //delay200ms { now=millis(); } // boucle interne de 200 ms last_time=now; // préparer la prochaine boucle

// lire les boutons de réglage button1=digitalRead(hs); // lire les boutons button2=digitalRead(ms);

//Temps d'expiration du rétroéclairage bl_TO--; if(bl_TO==0) { analogWrite(bl, 0);// Rétroéclairage OFF bl_TO++; } // Appuyez sur n'importe quel pour activer le rétroéclairage if(((button1==0)|(button2==0)) & (bl_TO==1)) { bl_TO=Time_light; analogWrite(bl, rétroéclairage); // attendre que le bouton soit relâché while ((button1==0)|(button2==0)) { button1=digitalRead(hs);// Lire les boutons button2=digitalRead(ms); } } else // Traiter le bouton 1 ou le bouton 2 lorsqu'il est touché alors que le rétroéclairage est activé { if(button1==0){ h=h+1; bl_TO=Heure_lumière; analogWrite(bl, rétroéclairage); }

if(bouton2==0){ s=0; m=m+1; bl_TO=Heure_lumière; analogWrite(bl, rétroéclairage); }

/* ---- gérer les secondes, minutes, heures débordement am/pm ----*/ if(s==60){ s=0; m=m+1; } si(m==60) { m=0; h=h+1; } si(h==13) {h=1; indicateur=indicateur+1; si(drapeau==2)drapeau=0; }

if((button1==0)|(button2==0))// Mettre à jour l'affichage si le bouton de réglage de l'heure est enfoncé { // Mettre à jour l'affichage LCD // Imprimer l'HEURE en Heure, Min, Sec + AM/PM lcd.setCursor(0, 0); lcd.print("Heure "); if(h<10)lcd.print("0");// toujours 2 chiffres lcd.print(h); lcd.print(":"); if(m<10)lcd.print("0"); lcd.print(m); lcd.print(":"); if(s<10)lcd.print("0"); lcd.impression(s);

if(drapeau==0) lcd.print(" AM"); if(drapeau==1) lcd.print(" PM"); lcd.setCursor(0, 1);// pour la ligne 2 lcd.print("Horloge de précision"); }

} // fin si sinon }// fin pour

// boucle externe de 1000 ms

s=s+1; //incrémenter la sec. comptage // ---- gérer les secondes, minutes, heures débordement am/pm ---- if(s==60){ s=0; m=m+1; } si(m==60) { m=0; h=h+1; } si(h==13) {h=1; indicateur=indicateur+1; si(drapeau==2)drapeau=0; }

// Fin de boucle }

Étape 3: Schéma (ce n'est pas vraiment une étape)

Schéma (ce n'est pas vraiment une étape)
Schéma (ce n'est pas vraiment une étape)

Si quelqu'un qui lit ceci est un nerd de la technologie, voici également un schéma que vous pouvez regarder devenir fou.

Profitez et amusez-vous et surtout restez frais.

Conseillé: