Étape 2: programmation
Le code que j’ai utilisé a été tiré du livre, « 30 projets Arduino pour l’Evil Genius » par Simon Monk. Mais j’ai peaufiné un peu pour s’adapter à ma conception spécifique. La première chose que vous devez faire est de télécharger le fichier « Time » de la bibliothèque de l’arduino.
http://www.pjrc.com/teensy/td_libs_Time.html
Assurez-vous que « time.h » est dans votre dossier de bibliothèques dans le programme Arduino.
La tige de l’interrupteur est alors vous pouvez régler l’heure. Quand il est éteint, l’horloge se déplace plus vite donc vous pouvez l’exécuter à travers le cycle jusqu'à ce qu’il atteigne la durée souhaitée pour le mettre à. Lorsque vous appuyer à nouveau sur l’interrupteur, il ralentit à la normale et garde le temps de là.
Voici le code que j’ai utilisé :
#include < Time.h >
int hourLEDs [] = {3, 4, 1, 2} ; tout d’abord la liste dans l’ordre de 1
int minuteLEDs [] = {A4, A3, A2, A1, A0, 13} ;
int secondLEDs [] = {11, 10, 9, 8, 7, 6} ;
int loopLEDs [] = {A4, A3, A2, A1, A0, 13, 11, 10, 9, 8, 7, 6, 4, 3, 2, 1} ;
int switchPin = 0 ;
void setup()
{
pour (int i = 0; i < 4; i ++)
{
pinMode (hourLEDs [i], sortie) ;
}
pour (int i = 0; i < 6; i ++)
{
pinMode (minuteLEDs [i], sortie) ;
}
pour (int i = 0; i < 6; i ++)
{
pinMode (secondLEDs [i], sortie) ;
}
setTime(0) ;
}
void loop()
{
Si (digitalRead(switchPin)) //when commutateur est activés, le temps de vitesses haut donc vous pouvez régler l’heure
{
adjustTime(1) ;
}
ElseIf (minute() == 0 & & second() == 0)
{
Spin(Hour()) ;
}
updateDisplay() ;
Delay(1) ;
}
Sub updateDisplay()
{
time_t t = now() ;
setOutput (hourLEDs, 4, hourFormat12 (t)) ;
setOutput (minuteLEDs, 6, minute(t)) ;
setOutput (secondLEDs, 6, second(t)) ;
}
void setOutput (int * ledArray, int numLEDs, int valeur)
{
pour (int i = 0; i < numLEDs; i ++)
{
digitalWrite (ledArray [i], bitRead (valeur, i)) ;
}
}
void //spins spin (int count) les lumières pour chaque heure
{
pour (int i = 0; i < count; i ++)
{
pour (int j = 0; j < 16; j ++)
{
digitalWrite (loopLEDs [j], HIGH) ;
Delay(50) ;
digitalWrite (loopLEDs [j], faible) ;
}
}
}