Je viens solliciter votre aide dans le cadre d'un projet de fin d'études.
Je suis débutant en programmation Arduino et en électronique.
J'ai un Arduino Uno et un circuit RTC basé sur le DS1302.
J'ai déjà réussi à suivre ce tuto : Arduino Playground - DS1302
La mise à l'heure ne m'a pas posé de problèmes, mais :
J'aimerais maintenant pouvoir allumer une led quand les secondes sont à 30 par exemple.
Après avoir étudié un peu le code en lui même, je crois comprendre qu'il utilise des registres?!
Pouvez-vous m'indiquer comment récupérer la valeur des secondes et m'expliquer cette histoire de registres s'il vous plaît?
J'ai essayé en bidouillant avec des valeurs présentes dans la loop sans succès, je ne sais pas trop quoi manipuler.
Il existe une librairie qui facilite l'utilisation du DS1302, comme ça tu récupère les secondes, puis avec un petit test qui allume la LED quand la variable secondes = 30.
Par contre si cela revient toute les 30 s , sans tenir compte de l'heure ou des min, le plus simple est de passer par l'utilisation de millis().
Même s'il existe des bibliothèques très utiles la lecture de leur code ne sera réellement utile que si tu lis aussi la datasheet du DS1302.
Je ne préjuge pas de la qualité des bibliothèques existantes, je ne les connais pas, mais ce ne serait pas la première fois qu'une bibliothèque sous utilise les capacités d'un composant tout simplement parce que l'auteur de la bibliothèque n'a eu besoin de certaines fonctions qu'il a jugé inutiles pour ses besoins.
Une bibliothèque c'est souvent au départ une réalisation pour des besoins personnels.
L'auteur est bien serviable de la rendre publique.
Chris2206:
Ah oui en effet.
En fait, mon projet et de faire tourner un moteur jusqu'à ce qu'à ce que la lecture d'un capteur soit à 150 par exemple.
Je voudrais lancer cette opération à 9h30 et à 18:30.
Donc le delay doit forcément être de 1000ms?
Car l'opération dure forcément plus dans mon cas.
déjà utiliser la fonction delay() , c'est bloquant
ensuite il faut lire au moins une fois par seconde la RTC pour etre sur de ne pas "sauter" une seconde
donc la routine de lecture doit se faire imperativement à une frequence plus elevée .
J'ai réussi à utiliser les éléments du programme pour bidouiller des actions à des heures précises.
Par contre, je n'arrive pas à utiliser la fonction millis.
Par contre, j'ai des problèmes avec la fonction millis.
L'heure du RTC doit tourner avec un delay ou millis?
Car dans le programme cité plus haut, il y a un delay de 1s dans la loop qui sert à afficher l'heure dans la voie série.
Est-ce qu'il faut le virer pour pouvoir allumer une led pendant 10 secondes quand il est 12h00min par exemple?
Dans quelle mesure je dois utiliser millis? Pour remplacer le delay de la loop ou pour temporiser le clignotement de la led?
Pouvez-vous m'aider avec un croquis de programme s'il vous plaît?