Quelques problèmes avec arduino.

Fermé
stiee2 Messages postés 4 Date d'inscription vendredi 21 mars 2014 Statut Membre Dernière intervention 1 juin 2014 - 10 avril 2014 à 20:59
sambia39 Messages postés 610 Date d'inscription vendredi 31 juillet 2009 Statut Membre Dernière intervention 9 février 2023 - 11 avril 2014 à 11:41
Bonjour ! je suis actuellement en terminale STI2D et une grosse partie du bac consiste en la réalisation d'un projet. Moi et et mon groupe avons choisis de réaliser un velux autonome, et je me suis chargé de la partie programmation. étant totalement novice en la matière, j'ai suivi quelques tutoriel, et j'ai reussi tant bien que mal a aboutir a un programme, que voici :

int etatcpos;
int etatcpluie;
int etatbouton;//on créé une varible indiquant l'état du bouton
const int bouton = 2;//le bouton est a la broche 2
const int relais = 13;//le relais est a la broche 13
const int cpluie = 3;//Le capteur de pluie est a la broche 3
const int cpos = 4;//le capteur de position est sur la broche 4

void setup()
{
pinMode(bouton, INPUT);//le bouton est une entrée
pinMode(relais, OUTPUT);//le relais est une sortie
pinMode(cpluie, INPUT);// le capteur de pluie est une entrée
pinMode(cpos, INPUT);//le capteur de position est une entrée
etatbouton = LOW;//on initialise le bouton comme relaché
etatcpos = LOW;//on initialise le capteur de position comme état fermé
etatcpluie = LOW;// on initialise le capteur de pluie comme sec

}

void loop()

{
etatbouton = digitalRead(bouton);//l'état du bouton se lit sur l'entrée du bouton
etatcpluie = digitalRead(cpluie);
etatcpos = digitalRead(cpos);
if(etatbouton == LOW)//si le bouton est relaché
{
digitalWrite(relais,LOW);//le relais reste éteint
}
else //le cas contraire, le bouton est appuyé
{
digitalWrite(relais,HIGH);//on allume le relais
}

if( (etatcpluie == HIGH)&&(etatcpos == LOW) )//si la fenetre est ouverte et qu'il pleut
{
digitalWrite(relais,HIGH);
}
else
{
digitalWrite(relais,LOW);
}
}



en fait, le relais qui commande le moteur est supposé s'activer dans deux cas :

-quand l'utilisateur appuie sur le bouton (bouton = HIGH)
-quand il pleut et que la fenetre est ouverte (etatcpluie = HIGH, etatcpos = LOW)

seulement voila le relais reste constamment alimenté, et aucuns de ces scénarios ne fonctionnent. je vous remercie d'avance pour vos réponses, il s'agit de quelques chose de très important pour moi

1 réponse

sambia39 Messages postés 610 Date d'inscription vendredi 31 juillet 2009 Statut Membre Dernière intervention 9 février 2023 49
11 avril 2014 à 11:41
Bonjour
je te conseille de revoir ton algorithme, car sachant que tes instructions sont écrites dans une boucle il est préférable de raisonner en disant quand:

-> Le bouton est actionner alors mon relais se met en marche ,
-> Dans le cas contraire elle reste éteinte,
-> Dans la seconde condition s'il n'y a pas de pluie et que ma fenêtre est ouverte ou fermée j'actionne pas mon relais
-> Dans le deuxième cas où il pleut et que ma fenêtre est fermer j'actionne pas mon relais
-> Dans l'autre cas s'il pleut et que ma fenêtre est ouverte j'active le relais
-> Sinon on revient à la conditions préalable c'est à dire le deuxième point après la première.
à bientôt
0