Étape 4: Vérification et configuration du Module
Une fois que vous avez terminé assemblage du module. Connecter le module à l’Arduino, afin que les broches sont insèrent correctement dans l’Arduino. Le programme pour tester le module est donné ci-dessous. Le code met à jour constamment l’heure via le port série.
Dans l’ordre d’exécuter le module, il faut deux bibliothèques, nous avons besoin de deux bibliothèques dans le logiciel Arduino. Les étapes suivantes configurer le logiciel Arduino avec les bibliothèques nécessaires et le code.
Importation des bibliothèques :
- Télécharger la bibliothèque "RealTimeClockDS1307" et enregistrez-le sur le bureau.
- Ouvrez l’Arduino et allez au Sketch = > Bibliothèque d’importation = > Ajouter une bibliothèque.
- Sélectionnez la bibliothèque enregistrée dans le bureau, puis cliquez sur Ajouter.
- Maintenant, collez l’exemple de code ci-dessous, puis cliquez sur compiler. Si on compile avec succès puis ignorez les étapes restantes.
- Si elle n’est pas importer la bibliothèque de deuxième "fil" et répétez la même procédure et compiler le code et il va fonctionner.
Code de travail :
Le code est écrit par « David H. Brown » j’ai simplement l’utiliser pour vous donner une introduction à la DS1307. De toute façon l’Arduino communique avec le Module RTC et met à jour l’heure pour chaque seconde à travers le Serial Monitor. Le créateur nous a donné une option pour régler l’heure quand nous envoyons la commande «?». Le menu suivant apparaît.
Copiez le code suivant vous aidera à régler l’heure mais aussi de vérifier si la batterie de secours du module d’alimentation fonctionne correctement. Dans le prochain tutoriel, je vais vous montrer comment installer un écran LCD et d’afficher le temps écoulé entre le module RTC. Voici le code pour tester le module et un fichier joint de la même chose.
#include < Wire.h > #include < RealTimeClockDS1307.h > //RealTimeClock CCF ; //=new RealTimeClock() ; #define Display_Clock_Every_N_Seconds 10 / / n.secs pour montrer la date/heure #define Display_ShortHelp_Every_N_Seconds 60 / / n.secs pour afficher l’indice de l’aide //#define TEST_Squarewave //#define TEST_StopStart //#define TEST_1224Switch int count = 0 ; char au format [] = "00-00-00 00:00:00 x" ; void setup() {/ / Wire.begin() ; Serial.Begin(9600) ; pinMode (A3, sortie) ; broche 16 (broche analogique 2) comme sortie *** digitalWrite (A3, élevé) ; broche 16 (broche analogique 2) défini sur faible *** pinMode (A2, sortie) ; pin 17 (broche analogique 3) comme sortie *** digitalWrite (A2, faible) ; pin 17 (broche analogique 3) trop élevé *** / / *** paramètres analogiques broches au module d’alimentation RTC ***} void loop() {if(Serial.available()) {processCommand();} RTC.readClock() ; Count ++ ; Si (Nbre % Display_Clock_Every_N_Seconds == 0) {Serial.print(count) ; Serial.Print(":") ; RTC.getFormatted(formatted) ; Serial.Print(formatted) ; Serial.println() ; } Si (Nbre % Display_ShortHelp_Every_N_Seconds == 0) {Serial.println ("Envoyer ? pour obtenir une liste de commandes.");} #ifdef TEST_Squarewave si (Nbre % 10 == 0) {switch (comte/10 % 6) {case 0: Serial.print ("carrés désactivé (basse impédance):") ; RTC.sqwDisable(0) ; Serial.println((int) RTC.readData(7)) ; rupture ; cas 1: Serial.print ("carrés désactivé (haute impédance):") ; RTC.sqwDisable(1) ; Serial.println((int) RTC.readData(7)) ; rupture ; cas 2: Serial.println ("carrés activée à 1 Hz") ; RTC.sqwEnable(RTC.SQW_1Hz) ; rupture ; case 3: Serial.println ("carrés a permis à 4,096 kHz") ; RTC.sqwEnable(RTC.SQW_4kHz) ; rupture ; case 4: Serial.println ("carrés a permis à 8.192 kHz") ; RTC.sqwEnable(RTC.SQW_8kHz) ; rupture ; cas 5: Serial.println ("carrés a permis à 32,768 kHz") ; RTC.sqwEnable(RTC.SQW_32kHz) ; rupture ; par défaut : Serial.println ("carrés test ne pas défini") ; {//switch} #endif #ifdef TEST_StopStart si (Nbre % 10 == 0) {if (! RTC.isStopped()) {if(RTC.getSeconds() < 45) {Serial.println (« horloge d’arrêt pendant 10 secondes") ; RTC.stop() ; //if} nous avons assez de temps} else {RTC.setSeconds(RTC.getSeconds()+11) ; RTC.start() ; Serial.println (« Ajouter 11 secondes et redémarrer l’horloge ») ; //if}} sur un multiple de 10 compte #endif #ifdef TEST_1224Switch si (Nbre % 10 == 0) {si (Nbre % 20 == 0) {Serial.println ("commutation vers 12 heures") ; RTC.switchTo12h() ; RTC.setClock() ; } else {Serial.println ("commutation vers 24 heures") ; RTC.switchTo24h() ; RTC.setClock() ; {}} #endif} void processCommand() {si ()! Serial.available()) {return;} char commande = Serial.read() ; int dans, in2 ; Switch(Command) {« H » de cas : cas « h »: in=SerialReadPosInt() ; RTC.setHours(in) ; RTC.setClock() ; Serial.Print ("réglage des heures") ; Serial.println(in) ; rupture ; « I » affaire : cas « i »: in=SerialReadPosInt() ; RTC.setMinutes(in) ; RTC.setClock() ; Serial.Print ("affectant minutes") ; Serial.println(in) ; rupture ; de cas ': de l’affaire ': in=SerialReadPosInt() ; RTC.setSeconds(in) ; RTC.setClock() ; Serial.Print ("affectant secondes") ; Serial.println(in) ; rupture ; « Y » de cas : cas « y »: in=SerialReadPosInt() ; RTC.setYear(in) ; RTC.setClock() ; Serial.Print (« année de réglage à") ; Serial.println(in) ; rupture ; cas suis ': cas suis ': in=SerialReadPosInt() ; RTC.setMonth(in) ; RTC.setClock() ; Serial.Print ("mois de réglage à") ; Serial.println(in) ; rupture ; affaire aurait ": cas serait ': in=SerialReadPosInt() ; RTC.setDate(in) ; RTC.setClock() ; Serial.Print ("réglage date à") ; Serial.println(in) ; rupture ; case « W »: Serial.print ("jour de la semaine est") ; Serial.println((int) RTC.getDayOfWeek()) ; rupture ; case « w »: in=SerialReadPosInt() ; RTC.setDayOfWeek(in) ; RTC.setClock() ; Serial.Print (« jour de réglage de la semaine pour") ; Serial.println(in) ; rupture ; affaire ' t ': affaire ' t ': if(RTC.is12hour()) {RTC.switchTo24h() ; Serial.println ("activation de l’horloge de 24 heures.") ; } else {RTC.switchTo12h() ; Serial.println ("activation de l’horloge de 12 heures.") ; } RTC.setClock() ; rupture ; « A » de cas : cas « a »: if(RTC.is12hour()) {RTC.setAM() ; RTC.setClock() ; Serial.println ("Set AM.") ; } else {Serial.println ("(Set heures seulement en mode 24 heures.)");} break ; affaire « P »: affaire « p »: if(RTC.is12hour()) {RTC.setPM() ; RTC.setClock() ; Serial.println ("Set PM.") ; } else {Serial.println ("(Set heures seulement en mode 24 heures.)");} break ; cas « q »: RTC.sqwEnable(RTC.SQW_1Hz) ; Serial.println ("onde carrée sortie 1Hz la valeur") ; rupture ; affaire « Q »: RTC.sqwDisable(0) ; Serial.println ("Square sortie onde désactivée (faible)") ; rupture ; case « z »: RTC.start() ; Serial.println ("Clock oscillator commencé.") ; rupture ; case « Z »: RTC.stop() ; Serial.println ("Clock oscillator arrêtée.") ; rupture ; cas ' >': in=SerialReadPosInt() ; IN2=SerialReadPosInt() ; RTC.writeData (en, in2) ; Serial.Print ("Write pour enregistrer") ; Serial.Print(in) ; Serial.Print ("la valeur") ; Serial.println(IN2) ; rupture ; cas ' <': in=SerialReadPosInt() ; IN2=RTC.ReadData(in) ; Serial.Print ("lire du Registre") ; Serial.Print(in) ; Serial.Print ("la valeur") ; Serial.println(IN2) ; rupture ; par défaut : Serial.println ("commande inconnue. Essayez ces: ") ; Serial.println ("h ## - set heures [1.. 12 gamme ou 0..24]") ; Serial.println ("i ## - régler les mInutes [rang 0..59]") ; Serial.println ("s ## - set secondes [rang 0..59]") ; Serial.println ("d ## - Date fixée [gamme 1..31]") ; Serial.println ("m ## - set mois [gamme 1.. 12]") ; Serial.println ("y ## - set année [gamme 0..99]") ; Serial.println (« w ## - valeur arbitraire jour de semaine [1.. 7 gamme] ") ; Serial.println (« t - basculer en mode 24 heures ») ; Serial.println ("un - set p AM - PM set") ; Serial.println() ; Serial.println (« horloge de z - horloge Z - stop ») ; Serial.println ("q - SQW/OUT = 1Hz Q - arrêter SQW/OUT") ; Serial.println() ; Serial.println ("> ##, ###-Ecrire dans le registre ## la valeur ###") ; Serial.println ("< ##-lire la valeur de Registre ##") ; //switch {sur commande} //read en caractères numériques jusqu'à ce que quelque chose d’autre //or aucune donnée supplémentaire n’est disponible sur série. int SerialReadPosInt() {int j’ai = 0; boolean fait = false ; while(Serial.available() & &! fait) {char c = Serial.read() ; if (c > = '0' & & c < = '9') {j’ai = j’ai * 10 + (c-'0');} else {= true;}} return i;}