stiee2 | Bonjour a tous, je viens sur ce forum car j'ai besoin d'aide !
Je suis en Terminale, et pour le bac, j'ai un projet a réaliser en groupe, et on a choisi de faire un velux automatisé.
Le principe est plutôt simple; on a un capteur de pluie, un capteur de position, un bouton poussoir et un capteur de température.
Le moteur du velux est actionné par un relais électromagnétique
Le cahier des charges est le suivant :
- Quand il pleut et que le velux est ouvert, il doit se fermer.
- Quand le capteur de température nous donne une température supérieure a 28°c et que le velux est fermé, le velux doit s'ouvrir.
- Quand le capteur de température nous donne une température inférieure a 15°c et que le velux est ouvert, le velux doit se fermer.
- Quand quelqu'un appuie sur le bouton poussoir, le velux doit s'ouvrir si il est fermé ou se fermer si il est ouvert.
Le capteur de température envoie un signal de 0-10V analogique, 15°c correspond a 3.6V et 28°c correspond a 5.1V.
J'ai pris l'initiative de m’occuper de la partie programmation, malgré le fait que je n'y connaisse rien. Les profs supposés nous aider en savent encore moins que moi, j'ai donc vu pas mal de tutoriels et de vidéo, et j'ai décidé d’utiliser une carte arduino. Après pas mal de recherches, j'en suis arrivé au programme suivant :
Code :
- const int bouton = 2;
- const int cpos = 4;
- const int cpluie = 5;
- const int relais = 12;
- const int ctemp = 0;
- // On défini les broches sur lesquelles seront attachées les differents composants
- boolean etatbouton;
- boolean etatcpluie;
- boolean etatcpos;
- int temp;
- // On défini les variables qui interviendront plus tard dans le programme
- void setup()
- {
- pinMode(0, INPUT);
- pinMode(2, INPUT);
- pinMode(3, INPUT);
- pinMode(4, INPUT);
- pinMode(12, OUTPUT);
- }
- // on défini les broches comme entrées ou sorties
- void loop()
- {
- etatbouton = digitalRead(bouton);
- etatcpos = digitalRead(cpos);
- etatcpluie = digitalRead(cpluie);
- temp = analogRead(ctemp);
- // on lit l'état des differents capteurs
- if(etatbouton == HIGH)
- {
- digitalWrite(relais, HIGH);
- }
- else
- {
- digitalWrite(relais, LOW);
- }
- // on teste l'état du BP
- if((etatcpos == HIGH ) && (etatcpluie == HIGH ) )
- {
- digitalWrite(relais, HIGH);
- }
- else
- {
- digitalWrite(relais, LOW);
- }
- //on teste l'état du capteur de pluie
- if(temp >= 5.1)
- {
- digitalWrite(relais, HIGH);
- }
- else if(temp <= 3.8)
-
- {
- digitalWrite(relais, HIGH);
- }
- else
-
- {
- digitalWrite(relais, LOW);
- }
- // On teste l'état du capteur de température
- }
|
J'ai réussi a faire fonctionner la partie bouton poussoir une seule fois, plus moyen depuis ! (j'ai utilisé beaucoup de programmes différents, ce n'était peut être pas celui la qui l'a fait fonctionner)
De plus, je ne suis pas sur de la partie analogique, il me semble que la carte arduino ne peut recevoir qu'une tension de 0 a 5V, faut-il ajouter des résistances pour diminuer la tension ? Toutes les corrections seront les bienvenues, Je vous remercie d'avance ! |