1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72
| // La broche numérique 4 est reliée au Bouton poussoir.
int Boutonp = 4 ;
// La broche numérique 7 est reliée a fin de course ouverte.
int Fco = 7;
// La broche numérique 6 est reliée a fin de course fermée.
int Fcf = 6;
// Déclaration variable EtatBouton qui va servir à stocker une valeur au format bool soit LOW ou HIGH.
boolean EtatBoutonp;
boolean EtatFco;
boolean EtatFcf;
void setup() {
// Ouvre le port série à 9600 bps.
Serial.begin(9600);
// Faire de la broche du Bouton une entrée avec activation de la résistance de rappel interne de l'ARDUINO .
pinMode(Boutonp, INPUT_PULLUP);
pinMode(Fco, INPUT_PULLUP);
pinMode(Fcf, INPUT_PULLUP);
pinMode(12, OUTPUT); // Broche Arduino réservée pour le sens de rotation du moteur A
pinMode(9, OUTPUT); // Broche Arduino réservée pour le freinage du moteur A
}
void loop() {
// Lit les broches d'entrée
EtatBoutonp = digitalRead(Boutonp);
EtatFcf = digitalRead(Fcf);
EtatFco = digitalRead(Fco);
// Si EtatBoutonp == low
if (EtatBoutonp == LOW && EtatFcf == LOW)
{
Serial.println("ouvrir");
Ouvrir_porte();
}
// Sinon
else if (EtatBoutonp == LOW && EtatFco == LOW)
{
Serial.println("fermer");
Fermer_porte();
}
//sinon si porte à moitié ouverte
else if (EtatBoutonp == LOW && EtatFco == HIGH && EtatFcf == HIGH)
{ Serial.println("ouvrir depuis milieu");
Ouvrir_porte();
}
}
void Ouvrir_porte(){
EtatFco = digitalRead(Fco);
while ( EtatFco == HIGH){
digitalWrite(12, LOW); // Le moteur A tourne dans le sens normal
digitalWrite(9, LOW); // Désactivation du frein moteur A
analogWrite(3,255 ); // Vitesse maximale pour le moteur A
EtatFco = digitalRead(Fco);
}
Serial.println("fin ouverture");
digitalWrite(12, LOW); // Le moteur A tourne dans le sens inverse
digitalWrite(9, LOW); // Désactivation du frein moteur A
analogWrite(3,0 ); // Vitesse maximale pour le moteur A
}
void Fermer_porte(){
EtatFcf = digitalRead(Fcf);
while (EtatFcf == HIGH){
digitalWrite(12, HIGH); // Le moteur A tourne dans le sens inverse
digitalWrite(9, LOW); // Désactivation du frein moteur A
analogWrite(3,255 ); // Vitesse maximale pour le moteur A
EtatFcf = digitalRead(Fcf);
}
Serial.println("fin fermeture");
digitalWrite(12, HIGH); // Le moteur A tourne dans le sens inverse
digitalWrite(9, LOW); // Désactivation du frein moteur A
analogWrite(3,0 ); // Vitesse maximale pour le moteur A
} |
Partager