Merci, cela m'a beaucoup aidée !
J'arrive à faire tourner mon moteur, pas encore exactement comme je voudrais, mais j'y suis presque ![]()
Si vous avez encore la patience de m'aider un peu...
voilà mon programme:
#include <Servo.h>
Servo Servomoteur;
//Constantes
const int capteur=0; //Constante du capteur et numéro de sa broche analogique
//Variables
int valeur1 = 0 ;
int valeur2 = 0 ;
int valeur3 = 0 ;
int valeur4 = 0 ;
int valeurmax = 0 ;
int capteurPIN=0;
//Fonction Setup
void setup (){
pinMode(capteurPIN, INPUT); //Attacher la pin __ à l'objet Servomoteur
Servomoteur.attach(11); //Attacher le Servomoteur à la pin11, angle à 90°
Servomoteur.write(0); //Remettre l'angle à 0°
Serial.begin(9600);
}
//Fonction loop
void loop () {
Servomoteur.write(0);
valeur1=analogRead(capteur); //Relever la valeur1 du capteur
Serial.println(valeur1);
delay(2000);
if(valeur1>800 || valeur1<200) //Si la valeur1 est supérieure à 800 ou inférieure à 200
{Servomoteur.write(0);
delay(5000);} //Le moteur reste à l'arret
else
{valeurmax=valeur1; //La valeurmax prend la valeur1
Servomoteur.write(25); //Le moteur tourne jusqu'à 25°
delay(1000);
valeur2=analogRead(capteur); //Relever la valeur2 du capteur
Serial.println(valeur2);
delay(2000);
if(valeur2>800)
{Servomoteur.write(25);
delay(5000);
Servomoteur.write(0);} //Le moteur reste à l'arret
else
if(valeur2>valeurmax)
{valeurmax=valeur2; //La valeurmax prend la valeur2
Servomoteur.write(45);} //Le moteur tourne jusqu'à 45°
else
Servomoteur.write(45); //La valeur max est toujours valeur1 le moteur tourne jusqu'à 45°
delay(2000);
valeur3=analogRead(capteur); //Relever la valeur3
Serial.println(valeur3);
delay(2000);
if(valeur3>800)
{Servomoteur.write(45);
delay(5000);} //Le moteur reste à l'arret
else
if(valeur3>valeurmax)
{valeurmax=valeur3;
Servomoteur.write(75);}
else
Servomoteur.write(75);//La valeurmax reste valeur1 ou valeur2, le moteur tourne jusqu'à 75°
valeur4=analogRead(capteur); //Relever la valeur4
Serial.println(valeur4);
delay(2000);
if(valeur4>800)
{Servomoteur.write(75);
delay(5000);} //Le moteur reste à l'arret
else if(valeur4>valeurmax)
{Servomoteur.write(75);
Serial.println(valeurmax);}
//La valeur4 esr la plus élevée, le moteur reste donc en place
else if(valeurmax==valeur3)
{Servomoteur.write(45);} //La valeur3 est la plus élevée, le moteur tourne jusqu'à la postion v3
else if(valeurmax==valeur2)
{Servomoteur.write(25);} //La valeur2 est la plus élevée, le moteur tourne jusqu'à la postion v2
else
{Servomoteur.write(0);} //La valeur1 est la plus élevée, le moteur retourne à sa position de départ
delay(5000);} //Attendre une heure
}
Le seul problème que j'ai, c'est au début (entre autre) ; quand la valeur2 est supérieure à 800, elle retourne bien à 0, mais ensuite elle enchaine directement sur l'angle 45°, alors que je souhaiterai que le programme reprenne du début...
Pareil pour la valeur3>800...
Si vous avez une solution...
Merci !