// Chatiere version 9 tc
int verin1A = 7; // pin 1A (Input 1A) carte moteur (L293D MR001)
int verin1B = 8; // pin 1B (Input 1B) carte moteur (L293D MR001)
int verinE1 = 9; // pin E1 (Enable E1) carte moteur (L293D MR001)
int led1 = 10; // Sortie 10 Led JAUNE interieur indique le chat est dehors
int led2 = 11; // sortie 11 Led VERTE interieur indique que la porte est ouverte
int led3 = 12; // sortie 12 Led ROUGE interieur indique une detection exterieur
int led4 = 13; // sortie 13 Led ROUGE exterieur indique que le echat est a l interieur
int arduino2e14 = 14;
int arduino2e15 = 15;
int arduino2e16 = 16;
int arduino2s17 = 17;
int arduino2s18 = 18;
int arduino2s19 = 19;
int cellule1 =0; // Variable pour memoriser que le chat est passé devant la cellule interieur1
int cellule2 =0; // Variable pour memoriser que le chat est passé devant la cellule interieur2
int cellules =0;
int dehors =0; // Variable pour memoriser que le chat est sorti et la porte est refermé
int presence1 =0; // Variable detecteur de presence
int presence2 =0; // Variable detecteur de presence
int celluleporte=0;
int telecommandeouvre=0;
int telecommandeferme=0;
const int celluleI1 = 0; //cellule photoelectrique interieur1 de sortie chat
const int celluleI2 = 2; //cellule photoelectrique interieur2 de sortie chat
const int celluleE3 = 3; //cellule photoelectrique exterieur
const int telecommande = 4; //entrée Télécommande
const int detectpresence1 = 5; //detecteur de presence 1 infra rouge placé a l exterieur
const int detectpresence2 = 6; //detecteur de presence 2 infra rouge placé a l exterieur
void setup() {
// definir les broches en sortie
pinMode(led1, OUTPUT); // Sortie 10 Led JAUNE interieur
pinMode(led2, OUTPUT); // Sortie 11 Led VERTE interieur
pinMode(led3, OUTPUT); // Sortie 12 Led ROUGE interieur
pinMode(led4, OUTPUT); // Sortie 13 Led ROUGE exterieur
pinMode(verin1A, OUTPUT); // sortie 7 carte verin led rouge de la carte
pinMode(verin1B, OUTPUT); // sortie 8 carte verin led verte de la carte
pinMode(verinE1, OUTPUT); // sortie 9 carte verin
pinMode(arduino2s17, OUTPUT); // Arduino 2 pour sortie info utilisé par arduino 2
pinMode(arduino2s18, OUTPUT); // Arduino 2 pour sortie info utilisé par arduino 2
pinMode(arduino2s19, OUTPUT); // Arduino 2 pour sortie info utilisé par arduino 2
// definir les broches en entrées
pinMode(celluleI1, INPUT); // entrée 0 cellule 1 photoelectrique interieur de sortie
pinMode(celluleI2, INPUT); // entrée 1 cellule 2 photoelectrique interieur de sortie
pinMode(celluleE3, INPUT); // entrée 2 cellule 3 photoelectrique placé a l exterieur
pinMode(telecommande, INPUT); // entrée 3 Télécommande
pinMode(detectpresence1, INPUT); // entré 4 detecteur de presence 1 infra rouge placé a l exterieur
pinMode(detectpresence2, INPUT); // entré 5 detecteur de presence 2 infra rouge placé a l exterieur
pinMode(arduino2e14, INPUT); // Arduino 2 pour entrée info venant de arduino 2
pinMode(arduino2e15, INPUT); // Arduino 2 pour entrée info venant de arduino 2
pinMode(arduino2e16, INPUT); // Arduino 2 pour entrée info venant de arduino 2
digitalWrite(celluleI1,HIGH); //Broche 0 Mettre la broche 0 a 1 pour une detection a 0
digitalWrite(celluleI2,HIGH); //Broche 1 Mettre la broche 1 a 1 pour une detection a 0
digitalWrite(celluleE3,HIGH); //Broche 2 Mettre la broche 2 a 1 pour une detection a 0
digitalWrite(telecommande,HIGH); //Broche 3 Mettre la broche 3 a 1 pour une detection a 0
digitalWrite(verinE1,HIGH); //Broche 9 Enable a 1 comme ca le verin fonctionne
}
void loop() {
//////////////////////////////////Detecte que le chat veut sortir ////////////////////////////////////
if (digitalRead(celluleI1)==LOW && digitalRead(led1)==LOW && dehors == 0){ //entrée 0 detection que le chat est passé devant la cellule 1 photo electrique
cellule1=1; // Met la variable a 1 pour memorisé le passage du chat devant la premiere cellule
ouverture (); // ouvre la porte
}
//Detecte et memorise que le chat passe devant la deuxieme cellule
if (digitalRead(celluleI2)==LOW && dehors == 0) { //entrée 2 detection que le chat est passé devant la deuxieme cellule
cellule2=1; // Met la variable a 1 pour memoriser le passage du chat
}
if (cellule1==1 && cellule2==1 && dehors == 0) { //
cellules=1; // met la variable a 1 pour memoriser le passage devant les 2 cellules
digitalWrite(led1, HIGH); // Allume la led JAUNE pour memoriser la passage du chat
}
if (digitalRead(celluleE3)==LOW && dehors == 0) { //
celluleporte=1; // met la variable a 1 memoriser la porte ouverte
}
// Fermetute de la porte par les detecteurs de presences apres que le chat soit sorti
if ( cellules==1 && celluleporte==1 && dehors == 0) {
if ( digitalRead(detectpresence1)==HIGH || digitalRead(detectpresence2)==HIGH ) {
presence1 =1; // memorise que le chat est dans le champ des detecteurs de presence
digitalWrite(led2, HIGH); // Alume la led VERTE interieur pour montrer la detection de presence
}}
if (cellules== 1 && presence1 ==1 && dehors == 0) { //ferme la porte
fermeture ();
presence1 =0;
dehors = 1;
delay(40000 );
dehors = 1;
celluleporte=0;
digitalWrite(led3, HIGH); // Alume la led rouge
digitalWrite(led2, LOW); // éteint la led VERTE interieur
digitalWrite(led4, LOW); // éteint la led ROUGE exterieur
cellule1 =0;
cellule2 =0;
cellules=0;
presence1 =0;
celluleporte=0;
}
digitalWrite(led2, LOW); // etteint la led VERTE interieur qui indique une presence
// ******************** le chat est dehors prepare toi pour lui ouvrir **************************************** //
if (dehors == 1 && presence2==0 && dehors == 1 ) {
if (digitalRead(detectpresence1)==HIGH || digitalRead(detectpresence2)==HIGH) {
digitalWrite(led2, HIGH); // Alume la led VERTE interieur pour montrer la detection de presence
ouverture (); // ouvre la porte
presence2=1; //Memorise la detection de presence
} }
if (digitalRead(celluleI2)==LOW && dehors == 1) { //entrée 2 detection que le chat est passé devant la deuxieme cellule
cellule2 =1; // Met la variable a 1 pour memoriser le passage du chat
}
if (digitalRead(celluleI1)==LOW && dehors == 1 && presence2 ==1 && cellule2 ==1) {
fermeture (); // C est sur le chat est rentré il est passé devant les 2 cellules je ferme la porte
delay(15000 ); //
dehors=0;
presence2=0;
cellule1=0;
cellule2=0;
cellules=0;
celluleporte=0;
digitalWrite(led1, LOW); // Eteint la led JAUNE
digitalWrite(led2, LOW); // Eteint la led Verte
digitalWrite(led3, LOW); // Eteint la led ROUGE
digitalWrite(led4, HIGH); // Allume la led ROUGE exterieur
}
///////////////////////////////// TELECOMMANDE force l ouverture ou la fermeture /////
if (digitalRead(telecommande)==LOW && telecommandeouvre==0) {
telecommandeouvre=1;
ouverture (); // ouvre la porte
dehors=0;
presence1 =0;
presence2=0;
cellule1=0;
cellule2=0;
cellules=0;
celluleporte=0;
digitalWrite(led1, LOW); // Eteint la led JAUNE
digitalWrite(led2, LOW); // Eteint la led Verte
digitalWrite(led3, LOW); // Eteint la led ROUGE
digitalWrite(led4, LOW); // Allume la led ROUGE exterieur
delay (5000);
}
if (digitalRead(telecommande)==LOW && telecommandeouvre==1) {
telecommandeouvre=0;
fermeture (); // Ferme la porte
dehors=0;
presence2=0;
presence1 =0;
cellule1=0;
cellule2=0;
cellules=0;
digitalWrite(led1, LOW); // Eteint la led JAUNE
digitalWrite(led2, LOW); // Eteint la led Verte
digitalWrite(led3, LOW); // Eteint la led ROUGE
digitalWrite(led4, LOW); // Allume la led ROUGE exterieur
delay (5000);
}
}
//////////////////////////////les fonctions ///////////////////////////////////
void ouverture (){
digitalWrite(verin1A, LOW); // sortie 7 arduino = led rouge carte moteur
digitalWrite(verin1B, HIGH); // sortie 8 arduino = led verte carte moteur
}
void fermeture (){
digitalWrite(verin1A, HIGH); // sortie 7 arduino = led rouge carte moteur
digitalWrite(verin1B, LOW); // sortie 8 arduino = led verte carte moteur
}