Horloge numérique TM1637 avec réglage heure/alarme – Prototype Arduino Nano
Composants et fournitures
| Arduino Nano R3 | ×1 |
| Afficheur 4 digits TM1637 | ×1 |
| Module RTC DS1302 | ×1 |
| LED bleue (ex: LilyPad) | ×1 |
| Buzzer (alarme) | ×1 |
| 3 boutons poussoirs (réglage) | ×3 |
À propos du projet
Prototype d'horloge numérique avec afficheur 4 digits TM1637, module RTC DS1302 (maintien heure sur pile), et interface de réglage heure/alarme par 3 boutons. Conçu comme base réutilisable pour futurs projets d'horloges. Code modulaire et commenté.
Fonctionnalités
- Affichage heure/minutes (format 24h) avec clignotement secondes (two-points).
- Mise à l'heure via 3 boutons : Mode (A), Incrément (B), Alarme ON/OFF (broche 9).
- Réglage alarme indépendant.
- LED témoin alarme activée.
- Buzzer sonore (bip 1s ON / 1s OFF) à l'heure d'alarme.
- Anti-rebond logiciel sur boutons (délai >3 ms).
Principe de réglage (boutons A et B en interruption)
- Appui long bouton A (>30 ms) : entre en mode réglage (heure courante ou alarme selon état).
- Chiffre courant clignote (position 0→1→2→3).
- Bouton B incrémente le chiffre clignotant (avec limites : heures 0-23, minutes 0-59).
- Nouvel appui long sur A : valide, passe au chiffre suivant ou sort du mode.
- En mode heure : écriture directe dans le DS1302 via
setDS1302Time().
Code complet
// Mario's Ideas - TM1637 Digital Clock with Setup and Alarm
#include
#include
#include
// RTC : CLK=A1, DAT=A2, RST=A3
virtuabotixRTC myRTC(A1, A2, A3);
#define CLK 4
#define DIO 5
#define BTN_ALARM 9
#define BUZZER 13
#define LED_ALARM 8
#define BTN_A 2 // Interruption
#define BTN_B 3 // Interruption
TM1637Display clock(CLK, DIO);
int minutes, hours;
int Alarm_minutes = 5, Alarm_hours = 18;
uint8_t Blank[] = {0x0};
int POSITION = 0;
int digits[4];
volatile int interval = 0;
volatile boolean Alarm_set = false;
volatile boolean Alarm_in_progress = false;
volatile boolean Setup_on = false;
void setup() {
attachInterrupt(digitalPinToInterrupt(BTN_A), Press_A_Button, RISING);
attachInterrupt(digitalPinToInterrupt(BTN_B), Press_B_Button, RISING);
pinMode(BTN_ALARM, INPUT);
pinMode(BUZZER, OUTPUT);
pinMode(LED_ALARM, OUTPUT);
digitalWrite(BUZZER, LOW);
clock.setBrightness(0x0f);
Serial.begin(9600);
}
void Press_A_Button() {
if (interval > 3) {
if (!Setup_on) {
Setup_on = true;
// Initialise digits[] depuis RTC ou alarme
} else {
POSITION++;
if (POSITION == 4) {
// Sauvegarde (RTC ou alarme) + sortie mode
POSITION = 0;
Setup_on = false;
}
}
interval = 0;
}
}
void Press_B_Button() {
if (interval > 3 && Setup_on) {
digits[POSITION]++;
// Gestion bornes (heures/minutes)
interval = 0;
}
interval = 0;
}
void loop() {
// Gestion bouton Alarme ON/OFF (anti-rebond 30)
// Mise à jour RTC
myRTC.updateTime();
if (Setup_on) {
// Affichage digits[] avec clignotement position courante
} else {
// Vérification alarme
if (myRTC.minutes == Alarm_minutes && myRTC.hours == Alarm_hours && Alarm_set) {
Alarm_in_progress = true;
}
if (Alarm_in_progress) {
digitalWrite(BUZZER, HIGH); delay(1000);
digitalWrite(BUZZER, LOW); delay(1000);
}
// Affichage normal heure RTC (maj seulement si minute change)
}
if (interval < 200) interval++;
}
Code complet avec gestion détaillée des interruptions, affichage multiplexé, et écriture RTC disponible dans la section code du projet original.
Schémas
Schéma de câblage : Arduino Nano → TM1637 (CLK/DIO), DS1302 (A1/A2/A3), 3 boutons (D2, D3, D9), Buzzer (D13), LED (D8). Alimentation 5V commune. Disponible en section schémas.
Processus de fabrication
- Capteurs analogiques vs numériques : types, applications et exemples pratiques
- Construire une alarme à eau headless Raspberry Pi 2 avec Adafruit T‑Cobbler Plus
- Construire un robot avec Raspberry Pi et Python : Guide complet
- Fiix et IDC : Comment la Transformation Digitale Boost la Fiabilité Manufacturière
- Prévenir les arrêts majeurs : comment la surveillance par émissions acoustiques a sauvé un fabricant alimentaire
- 8 méthodes éprouvées pour réduire les coûts de maintenance et augmenter les revenus avec les logiciels de maintenance numérique
- Accélérer la transformation numérique : La plateforme IdO Edge-to-Cloud de Cisco & IBM
- Construire un Réveil Fiable avec RTC DS1302 et Arduino UNO
- Comprendre la fonctionnalité et l'innovation des roulements dans les machines modernes