Étape 5: Le LED horloge croquis
/ * Cette esquisse exécute une horloge avec cinq matrices de LED, basées sur le chipset MAX72xx.
On trouvera un exemple qui indique par écrit et défile le texte long 4 matrices de LED à
Cette esquisse utilise la LedControlMS.h (de Makerspace) depuis la page ci-dessus, une modificarion de la bibliothèque de LEDControl.h.
Ce dessin utilise les bibliothèques de temps & fil Arduino et la DS3131RTC (bibliothèque de DS3232RCTC)
Croquis suppose le câblage suivant pour les matrices de MAX72xx LED--
broche 12 est reliée à la DataIn
broche 11 est reliée à la CLK
broche 10 est reliée à la charge
Dataout (broche de sortie moyen) est connecté en guirlande à la DataIn de la prochaine LED pour chaque matrice sauf la dernière.
Câblage pour la DS3231RTC
SCR et sol sont connectés à + 5 Vcc et Gnd, respectivement
Horloge SDA--> analogique 4
SCL--> analogique 5
*/
#include < DS3232RTC.h > / / Bibliothèque DS3232RTC horloge qui gère aussi DS3231RTC
#include < Time.h > //Used pour horloge
#include < Wire.h > //Used pour horloge
#include « LedControlMS.h » / / Note que ce n’est pas bibliothèque LEDControl
int h1, h2, m1, m2 ; Chaque matrice de LED affichera un seul numéro : heure minute 1 & 2, 1 & 2. Ces variables détiennent les chiffres unique
int s1 = 2 ; LED qui compte les secondes
hr12 int ; Utilisé pour temps de 12 heures
int noMatrix = 5 ; Nombre de matrices. La bibliothèque s’adresse jusqu'à 8.
Boolean suis = true ; À l’occasion de m’ou h Initialize mod
LedControl lc=LedControl(12,11,10,noMatrix) ; Affectations de la broches et le nombre de matrices (5)
void setup() {}
Tout d’abord, définir l’heure système à une date codée de manière irréversible, l’heure et puis définit le CCF de l’heure système.
La fonction setTime() appartient à la bibliothèque.
H Min Sec jj mm aaaa
setTime (18, 18, 30, 25, 11, 2014) ; Régler manuellement l’horloge de l’Arduino
RTC.set(now()) ; le CCF de la valeur de l’heure système
Initialiser le MAX72XXs (en mode économie d’énergie au démarrage--coup de semonce.
pour (int i = 0; i < noMatrix; i ++) {//For des matrices...
LC.Shutdown(i,false) ;
lc.setIntensity(i,1) ; Régler la luminosité à une valeur faible
lc.clearDisplay(i) ; Effacer l’affichage
}
Delay(100) ; Attendre entre les mises à jour de l’affichage
lc.clearAll() ;
}
void loop() {}
La valeur am ou pm Boolean (suis a été initialisé en tant que vrai)
Si (heure() > 12)
{suis = false ;
HR12 = heure ()-12 ;
}
/ * Isoler les heures et les minutes, un chiffre à chaque matrice de LED.
Je pense qu’une heure à un seul chiffre semble mieux avec un premier chiffre vierge.
*/
Placer chaque chiffre de l’heure dans sa propre variable, h1 et h2
Si (hr12 < 10)
{
/*
1ère matrice de LED en blanc si < 10 hrs. (62 est un personnage vide.)
Pourrait également insérer un zéro, comme pour les minutes.
*/
H1 = 151 ;
H2 = hr12 ; 2ème LED affiche un chiffre unique d’heure
}
d’autre
{
Sinon, juste utiliser les deux chiffres de l’heure sur h1 et h2.
H1 = hr12/10 ; Division d’entiers par 10 renvoie le premier chiffre de l’heure.
H2 = hr12 % 10 ; Modulo division par 10 retourne le 2e chiffre.
}
Minutes sont affichées par m1 et m2
Si (minute() < 10)
{
M1 = 0 ; Zéro de la première minute LED d1splays
m2=minute() ; 2e chiffre des minutes
}
d’autre
{
M1 = (minute) / 10 ;
m2=minute() % 10 ;
}
/*
Afficher les heures et les minutes à l’aide de la fonction displayChar. Cet exemple utilise deux arguments entiers :
le nombre de matrice de LED (0-7) et le caractère à afficher. Les numéros s’affichent simplement
en passant le nombre lui-même comme le 2e argument : c’est lc.displayChar(0,h1)
*/
lc.displayChar(0,h1) ; Heures a conduit 1 chiffre le plus à gauche (# 0).
lc.displayChar(1,h2) ; Chiffres des heures 2 LED # 1
lc.displayChar(3,m1) ; Chiffre de minutes 1 à 3 LED. (Rappelons que #2 est utilisé pour délimiter les secondes).
lc.displayChar(4,m2) ; Chiffres des minutes 1 à #4
/ * Cette routine détermine quel single a conduit à la lumière de compter les secondes.
Le témoin indicateur central compte les secondes en éclairant une seule LED à la fois
dans chacune des 8 lignes. Comptez 8 LEDs sur les lignes impaires et 7 entre rangées.
Ainsi, deux rangées comptent 15 secondes.
*/
pour (int r = 7; r > -1; r--) {//For de 8 rangs, en commençant par le haut (#7)...
pour (int c = 0; c < 8; c ++) {//For chacun des 8 leds d’affilée (0 à gauche)...
/*
Allume le point sur la ligne et de colonne actuel. Celles-ci semblent être permuté sur mon matériel.
Par conséquent, j’ai troqué les arguments à la fonction de setLed() ci-dessous.
Correctement, il s’adresse à setLed (int conduit # int row, int col, boolean).
S1 variable contient le nombre de LED (à partir de 0) de la matrice de LED utilisée pour cela.
*/
Si (r %2 == 0 & & c == 7) //Even ligne et col 7
{}
d’autre
lc.setLed(s1,c,r,true) ; Allumer LED adressé pendant 3/4 s
Delay(750) ;
lc.setLed(s1,c,r,false) ; Mettez hors tension pendant 1/4 sec
Delay(250) ;
}
}
}
}