Je voudrais savoir comment remplacer la fonction DELAY dans une interruption comme celle ci ne fonctionne plus lors d'une interruption. Je voudrais, lorsque l'interruption est activée, compter un certain temps avant de changer l'état d'un autre PIN.
Commencer par coder une fonction associée à l'interruption, qui ne fait que modifier la valeur de quelques variables globales.
Puis coder une seconde fonction appelée de manière régulière, à une fréquence suffisamment élevée par rapport au besoin, qui vérifie l'état des variables et agit en conséquence.
Par exemple :
volatile byte etat = 0;
volatile unsigned long chrono;
void routine_interruption() // à attacher
{
if (etat == 0)
{
etat = 1;
chrono = millis();
}
}
void routine_traitement() // à appeler souvent, par exemple depuis loop()
{
const unsigned long delai = 10000; // 10 secondes
if (etat == 1 && (millis() - chrono > delai))
{
etat = 0;
changer_etat_autre_pin();
}
}
Cependant je voudrais avoir des delay de l'ordre de la milliseconde et être très précis.
Je pense qu'il faut augmenter la fréquence d'échantillonage des ports numériques de l'arduino ou augmenter la fréquence de l'arduino tout court?
Comment puis-je faire cela sachant que je n'ai pas touché aux fréquences configurées initialement.