Bonjour. Dans le cadre d'un projet j'aimerai contrôler une trappe a l'aide d'un servo moteur. celui s'actionne lorsqu'il y a une présence (poids) puis une présence magnétique. Sinon il ne s'actionne pas. Le soucis est que mon servo moteur ne prends pas en compte ces capteurs et s'actionne en continue sans tenir compte de mes boucles for. Voila mon programme et merci d'avance pour vos réponses.
int presence = 8; // attribue la valeur entiere 10 à la constante presence
int magnetique = 9; // attribue la valeur entiere 11 à la constante magnetique
int capteurFDC = 10;
int poussoir = 11;
int pos;
int C;
// variable to store the servo position
boolean P, M; // déclare P, M comme des variables booléennes (logiques)
#include <Servo.h>
Servo monservo; // crée l’objet pour contrôler le servomoteur
void setup(){
// variable to store the servo position
// fonction setup qui s'exécute une fois
pinMode(presence, INPUT); // configure le capteur presence comme entrée numérique
pinMode(magnetique, INPUT); // configure le capteur magnetique comme entrée numérique
pinMode(capteurFDC,INPUT);
pinMode(poussoir,OUTPUT);
monservo.attach(12); // utilise la broche 9 pour le contrôle du servomoteur
Serial.begin(9600);
// positionne le servomoteur à 0°
}
void loop(){ // fonction boucle qui s'éxécute de façon répétée après le setup
P = digitalRead(presence);
Serial.println(P);
// attribue la valeur booléenne de l'entrée magnetique à la variable M
if(P = 1){
M = digitalRead(magnetique); // attribue la valeur booléenne de l'entrée magnetique à la variable M
if (M=1){ // Si il y a une presence magnétique
for(pos = 90; pos > 1; pos--) // va de 0 degrees a 90 degrees
{ // in steps of 1 degree
monservo.write(pos); // dire au servo d'aller a la position variable 'pos'
delay(10); // attendre 3s pour atteindre la position finale
delay(3000);
}
for(pos = 0; pos<90; pos++) // va de 90 degrees à 0 degrees
{
monservo.write(pos); // dire au servo d'aller a la position variable 'pos'
delay(10); // attendre 3s pour atteindre la position initiale
}
}
}
else // sinon
{
digitalWrite(poussoir,HIGH);
C = digitalRead(capteurFDC); // mettre la sortie numérique poussoir à l'état haut
if (C = 1) // si le capteur fin de course est préssé
{
digitalWrite(poussoir,LOW); // mettre la sortie numérique poussoir à l'état bas
}
}
}