Étape 7: Code
Une explication rapide dont épingles aller où... arduino pins 22-27 sont les 6 broches pour les heures, broches de l’arduino 28-36 sont les 9 minutes, et 37-45 sont les 9 secondes.
L’int tableaux un [30] et b [30] sont ensemble le tableau 2 dimensions pour la cathode et l’anode de chaque LED.
L’int tableaux c [72] et d [72] ensemble sont les baies pour (des minutes et des secondes car ils utilisent le même tableau). Comme vous pouvez voir que les deux tableaux sont décalés pour aligner le temps = position 0 pour être au top de l’horloge étant donné que je n’a pas mis la première LED au bon endroit quand mettre ensemble. Vous pouvez garder le déplacement des valeurs left ou right (juste veillez à toujours à la même chose à la fois les tableaux c et d) jusqu'à la minute / seconde main à l’heure = 0 soit orienté vers le haut.
Vous n’avez pas besoin de régler manuellement l’heure puisque la bibliothèque RTC fait cela lors de l’initialisation lorsque vous chargez le croquis.
#include < Wire.h >
#include « RTClib.h »
RTC_DS1307 CCF ;6 (heure) + 9 (min), 9 (s) = 26 broches nécessaires en utilisant charlieplexing pour contrôler les 144 LEDs sur 3 anneaux distincts.
6 broches = utilisé pendant des heures
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30
int a [30] = {22,23,24,25,26,27,22,23,24,25,26,27,22,23,24,25,26,27,22,23,24,25,26,27,22,23,24,25,26,27} ;
int b [30] = {27,27,27,27,27,26,26,26,26,26,25,25,25,25,25,24,24,24,24,24,23,23,23,23,23,22,22,22,22,22} ;
utilisable jusqu'à 30 broches. Il n’y a plus de 6 postes ouverts pour une utilisation.
9 broches (x2) = utilisé pour les minutes et les seconds(+9)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60
int c [72] = {32,31,30,29,28,36,35,34,33,32,31,30,29,28,36,35,34,33,32,31,30,29,28,36,35,34,33,32,31,30,29,28,33,32,31,30,29,28,36,35,34,33,32,31,30,29,28,36,35,34,33,32,31,30,29,28,36,35,34,33} ;
d int [72] = {33,33,33,33,33,33,33,33,34,34,34,34,34,34,34,34,35,35,35,35,35,35,35,35,36,36,36,36,36,36,36,36,29,29,29,29,30,30,30,30,30,30,30,30,31,31,31,31,31,31,31,31,32,32,32,32,32,32,32,32} ;
peut contrôler jusqu'à 72 broches. Il n’y a plus de 12 postes ouverts pour une utilisation.
void setup()
{
Serial.Begin(57600) ;
Wire.Begin() ;
RTC.begin() ;
ce qui donne le pouvoir de la Commission du DS1307 (pour Arduino MEGA)
les autres bacs sont câblés aux lignes SCL et SDA sur l’arduino (pour le méga ils sont broches 20 et 21) (pour le Duemilanove, ils sont sur les broches analogiques, consulter le site d’arduino pour en savoir plus).
pinMode (18, sortie) ;
digitalWrite (18, faible) ;
pinMode (sortie 19) ;
digitalWrite (19, haute) ;
}
void loop()
{
DateTime maintenant = RTC.now() ;
heure
int timeHr = now.hour() ;
int modHr = timeHr % 24 ; modulo 24
réinitialise chaque broche de sorte que la broche est ni haut ni bas (donc ne restez pas del)
pinMode (22, entrée) ;
pinMode (23, entrée) ;
pinMode (24, entrée) ;
pinMode (25, entrée) ;
pinMode (26, INPUT) ;
pinMode (27, INPUT) ;
les prochaines lignes plusieurs prenez la position de la LED des ensembles un [] et b [] (anode et cathode) et mettez-les à HIGH et LOW sorties pour cette boucle.
pinMode (un [modHr], sortie) ;
pinMode (b [modHr], sortie) ;
digitalWrite(a[modHr],HIGH) ;
digitalWrite(b[modHr],LOW) ;
minute
int tempsMin = now.minute() ;
int modMin = tempsMin % 60 ;
pinMode (28, INPUT) ;
pinMode (29, INPUT) ;
pinMode (30, entrée) ;
pinMode (31, INPUT) ;
pinMode (32, INPUT) ;
pinMode (33, INPUT) ;
pinMode (34, entrée) ;
pinMode (35, INPUT) ;
pinMode (36, INPUT) ;
pinMode (c [modMin], sortie) ;
pinMode (d [modMin], sortie) ;
digitalWrite(c[modMin],HIGH) ;
digitalWrite(d[modMin],LOW) ;
seconde
int tempsSec = now.second() ;
int modSec = tempsSec % 60 ;
pinMode (37, entrée) ;
pinMode (38, entrée) ;
pinMode (39, INPUT) ;
pinMode (40, INPUT) ;
pinMode (41, INPUT) ;
pinMode (42, INPUT) ;
pinMode (43, INPUT) ;
pinMode (44, INPUT) ;
pinMode (45, entrée) ;
pinMode ((c [modSec] + 9), sortie) ;
pinMode ((d [modSec] + 9), sortie) ;
digitalWrite ((c [modSec] + 9), élevé) ;
digitalWrite ((d [modSec] + 9), faible) ;
/*
pinMode (37, sortie) ;
pinMode (sortie 38) ;
pinMode (39, sortie) ;
pinMode (40, sortie) ;
pinMode (41, sortie) ;
pinMode (42, sortie) ;
pinMode (43, sortie) ;
pinMode (44, sortie) ;
pinMode (45, sortie) ;
digitalWrite(37,LOW) ; 1
digitalWrite(38,LOW) ; 2
digitalWrite(39,LOW) ; 3
digitalWrite(40,LOW) ; 4
digitalWrite(41,LOW) ; 5
digitalWrite(42,LOW) ;
digitalWrite(43,LOW) ;
digitalWrite(44,LOW) ; 8 arrêt
digitalWrite(45,HIGH); * /
}