[RESOLU] Probleme de Switch/Case
je suis à la fois content de moi et à la fois très frustré.
dans un de highspeed photography, j'ai réussi à faire un montage qui tient la route et un code qui fait ce que je veux.
sauf qu'il ne le fait pas quand je veux.
normalement, il doit attendre un premier bruit fort pour déclencher l'appareil photo (qui est en mode bulb)
le son est géré par en sensor qui me renvoie un signal digital si je dépasse un seuil réglé par un potentiomètre intégré au sensor. pas de threshold dans le code donc puis géré dans le sensor directement.
au boum suivant, il doit déclencher le flash.
puis après une petite pause, il doit couper l'appareil photo.
seulement, avant qu'il y ait du bruit, il me déclenche le flash. ensuite l'appareil photo, ensuite il coupe l'appareil photo. mais il n'attend aucun bruit pour faire les choses, dans le mauvais ordre qui plus est (mais je n'en suis pas sur à 100% il les fait peut-être presque en même temps et le flash est plus rapide que l'appareil).
voici mon code
 							dans un de highspeed photography, j'ai réussi à faire un montage qui tient la route et un code qui fait ce que je veux.
sauf qu'il ne le fait pas quand je veux.
normalement, il doit attendre un premier bruit fort pour déclencher l'appareil photo (qui est en mode bulb)
le son est géré par en sensor qui me renvoie un signal digital si je dépasse un seuil réglé par un potentiomètre intégré au sensor. pas de threshold dans le code donc puis géré dans le sensor directement.
au boum suivant, il doit déclencher le flash.
puis après une petite pause, il doit couper l'appareil photo.
seulement, avant qu'il y ait du bruit, il me déclenche le flash. ensuite l'appareil photo, ensuite il coupe l'appareil photo. mais il n'attend aucun bruit pour faire les choses, dans le mauvais ordre qui plus est (mais je n'en suis pas sur à 100% il les fait peut-être presque en même temps et le flash est plus rapide que l'appareil).
voici mon code
code: [select]
int flashpin = 13;  // pin qui declenche le flash
int soundpin = 7;   // pin qui capte le signal du son
int boutonpin = 7;  // pin qui lit le bouton. idem que son en attendant achat bouton
int dslrpin = 5;    // pin qui declenche la cam
int lightpin = 3;   // pin qui capte la variation lumineuse
int relaypin = 2;   // pin qui coupe la lumiere dans la piece
int bruit = 0;      // variable de lecture du son
int bouton = 0;     // variable de lecture du bouton start
int etape = 1;      // variable d'etat
void setup()
{
  pinmode(soundpin, input);       // capteur du son est une entree
  pinmode(lightpin, input);       // capteur de lumiere est une entree
  pinmode(boutonpin, input);      // bouton de mise en route (soundtrigger en attendant achat)
  pinmode(dslrpin, output);       // declenchement de la cam est une sortie
  pinmode(flashpin, output);      // declenchement du flash est une sortie
  pinmode(relaypin, output);      // relais 220v pour couper ou allumer la lampe dans la piece
}
void loop()
{
	switch(etape) {
		case 1: { 
			// on attend le bouton de mise en route qui existe pas encore donc sound la place
			bruit = digitalread(soundpin);   // lecture du son
			if (bruit = high)
			{
				// digitalwrite(relaypin, low); // on coupe la lumiere via le relais
				delay(50); // on attend 50 millisecondes pourrait etre remplace par lecture lightpin
				digitalwrite(dslrpin, high); // on ouvre obturateur du dslr
				etape++; //increment pour etape suivante
			}
			break;
		}
		case 2: { 
			// on ecoute le son de declenchement
			bruit = digitalread(soundpin);   // lecture du son
			if (bruit = high)
			{
				digitalwrite(flashpin, high); // declenchement du flash
				delay(20);
				digitalwrite(flashpin, low); // arret envoi signal au flash
				etape++; //increment pour etape suivante
			}
			break;
		}
		case 3: { 
			// on revient dans le monde normal
			delay(50);   // petite pause
			digitalwrite(dslrpin, low); // fermeture obturateur
			delay(50);  // petite pause
			// digitalwrite(relaypin, high); // on allume la lumiere
			etape++; //increment pour etape suivante
			break;
		}
		default: {
		break; // on ne fait rien
		}
  }
}
il n'y aucun délai en fin de boucle, quand un bruit est détecté, il peut faire toutes les étapes et le bruit ne sera toujours pas fini
pour ton problème de déclenchement sans qu'aucun bruit n'ai été fait, tu es sur d'avoir bien réglé le potentiomètre de ton sensor ?
 							pour ton problème de déclenchement sans qu'aucun bruit n'ai été fait, tu es sur d'avoir bien réglé le potentiomètre de ton sensor ?
            						 					Arduino Forum  						 						 							 >   					International  						 						 							 >   					Français  (Moderators: jfs, Snootlab)  						 						 							 >   					[RESOLU] Probleme de Switch/Case  						 					
arduino
 
  
Comments
Post a Comment