Table des matières:

Horloge de retraite / Compte à rebours / Horloge Dn : 4 étapes (avec photos)
Horloge de retraite / Compte à rebours / Horloge Dn : 4 étapes (avec photos)

Vidéo: Horloge de retraite / Compte à rebours / Horloge Dn : 4 étapes (avec photos)

Vidéo: Horloge de retraite / Compte à rebours / Horloge Dn : 4 étapes (avec photos)
Vidéo: Comment Créer un Compte à Rebours Gratuit avec Canva | Tutoriel Facile pour un Décompte Impactant 2024, Novembre
Anonim
Horloge de retraite / Compte à rebours / Horloge Dn
Horloge de retraite / Compte à rebours / Horloge Dn

J'avais quelques-uns de ces écrans à matrice de points LED 8x8 dans le tiroir et je réfléchissais à ce que je devais en faire. Inspiré par d'autres instructables, j'ai eu l'idée de construire un affichage de compte à rebours/up pour compter jusqu'à une date/heure future et si le temps cible est passé, comptez à partir de celui-ci. J'en ai fait maintenant mon horloge de retraite assise sur l'étagère.

L'idée de le mettre dans une bouteille était plus un accident en pensant à un étui. D'autres mettent des bateaux dans une bouteille, pourquoi pas une horloge ?

Je voulais également que l'horloge obéisse à l'heure d'été et, bien sûr, se souvienne des paramètres et de l'heure lorsqu'elle est débranchée. J'alimente l'horloge via USB, ce qui la rend reprogrammable si vous souhaitez faire quelque chose de différent ou simplement ajouter des fonctionnalités au code. Le code est assez simple et pourrait également nécessiter beaucoup d'optimisation. Je n'ai pas pris grand soin de la consommation de RAM je dois l'avouer. Si j'ai le temps et la motivation, j'y reviendrai.

Fournitures

1. Arduino Nano

