Étape 4: Code
Vous pouvez maintenant charger l’esquisse à l’Arduino. You´re aussi capable au fil de la LED bandes maintenant. Don´t connecter le Module BT!!! Nous voulons tout d’abord regarder le code, vous devez savoir où vous pouvez modifier plusieurs choses...
Télécharger l’IDE Arduino et la fréquentation.
IDE Arduino, AdafruitNeoPixel, temps, DS1307RTC
Installer l’EDI et mettez la fréquentation dans le dossier de la bibliothèque.
Ouvrir le fichier joint de INO et transférez-le sur votre arduino. Le code décrit ici est la même chose mais avec des commentaires ! Si vous avez tout fait correctement, vous pouvez maintenant voir la « bootanimation ». Il est possible de régler l’heure sur le serialmonitor. Il suffit de taper par exemple. (10:33).
N’hésitez pas à jouer avec le code...
Ill vous donnons ici une brève description du Code (installation sans RTC!)
DÉFINITIONS :
#define PIN 6 //Hour LED Strip
#define MINPIN 5 //Singelminute LED
#define NUMPIXELS 12 //Number de Pixels pour heure
#define MINNUMPIXELS 4 //Number de Pixels pour une seule minute
#define 115200 bauds / / Baudrate, doit correspondre le baudrate du Module BT
#define hind ' //start octet de TimeSync
timeset int = 0 ; drapeau de stocker si le temps a été défini après le démarrage
int delayval = 20 ; délai pour l’animation de la décoloration
int clocktimer = 10000 ; actualisation de l’heure
int timebright = 250 ; luminosité d’heure Strip
int mtimebright = 50 ; luminosité de singelmin
initialiser des int = 0 ; drapeau d’appeler la fonction clearpixels après démarrage
ahour int ;
int oldahour = 0 ; stocker l’heure précédente.
aminute int ;
int oldamin = 0 ; stocke la minute précédente pour mise à jour
aseconde int ;
aday int ;
amonth int ;
ayear int ;
mmin int ;
tmElements_t tm ;
Le programme d’installation pour les baies de NeoPixel LED 2 (nom = TYPE (nombre de PIXELS, qui épingle, FORMAT RVB ou GRB, FREQ) ; Consultez le guide Adafruit pour plus d’informations.
Adafruit_NeoPixel pixels = Adafruit_NeoPixel (NUMPIXELS, PIN, NEO_GRB + NEO_KHZ800) ;
Adafruit_NeoPixel minpixels = Adafruit_NeoPixel (MINNUMPIXELS, MINPIN, NEO_RGB + NEO_KHZ800) ;
PROGRAMME D’INSTALLATION :
void setup() {}
Serial.Begin(baudrate) ;
Wire.Begin() ;
Initialice les bandes, tous OFF
pixels.Begin() ;
minpixels.Begin() ;
pixels.Show() ;
minpixels.Show() ;
Faire une petite animation
Serial.println("Sunrise") ;
Sunrise() ;
Delay(1000) ;
Serial.println("Sunset") ;
Sunset() ;
pixels.Show() ;
Serial.println("Ready") ;
}
BOUCLE :
void loop() {}
cocher pour timesync
tandis que (Serial.available() > 0) {}
char c = Serial.read() ;
if(c == utch) //if il y a un @ sur la ligne, lire les prochains octets / ints
{
readTime() ;
}
}
initialice les LED, animation de démarrage claire
if(Initialize == 0) {}
clearpixels() ;
initialisation = 1 ;
}
ahour = heure() ;
aminute = minute() ;
Si (timeset == 1 || timeset == 0) / / ici, vous pouvez vérifier si le délai a été programmé, vous pouvez arrêter le programme ici si Timeset = FALSE, il suffit de retirer "|| TIMESET == 0"!
{
Si (oldamin < aminute || oldahour < ahour) //check si le temps a changé. TRUE = actualisation -> ensemble tous pour OFF, afficher la nouvelle heure
{
clearpixels() ;
ClockDisplay() ;
}
}
}
Affichage de l’horloge :
Sub ClockDisplay()
{
oldahour = ahour ;
oldamin = aminute ;
int xhour, xmin ;
Si (ahour > = 12) {}
xhour = ahour-12 ; Nous avons seulement 12 LED pour affichage 24h
}
else {}
xhour = ahour ;
}
redimensionnez-la en étapes de 5min
xmin = (aminute / 5) ;
if(oldamin < aminute)
{
oldamin = aminute ;
clearpixels() ;
}
prendre le reste de la division dor la singelmin LED
mmin = (aminute % 5) ; opérateur modulo par exemple. 24 % 5 = 4 ! très utile:-P
pixels.setBrightness(timebright) ;
pixels.setPixelColor (xmin, pixels. Color(5,125,255)) ; vous pouvez changer les couleurs ici ! jouer !
pixels.setPixelColor (xhour, pixels. Color(255,50,0)) ;
pixels.Show() ;
afficher les minutes de singel
pour (int m = 0; m
minpixels.setBrightness(mtimebright) ;
minpixels.setPixelColor (m, pixels. Color(255,255,0)) ;
minpixels.Show() ;
}
}
Lire et traiter TIMEinformation numéro de série
void readtime() / / si nous avons déjà obtenu des principaux « traiter les prochaines données et stocker l’heure pour le temps Lib
{
ahour = Serial.parseInt() ;
aminute = Serial.parseInt() ;
aseconde = Serial.parseInt() ;
Aday = Serial.parseInt() ;
AMonth = Serial.parseInt() ;
AYear = Serial.parseInt() ;
Serial.println("TIMESET") ;
Serial.Print(ahour) ;
Serial.Print(":") ;
Serial.println(aminute) ;
setTime(ahour,aminute,asecond,aday,amonth,ayear) ;
}
Effacer tout!
void clearpixels() / / la valeur de chaque PIXEL unique OFF pour actualiser l’affichage
{
pixels.Begin() ;
minpixels.Begin() ;
pour (int i=0;ipixels.setPixelColor (i, pixels. Color(0,0,0)) ;
minpixels.setPixelColor (i, pixels. Color(0,0,0)) ;
pixels.Show() ;
minpixels.Show() ;
}
}