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
| // Déclaration des variables et des constantes
int PhotoR = A0;// entrée analogique de la photorésistance
int FinCHaut = 5;// entrée du fin de course HAUT. Une broche sur la masse l'autre sur l'arduino
int FinCBas = 6;// entrée du fin de course BAS. Une broche sur la masse l'autre sur l'arduino
int D2 = 2;//monté
int D3 = 3;//descente
//variable pour stocker la valeur lue après conversion
int PhotoRLue;
void setup()
{
Serial.begin(9600); // démarrage la liaison série entre entrée analogique et ordi
pinMode(FinCHaut, INPUT_PULLUP); //Déclaration des contacts fin de course en entrée avec utilisation de la fonction PULLUP interne
pinMode(FinCBas, INPUT_PULLUP); //Les Pull Up sont des résistances internes à l'arduino. //Donc de base lorsque le boutton n'est pas appuyé on lit un état haut (5V = niveau logique 1)
}
void loop()
{
PhotoRLue = analogRead(PhotoR); //Valeur comprise entre 0 et 1024
Serial.print("PhotoRLue = "); //on affiche la valeur lue sur la liaison série
Serial.print(PhotoRLue);
Serial.println(); //on saute une ligne entre deux affichages
if (PhotoRLue <100 & digitalRead(FinCBas) == 1) //Condition : Detection de la nuit et la porte est ouverte
//Alors on ferme la porte
{
while(digitalRead(FinCBas) == 1){ //Tant que la porte n'est pas fermé, le moteur tourne
//Fermeture
digitalWrite(D2, LOW);
digitalWrite(D3, HIGH);
}
digitalWrite(D3, LOW); //On arrete le moteur car le contact fin de course est activé
}
if (PhotoRLue > 150 && digitalRead(FinCHaut) == 0) //Condition : Detection du jour et la porte est fermée FinCHaut = 1 signifie le boutton fin de course haut n'est pas appuyé
{
while(digitalRead(FinCHaut) == 0){ //Tant que la porte n'est pas ouverte, le moteur tourne
//Fermeture
digitalWrite(D2, HIGH);
digitalWrite(D3, LOW);
}
digitalWrite(D2, LOW);
}
} |
Partager