2. RTC (j'ai utilisé le DS3231 commun qui a aussi une EEPROM)

3. Module matriciel 12x 8x8. (J'ai eu les modules quad qui sont plus faciles à aligner)

4. LDR pour régler la luminosité de l'écran

5. Résistance 10 kOhm

6. Condensateur 5x 100 uF supprimant les pointes de l'écran

7. Pour augmenter le contraste des modules 8x8, j'ai utilisé le "Film pour fenêtre" teinté foncé. L'écran affiche les LED sous forme de points blancs s'ils ne sont pas allumés. Le film pour vitres lui donne un aspect noir brillant.

Étape 1: Connectez les composants

Connectez les composants
Connectez les composants
Connectez les composants
Connectez les composants

J'ai utilisé trois des écrans quad pour assembler l'écran. Pour afficher une date avec des barres obliques et l'heure avec des deux-points, nous avons besoin d'un espace pour 8 caractères. En utilisant la police 5x7 typique, nous aurions besoin de six blocs 8x8 par ligne. J'ai coupé l'un des blocs quad en deux et les ai disposés en deux rangées par six blocs, comme indiqué sur le schéma de la planche à pain.

Étape 2: Pièces imprimées en 3D

Pièces imprimées en 3D
Pièces imprimées en 3D
Pièces imprimées en 3D
Pièces imprimées en 3D
Pièces imprimées en 3D
Pièces imprimées en 3D

Pour tenir les deux rangées du présentoir et les positionner dans la bouteille, j'ai imprimé des anneaux d'écartement ronds pour le cadre du présentoir. J'ai ajouté les fichiers que j'ai utilisés ci-dessous. Pour pouvoir les imprimer sans support, ils sont divisés en plusieurs parties. La capture d'écran montre les deux anneaux collés au cadre de l'écran. Le couvercle du goulot de la bouteille abrite les trois boutons pour basculer entre les modes d'affichage et régler l'heure actuelle et l'heure cible. Le cache goulot que j'ai imprimé en TPU permettant de glisser le câble USB dans le cache sans couper les connecteurs et de l'attacher avec quelques enroulements de fil. J'ai oublié de mentionner que j'ai utilisé une bouteille de vin de 1,5 L que j'ai coupée tout en bas. Toutes les pièces à imprimer s'adaptent sur un lit d'imprimante de 20x20 cm (8x8 pouces).

Étape 3: Le code

Le code Arduino utilise quelques bibliothèques couramment utilisées.

MD_MAX72xx

SPI

Câble

RTClib

Fuseau horaire

TimeLib

Il y a quelques lignes dans le fichier INO qui peuvent avoir besoin d'être modifiées:

Ligne 38: #define HARDWARE_TYPE MD_MAX72XX::FC16_HW <-- dépend du module 8x8 et de son orientation

au lieu de FC16_HW, il pourrait l'un de:

- MD_MAX72XX::PAROLA_HW

- MD_MAX72XX::GENERIC_HW

- MD_MAX72XX::ICSTATION_HW

- MD_MAX72XX::FC16_HW

Le code utilise les paramètres de l'heure centrale des États-Unis et doit être ajusté pour d'autres fuseaux horaires:

Ligne 53/54:

TimeChangeRule myDST = {"CDT", Second, Sun, Mar, 2, -300}; // Heure d'été UTC-5TimeChangeRule mySTD = {"CST", First, Sun, Nov, 2, -360}; // Heure standard UTC -6

C'est facile à régler. Le nom CST/CDT est juste pour avoir une référence. Je n'affiche pas l'abréviation à trois lettres, donc cela n'a pas d'importance. Les paramètres suivants font référence au jour du mois où le changement a lieu. L'ajustement est en minutes, donc les emplacements utilisant des ajustements de +/- 30 minutes fonctionneront également.

Le RTC s'exécute en interne à l'heure UTC, ce qui permet à la bibliothèque de fuseaux horaires de fonctionner comme prévu. Vous vous demandez peut-être pourquoi le code fait référence à l'ancienne puce DS1307 contrairement à la puce d'horloge que j'ai utilisée, mais cela n'a pas d'importance. La bibliothèque fonctionne bien avec l'une ou l'autre puce. Le DS1307 a tendance à plus dériver que le DS3132. la DS3132 est l'horloge préférée. Pour ceux qui souhaitent ajouter du temps Internet, un ESP8266 fera le travail assez facilement. Cela pourrait rendre le RTC obsolète. Si vous effectuez ces modifications, utilisez l'EEPROM Arduino pour stocker l'heure cible, j'ai utilisé l'EEPROM RTC pour le faire.

Étape 4: Fonctionnement et paramètres

Fonctionnement et paramètres
Fonctionnement et paramètres
Fonctionnement et paramètres
Fonctionnement et paramètres
Fonctionnement et paramètres
Fonctionnement et paramètres

Il y a trois boutons

1. Menu/paramètres

2. Haut

3. Vers le bas

Le bouton de menu permet de parcourir les trois types d'affichage: heure actuelle, heure cible, heure delta. L'heure Delta indique le nombre de jours, HH/MM/SS entre l'heure actuelle et l'heure cible. Il affichera t- et décompte si la cible est dans le futur ou t+ et décompte si la cible est dans le passé.

Pour régler l'heure actuelle ou cible, sélectionnez l'affichage de l'heure actuelle ou de l'heure cible. Pour changer l'heure, maintenez le bouton menu enfoncé pendant 2 secondes et relâchez ce qui vous amènera dans le mode de réglage. Le voisin "/" ou ":" se transformera en "" pour indiquer quel chiffre vous ajustez. Utilisez les boutons haut/bas pour régler individuellement hh/mm/ss et mm/dd/yy. Je n'ai pas ajouté de paramètre pour basculer entre mm/jj/aa et jj/mm/aa, cela doit être modifié dans le code ou peut-être que quelqu'un est prêt à ajouter cette fonctionnalité.

Vous remarquerez que si vous passez les minutes au-dessus de 59 ou en dessous de 00, l'affichage de l'heure s'ajustera également. il en est de même pour les secondes, les heures et les jours en changeant la valeur immédiatement supérieure s'ils passent en dessous de 0 ou au-dessus du max pour ce chiffre. J'ai fait cela pour éviter de programmer les différentes limites de mois individuels et si février a besoin de 29 jours dans une année bissextile. Le réglage de l'heure se fait en fait en temps d'époque, en secondes depuis le 1er janvier 1970.

J'ai ajouté une vidéo simple pour montrer le comptage. Je voulais les faire comme un affichage à roue tournante. Si vous souhaitez ajuster la durée du changement, la ligne 69 de l'INO vous offre quelques options pour accélérer ou ralentir le changement. 120 ms rendraient le défilement des chiffres assez lent car ce serait une roue qui tournerait en continu.

J'espère que vous avez apprécié cette instructable.

Patrick Geschwindner

Conseillé: