60-Horloge avec affichage LCD
Horloge avec affichage LCD
Ce programme permettra d'avoir l'une heure et la date sur un afficheur LCD.
Pour cela il vous faut:
Une carte Arduino Uno.
Un module DCF77.
Un afficheur LCD 2*16 caractéres.
Le montage:
Montage LCD identique avec un déplacement de connexion 14 en 6 au lieu de 2 sur Arduino fil jaune.
Installation de la librairie: voir chapitre ici.
Télécharger mon programme DCF77_LCD1
#include "DCF77.h" // Librairie DCF77
#include "Time.h" // Librairie Time
#include <LiquidCrystal.h> // Librairie LCD
// Initialisation des connexions de l'afficheur LCD
// et définit les broches utilisées RS=12, E=11, D4=5, D5=4, D6=3, D7=6.
LiquidCrystal lcd(12, 11, 5, 4, 3, 6);
// Initialisation du récepteur DCF77 réception pin2 Interruption 0
DCF77 DCF(2,0);
time_t time;
char cara=' '; // caractère de séparation
int compteur=0; // déclaration compteur et mise à zero
// Création du caractère :-)
byte smiley1[8] = { // déclaration d'un tableau de 8 octets
B11011, // 1 pour pixel affiché - 0 pour pixel éteint
B00000, // définition de chaque octet au format binaire
B00100, // les 3 bits de poids forts ne sont pas écrits car inutiles
B00100,
B00000,
B10001,
B01110,
};
// Création du caractère :-(
byte smiley2[8] = { // déclaration d'un tableau de 8 octets
B11011, // 1 pour pixel affiché - 0 pour pixel éteint
B00000, // définition de chaque octet au format binaire
B00100, // les 3 bits de poids forts ne sont pas écrits car inutiles
B00100,
B00000,
B01110,
B10001,
};
void setup() {
lcd.createChar(1, smiley1); // création du caractère personnalisé numéro 1 :-)
lcd.createChar(2, smiley2); // création du caractère personnalisé numéro 2 :-(
lcd.begin(16, 2); // Initialisation de l'afficheur
lcd.setCursor(0, 0); // Positionnement du curseur en position 1 er ligne 1 er caractère
DCF.Start(); // Mise en marche du décodage DCF
lcd.print("Attendre "); // Message Attendre
lcd.setCursor(0, 1); // Positionnement sur la deuxième ligne
lcd.print("signal DCF77"); // Message signale DCF77
delay(3000); // Tempo de 3 secondes
lcd.setCursor(0, 1); // Positionnement sur la deuxième ligne
lcd.print("2 minutes "); // Message 2 minutes
delay(3000); // Tempo de 3 secondes
}
void loop() {
++compteur; // ajout +1 au compteur
if (compteur>32000) {compteur=1;} //Si compteur >32000 mise à 1 du compteur
delay(1000); // Temporisation de 1 seconde
time_t DCFtime = DCF.getTime(); // contrôle si signale disponible
if (DCFtime!=0) // si différent de 0
{
lcd.setCursor(15, 0); // Position du curseur sur ligne 1 caractère 15
lcd.write(1); // Signal bon affiche sur le LCD :-)
setTime(DCFtime); // Lecture des données
compteur=0; // Mise à zéro du compteur
}
else
{
if (compteur>240) { // Si compteur >3 minutes
lcd.setCursor(15, 0); // Position du curseur sur ligne 1 caractère 15
lcd.write(2); // Signal mauvais affiche sur le LCD :-(
}
}
digitalClockDisplay(); // Routine Affichage de l'heure et date
}
void digitalClockDisplay(){
// affichage de l'heure et de la date
lcd.setCursor(0, 0); // Curseur 1 er ligne et 1 er caractère
printDigits(hour()); //Affichage heure
cara=':'; // caractère de séparation
printDigits(minute()); //Affichage minute
printDigits(second()); //Affichage seconde
lcd.setCursor(0, 1); // Curseur 2 ieme ligne et 1 er caractère
cara=' '; // caractère de séparation
printDigits(day()); //Affichage jour
printDigits(month()); //Affichage mois
printDigits(year()); //Affichage année
}
//Routine pour ajouter caractère de séparation et 0 si chiffre <10
void printDigits(int digits){
lcd.print(cara); //Affichage du caractère de séparation
if(digits < 10) // Si valeur <10
lcd.print('0'); // affichage 0
lcd.print(digits); // Affichage valeur
}
Une fois votre montage effectué bien sur hors tension. Brancher votre carte en USB sur votre ordinateur. Ouvrir le logiciel Arduino et ouvrir le fichier.
Après faire un clique sur l’icône pour faire le transfert vers la carte Arduino Uno.
Faire un reset de la carte.
Voici le résultat:
Mise à jour 25/07/2013
Créé avec HelpNDoc Personal Edition: Générateur de documentation d'aide HTML gratuit