Bonjour à tous, je suis nouveau sur ce forum alors un peu d’indulgence si je ne suis pas au bon endroit pour poser ma question: Merci.
J’ai donc en projet de piloter un moteur d’essuie glace pour ouvrir et fermer la trappe du poulailler. Pour cela j’ai acheté une carte Arduino uno, une capteur et une cellule photorésistante (les liens sont dessous). Pour l’alim de l’arduino un bloc d’un ordi, j’utilise le 12v via la prise jack de la carte L’idée du programme étant de commander le moteur dans un sens ou dans l’autre en fonction de l’info du capteur et de le commander tant que le capteur concerné n’est pas activé, par exemple je commande l’ouverture sous condition mais jusqu’à ce que le fin de course haut soit actionné. 1) le bloc relais: un état high sur les sorties num 10 et 11 met les relais au repos 2) j’utilise la sortie NUM (D0) du capteur pour simuler le jour ou la nuit(0-5V), directement branchée sur la pin 3 de la carte. L’idée étant tout de même d’utiliser la sortie AO pour commander le système et éventuellement la D0 peut avoir une autre utilité. 3) les fin de course sont en pullup ouverts au repos et fixent les entrées num 7 et 8 à l’état 0 quand la trappe passe dessus. Voilà merci pour votre AIDE.
int a; //capteur1 porte ouverte (capteur haut) int b; //capteur2 porte ferme (capteur bas)
int PinLumiere; //Broche Analogique de mesure d’éclairement int PinSeuilLumiere; //Broche Numérique mesure d’éclairement int eclaire(0); //0 ou 1 (0=éclairé>seuil, 1=ombre<seuil)
void setup() { Serial.begin(9600); // Connection série à 9600 Baud pinMode(11,OUTPUT); // moteur relay ouverture pinMode(10,OUTPUT); // moteur relay fermeture pinMode(8,INPUT_PULLUP); // capteur1 porte ouverte pinMode(7,INPUT_PULLUP); // capteur2 porte fermée
pinMode(PinLumiere, INPUT); //pin A0 en entrée analogique pinMode(PinSeuilLumiere, INPUT); //pin 3 en entrée numérique }
void loop() { eclaire = digitalRead(PinSeuilLumiere);
a = digitalRead(8); //ecrit sur a l’etat du capteur 1 0 == porte ouverte b = digitalRead(7); //ecrit sur b l’etat du capteur 2 0 == porte ferme { //initialisation des relais à l’état zéro digitalWrite(10,HIGH); //obligé de mettre au niveau 1 pour avoir les relais état 0 digitalWrite(11,HIGH); delay(100); } if (eclaire == 0 && b == 0 ) // si jour & si b pas ouvert alors tu actives le moteur pour ouvrir { digitalWrite(11,LOW); } while(a!=0) // commande moteur tant que le fin de course haut n’est pas atteint { digitalWrite(11,LOW); }
if (eclaire == 1 && a == 0 )// si nuit & si a fermé alors tu actives le moteur pour fermer { digitalWrite(10,LOW); } while(b!=0)// commande moteur tant que le fin de course bas n’est pas atteint { digitalWrite(10,LOW); } }