
Tu vas pouvoir me donner des cours.

Tu as raison il ne faut pas s'abrutir....Donc, pour le moment, repos pour les neurones
Code : Tout sélectionner
/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
* * * * * Commande aiguillage passerelle * * * * *
* * * * * Commande les aiguillages RP 09 et RP 10 * * * * *
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
* Programme opérationnel
* Deux servo
* Une entrée numérique commande les servo deux par deux
* entree : changement d'état par impulsion
1 2
------O------------O------ BP 1 2 3 4 5
/
3 O 0 1 1 0 1 1
/ 1 0 1 1 1 0
-----O------------O------
4 5
Led 2 et 4 permanent
Led 1 et 5 communes Sortie D8 Entrée analogique : BP A2
Led 3 Sortie D9
*/
#include <Servo.h>
const byte pinServo1 = 2; // Servo commandant l'aiguillage RP 09
const byte pinServo2 = 3; // Servo commandant l'aiguillage RP 10
const byte pinEntree = 5;
const byte Led1et5 = 6;
const byte Led3 = 7;
boolean Poussoir = LOW ;
//******************* Configuration des mouvements servo selon plan de voie **************
boolean Inverse = false ; // false Indique que le sens de rotation des 2 servo est le même
// true si le sens de rotation est inverse .
// Commutation par interrupteur sur D9
const byte pinInter = 9;
//**********************************************************************************************
int MiniMax1[2] = {600,900} ;
int MiniMax2[2] = {600,900} ;
int vitesse[2] = {-1,1} ;
Servo monServo1;
int Avance1;
int angle1;
int angleFinal1;
boolean Sens1;
Servo monServo2;
int Avance2;
int angle2;
int angleFinal2;
boolean Sens2;
boolean Mvt1;
boolean Mvt2;
boolean Mvt;
void setup()
{
pinMode (Led1et5, OUTPUT);
pinMode (Led3, OUTPUT);
pinMode (pinEntree, INPUT);
pinMode (pinInter, INPUT);
monServo1.attach(pinServo1);
monServo1.writeMicroseconds(750);
delay(500);
angle1 = 750;
Sens1 = false;
Mvt1 = true;
Avance1 = vitesse[Sens1]; angleFinal1 = MiniMax1[Sens1];
monServo2.attach(pinServo2);
monServo2.writeMicroseconds(750);
delay(500);
angle2 = 750;
Sens2 = Sens1^Inverse ;
Mvt2 = true;
Avance2 = vitesse[Sens2]; angleFinal2 = MiniMax2[Sens2];
Mvt = Mvt1 || Mvt2 ;
}
void loop()
{
if(Mvt) { }
else { Poussoir = digitalRead(pinEntree);
Inverse = digitalRead(pinInter);
if (Poussoir )
{
Sens1 = !Sens1;
Sens2 = Sens1^Inverse ;
}
monServo1.attach(pinServo1);
Mvt1 = true;
Avance1 = vitesse[Sens1]; angleFinal1 = MiniMax1[Sens1];
monServo2.attach(pinServo2);
Mvt2 = true;
Avance2 = vitesse[Sens2]; angleFinal2 = MiniMax2[Sens2];
}
if (angle1 == angleFinal1)
{
Avance1 = 0;
monServo1.detach();
Mvt1 = false;
}
else {
angle1 = angle1 + Avance1;
monServo1.writeMicroseconds(angle1);
}
if (angle2 == angleFinal2)
{
Avance2 = 0;
monServo2.detach();
Mvt2 = false;
}
else {
angle2 = angle2 + Avance2;
monServo2.writeMicroseconds(angle2);
}
Mvt = Mvt1 || Mvt2 ;
if(Mvt){ digitalWrite (Led1et5, LOW);
digitalWrite (Led3, LOW);
}
else { digitalWrite (Led1et5, !Sens1);
digitalWrite (Led3, Sens1);
}
delay(6);
}