%%%%%%%%%%%%% Note ajoutée le 27/10/21 %%%%%%%%%%%%%%
Le code ci-dessous fonctionne mais ne fait pas exactement ce qui est annoncé car il comporte un bug. Ce dernier est corrigé dans le code publié dans le billet du 26/10/21.
Le code ci-dessous est censé effectuer 10 pauses (nombre modifiable dans le code lui-même)… mais cette instruction est située dans la void loop. Cette dernière selon la philosophie Arduino est effectuée en boucle. Lorsque les 10 pauses sont faites… la boucle recommence pour 10 nouvelles pauses et ainsi de suite jusqu’à la mise hors tension de l’Arduino.
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
Le code Arduino de l’intervallomètre est
très simple. Le choix est fait de limiter l’interface utilisateur au minimum.
Le paramétrage du temps de pause, de l’intervalle entre les prises de vue et du
nombre de prise de vue est effectué en modifiant le code avec l’ordinateur
avant de le téléverser dans la carte Arduino. La prise des clichés est initialisée par la mise sous tension de la carte Arduino.
Pour des raisons de gestion de l’énergie et rationalisation de l’électronique, on pourrait songer à n’utiliser qu’une seule carte Arduino à la fois pour le pilotage du télescope et pour l’intervallomètre. Ce n’est pas mon choix. Mais c’est théoriquement possible puisque le code de pilotage laisse libre des broches de l’Arduino. Cependant, il ne faudrait alors pas utiliser la fonction « delay() » qui stoppe le déroulement du code Arduino le temps du délai et interromprait alors le suivi stellaire, mais plutôt « millis() » comme dans le code de la planchette équatoriale avec correction de la dérive. Le référentiel Arduino évoque d’ailleurs cet inconvénient de pause dans le déroulement du code avec « delay() » et propose une solution alternative.
/*
Programme d'intervallomètre pour appareil photo
Voir le blog Astronomie par les trois bouts
https://astronomiebbb.blogspot.com
*/
# define Declanche 3 // broche du déclencheur
void setup() // setup est exécuté une seule fois à la mise sous tension
{
pinMode(Declanche, OUTPUT); // la broche Declanche (3) est initialisée en sortie
delay(5000); // Délai de 5s entre la mise en tension et le début des déclenchements
}
void loop() // loop est exécuté indéfiniment en boucle
{
for (int i=0; i<10;i++) // Pour 10 pauses
{
digitalWrite(Declanche, HIGH); // Active le déclenchement
delay(100); // Délai 100 ms afin que l'impulsion de déclenchement soit suffisemment longue
// Pour des pauses en mode B, indiquer la durée de la pause en ms (par ex delay(120000) pour 2 min de pause
digitalWrite(Declanche, LOW); // Fin de l'impulsion de déclenchement
delay(10000); // Délai de 10 s (ou 10 000 ms) entre deux pauses
}
}
Aucun commentaire:
Enregistrer un commentaire