bonjour a tous
je suis nouveau dans le monde de l'arduino j'essai temps bien que mal de réalisé mon projet mais je bloque
mon projet est un boitier qui contiens un arduino nano et quatre relais , ce boitier consiste a faire déclencher mon apn reflex via un câble , déplacer un chariot sur un rail disposant d'un moteur dc 5 volts , et a déclencher un téléphone portable via un module bluetooth '' perche a selfi "
sur la première version javais réalisé un code vraiment tout simple
après avoir déclarer les sorties javais ça
digitalWrite ( rail , HIGH );
delay ( 200 ) ;
digitalWrite ( rail , LOW );
delay ( 1000 );
digitalWrite ( autofocus , HIGH );
delay( 1500 );
digitalWrite ( declencheur , HIGH );
delay ( 100 ) ;
digitalWrite ( autofocus , LOW);
digitalWrite ( declencheur , LOW );
delay ( 2000 );
aujourd'hui je voudrai pouvoir sélectionné chaque mode avec un bouton poussoir , en gros j'appuie
1 fois , j'ai le reflex qui fait sa boucle
2 fois le reflex plus le rail
3 fois le module bluetooth déclenche le smartphone
4 fois le module bluetooth plus le rail
j'ai trouvai un partie de code très intéressent sur le forum avec la fonction " case " mais le souci est qu'une fois dans la case je ne peux pas avoir de boucle , le programme s'exécute une seul fois puis plus rien
///////////////////////////////////////////////
// declaration //
///////////////////////////////////////////////
int enfonce = HIGH ;
int relache = LOW ;
int etatBoutonPrecedant = relache;
int compteur = 0;
int boutonPin = 13 ;
int rail = 2;
int bluetooth = 3;
int autofocus = 4;
int declencheur = 5;
unsigned long tempsAuRelachement = 0;
//////////////////////////////////////////////
// initialisation //
//////////////////////////////////////////////
void setup() {
pinMode(rail, OUTPUT);
pinMode(bluetooth, OUTPUT);
pinMode(autofocus, OUTPUT);
pinMode(declencheur,OUTPUT);
pinMode(boutonPin, INPUT);
Serial.begin(19200);
}
/////////////////////////////////////////////
// boucle infinie //
/////////////////////////////////////////////
void loop() {
// Lecture du bouton et du temps
int etatBouton = digitalRead(boutonPin);
unsigned long tempsActuel = millis();
if ( compteur > 4){
compteur = 0 ;
}
// Si le bouton vient d'être enfoncé :
if ( ( etatBouton == enfonce ) && ( etatBoutonPrecedant == relache ) ) {
// On incrémente le compteur
compteur++;
etatBoutonPrecedant = enfonce; }
// Si le bouton vient d'être relache :
if ( ( etatBouton == relache ) && ( etatBoutonPrecedant == enfonce ) ) {
// On note quand le bouton a été relache
tempsAuRelachement = tempsActuel;
etatBoutonPrecedant = relache; }
// Si cela fait plus de 2000 ms que le bouton est relache :
if ( ( etatBouton == relache ) && ( ( tempsActuel - tempsAuRelachement ) > 2000 ) && ( compteur > 0 ) ) {
// On gère les actions
Serial.println(compteur);
switch (compteur) {
case 1:
digitalWrite(rail ,HIGH);
digitalWrite(bluetooth ,LOW);
digitalWrite(autofocus, LOW);
digitalWrite(declencheur,LOW);
break;
case 2:
digitalWrite(rail, HIGH);
digitalWrite(bluetooth, LOW);
digitalWrite(autofocus, HIGH);
digitalWrite(declencheur,HIGH);
break;
case 3:
digitalWrite(rail, LOW);
digitalWrite(bluetooth, LOW);
digitalWrite(autofocus, HIGH);
digitalWrite(declencheur,HIGH);
break;
case 4:
digitalWrite(rail, LOW);
digitalWrite(bluetooth, LOW);
digitalWrite(autofocus, LOW);
digitalWrite(declencheur, LOW);
}
// On remet le compteur à 0
compteur = 0;
}
// Sauvegarde de l'état précédant avant de recommencer loop
etatBoutonPrecedant = etatBouton;
Serial.println(compteur) ;
}
que faire pour avoir une boucle dans chaque case ?
merci d'avance pour votre aide ![]()
a bientôt