Étape 3: Le chronométreur
Donc, je me suis déplacé à la pièce d’horloge en temps réel du puzzle. À ce stade, qu'il convient de discuter de pourquoi il y a un CCF dans le circuit. Une approche pour résoudre mon problème serait d’envoyer simplement un compteur brut de l’Arduino et ensuite faire tout le levage lourd à la fin de réception. Cependant, après réflexion, j’ai aimé l’idée que je pourrais utiliser la batterie soutenu RAM sur le DS1307 comme un magasin pour mon compteur et que mon « paquets » de données serait en mesure de diffuser le temps que le comte était exact. Ceci peut sembler comme une décision étrange, mais je pense qu’à long terme sa va bien me servir.
Le DS1307 est un périphérique i2c et il y a un certain nombre d’articles sur le périphérique sur l’internet (ainsi que pour interfacer un Arduino), donc je vais pas se concentrer sur les tenants et aboutissants de l’appareil. Au lieu de cela, je vais illustrer un piège sur que je suis tombé et la conception éventuelle, pour que je suis allé.
Mon idée initiale était d’avoir la RAM DS1307 le magasin pour le compteur et que pendant l’interruption de traitement de routine je voudrais lire et ensuite modifier le compteur. Cependant, j’ai découvert que tandis que la bibliothèque de fils dans l’Arduino est vraiment utile, il ne fonctionnera dans une routine d’interruption (ce qui est assez juste).
Mon deuxième approche, qui a travaillé, a été de maintenir un compteur dans la RAM de l’Arduino et puis, après une temporisation configurée dans la boucle principale, écrire la valeur dans la RAM DS1307.
Le schéma montre les connexions pour le DS1307 et comment je l’ai branché à l’Arduino (Notez que le jury mini Futurlec que j’ai déjà utilisé a les résistances de pull-up nécessaire et donc ils ne sont pas comme sur le schéma).
Alors maintenant, j’ai eu le deuxième bloc de construction en place. J’ai eu un moyen de saisir une date et heure et une valeur de compteur mis à jour par une routine d’interruption.