const int IRPin = 2;
const int ledPin = 3;
int IRState =0;
byte compteur = 0;
void setup()
{
pinMode(ledPin, OUTPUT);
pinMode(IRPin, INPUT);
Serial.begin(9600);
}
void loop()
{
while (compteur <3 ) {
IRState = digitalRead(IRPin);
if (IRState == 1 )
{
compteur += 1;
Serial.print(compteur);
digitalWrite(ledPin,HIGH);
delay(1000);
}
else
{
digitalWrite(ledPin,LOW);
}
}
}
Ne fais pas de double post sur le même sujet, les gens n'aiment pas trop ça ici.
Mais il se répète à l'infini comme il est.
Grace au mot magique loop qui veut dire boucle
Non je déconne !
La boucle infinie est obligatoire sinon s'il n'y avait pas de boucle infinie un fois la fin de la mémoire programme atteinte le micro s’arrêterait et pour le relancer il faudrait utiliser le Reset.
Point essentiel à connaître la programmation du microcontrôleur se fait en vrai C/C++.
Cas particulier Arduino
Arduino utilise un principe mis au point par les auteurs de "Processing".
A minima tu n'as à écrire que deux fonctions : une qui ne s'exécute qu'une seule fois et qui sert à faire les configurations , l'autre qui est le programme proprement dit et qui tourne en boucle indéfiniment.
Les auteurs de Processing ont fait le choix d'imposer le nom "setup" pour la fonction qui ne s'exécute qu'une fois et le nom "loop" pour la fonction qui tourne indéfiniment dans une boucle. Il aurait été possible de les appeler différemment.
Toi tu n'écris que les fonctions setup() et loop() et l'IDE complète pour créer le vrai fichier aux normes du C/C++ qui est transmis au compilateur.
#include <Arduino.h>
// zone pour tes autres include
// zone pour des #define
void setup(); //prédéclaration de la fonction setup à destination du compilateur
void loop() ; //idem pour loop
// Zone de déclaration de variables globale
int main()
{
init() ; // fonction ajoutée par Arduino pour configurer le micro, elle est prédéclarée dans Arduino.h
setup() ;
while(1==1) // ce qui est toujours vrai --> la boucle while tourne indéfiniment
{
loop() ;
}
}
Comme tu peux le comprendre à l'entrée dans la boucle while la fonction loop() s'exécute. Quand loop est terminée comme on ne peut pas sortir de la boucle while elle recommence.
En fait elle ne dure pas indéfiniment, elle recommence indéfiniment.
Conseil :
La lecture d'un tuto d'initiation (quelque chose de simple) au C/C++ te serai d'une grande utilité.
Dans ton programme, une fois que tu as atteint 3 comptages, il ne se passe plus rien du tout.
- le 1ere fois que loop() s'exécute, on reste dans la fonction jusqu'à ce que compteur = 3. A ce moment on sort de la boucle while() et on sort de ce 1er loop()
- ensuite, à chaque appel de loop(), la condition (compteur<3) est fausse, donc on ne rentre pas dans le boucle while() et on sort de loop() tout de suite.
C'est terminé, il ne se passe plus rien.