Arduino 3 delay avec bouton glissiere

a marqué ce sujet comme résolu.

Bonjour,

Je viens vers vous afin de solliciter votre aide. Je suis très très débutant en programmation Arduino. J’ai commencé il y a 2 mois. Il y a 2 ans j’avais fait un arrosage automatique sur une base de 555 et 4017 qui commandaient 6 électrovannes, une pompe et un transformateur (25V pour allimenter les EV) par le biais de relais. Chaque sequence durait 30 min, 20 min, et 10 min, que je commandais par un interrupteur à glissière 3 positions. Ce systeme fonctionnait pas trop mal, sauf que parfois ça beuguait (certainement due a des pics de surtentions qui rendaient le système instable). Aujourd’hui j’ai tout démonté et je l’ai refait avec une carte arduino nano. Si je ne gardais qu’une tempo, ça irai. J’ai réussi a créer un programme assez basique qui fonctionne (j’ai du inverser les commandes HIGH avec les commandes Low sur les relais car ceux ci sont inversés car ils démarrent en mode haut. J’espère que vous m’avez compris … lol ). Ce que je voudrais, c’est pouvoir changer mes temps de séquences a l’aide d’un bouton a glissière 3 positions afin de pouvoir sélectionner soit : 30 min, 20 min et 10 min. J’ai trouvé des tutos qui expliquent comment allumer ou éteindre une led avec un bouton glissière 2 positions en positionnant une sortie digitale au gnd. Mais je n’arrive pas à l’adapter à mes besoins. Si quelqu’un pouvait m’aider ça serait très sympa.

P.S. J’ai mis en dessous le sketch que j’ai fait. P.S. J’ai essayé de mettre 3 nano en parallèles dont je gérais leur alimentation avec le bouton glissière 3 positions, mais, ça ne fonctionne pas. Les cartes se mettent en conflit car les sorties d’une des cartes sont envoyées dans les autres cartes ( c’est un peu n’importe quoi, mais j’ai tenté… ne me jugez pas lol qui ne tente rien n’a rien lol). -> programme que j’ai fais pour 30 min <-

+0 -0

Merci otini, je ne savais pas comment faire.



//Branchements des connecteurs relais et leds


int pinRelayTransfo = 0; // Numero de sortie relay Transformateur

int pinRelay_A = 12;    // Numero de sortie relay E-V Zone 1
int pinRelay_B = 11;    // Numero de sortie relay E-V Zone 2
int pinRelay_C = 10;    // Numero de sortie relay E-V Zone 3
int pinRelay_D = 9;     // Numero de sortie relay E-V Zone 4
int pinRelay_E = 8;     // Numero de sortie relay E-V Zone 5
int pinRelay_F = 7;     // Numero de sortie relay E-V Zone 6

int pinRelayPompe = 13; // Numero de sortie relay Pompe

int pinLed_A = 6;    // Numero de sortie LED Zone 1
int pinLed_B = 5;    // Numero de sortie LED Zone 2
int pinLed_C = 4;    // Numero de sortie LED Zone 3
int pinLed_D = 3;    // Numero de sortie LED Zone 4
int pinLed_E = 2;    // Numero de sortie LED Zone 5
int pinLed_F = 1;    // Numero de sortie LED Zone 6




void setup() {
  // put your setup code here, to run once:



  pinMode(pinRelayTransfo, OUTPUT);

  pinMode(pinRelay_A, OUTPUT);
  pinMode(pinRelay_B, OUTPUT);
  pinMode(pinRelay_C, OUTPUT);
  pinMode(pinRelay_D, OUTPUT);
  pinMode(pinRelay_E, OUTPUT);
  pinMode(pinRelay_F, OUTPUT);

  pinMode(pinRelayPompe, OUTPUT);

  pinMode(pinLed_A, OUTPUT);
  pinMode(pinLed_B, OUTPUT);
  pinMode(pinLed_C, OUTPUT);
  pinMode(pinLed_D, OUTPUT);
  pinMode(pinLed_E, OUTPUT);
  pinMode(pinLed_F, OUTPUT);


  // RESET DELAY


  digitalWrite(pinRelay_A, HIGH);
  digitalWrite(pinRelay_B, HIGH);
  digitalWrite(pinRelay_C, HIGH);
  digitalWrite(pinRelay_D, HIGH);
  digitalWrite(pinRelay_E, HIGH);
  digitalWrite(pinRelay_F, HIGH);

  digitalWrite(pinRelayPompe, HIGH);

  digitalWrite(pinRelayTransfo, LOW); //demarrage Transformateur


  delay(500);

  // PROGRAMME ZONE 1

  digitalWrite(pinRelay_A, LOW);     // Allumage Relay EV zone 1
  digitalWrite(pinLed_A, HIGH);       // Allumage Led EV zone 1
  delay(1000);                        // Pause 1 seconde
  digitalWrite(pinRelayPompe, LOW);  // Allumage Pompe
  delay(1800000);                     // Durée cycle d'arrosage 30 minutes

  digitalWrite(pinRelayPompe, HIGH);   // Arret de la Pompe
  delay(1000);                        // Pause 1 seconde
  digitalWrite(pinRelay_A, HIGH);      // Arret Relay EV zone 1
  digitalWrite(pinLed_A, LOW);        // Arret Led EV zone 1
  delay(500);                         // Pause 500 millisecondes

  // PROGRAMME ZONE 2

  digitalWrite(pinRelay_B, LOW);     // Allumage Relay EV zone 2
  digitalWrite(pinLed_B, HIGH);       // Allumage Led EV zone 2
  delay(1000);                        // Pause 1 seconde
  digitalWrite(pinRelayPompe, LOW);  // Allumage Pompe
  delay(1800000);                     // Durée cycle d'arrosage 30 minutes

  digitalWrite(pinRelayPompe, HIGH);   // Arret de la Pompe
  delay(1000);                        // Pause 1 seconde
  digitalWrite(pinRelay_B, HIGH);      // Arret Relay EV zone 2
  digitalWrite(pinLed_B, LOW);        // Arret Led EV zone 2
  delay(500);                         // Pause 500 millisecondes

  // PROGRAMME ZONE 3

  digitalWrite(pinRelay_C, LOW);     // Allumage Relay EV zone 3
  digitalWrite(pinLed_C, HIGH);       // Allumage Led EV zone 3
  delay(1000);                        // Pause 1 seconde
  digitalWrite(pinRelayPompe, LOW);  // Allumage Pompe
  delay(1800000);                     // Durée cycle d'arrosage 30 minutes

  digitalWrite(pinRelayPompe, HIGH);   // Arret de la Pompe
  delay(1000);                        // Pause 1 seconde
  digitalWrite(pinRelay_C, HIGH);      // Arret Relay EV zone 3
  digitalWrite(pinLed_C, LOW);        // Arret Led EV zone 3
  delay(500);                         // Pause 500 millisecondes

  // PROGRAMME ZONE 4

  digitalWrite(pinRelay_D, LOW);     // Allumage Relay EV zone 4
  digitalWrite(pinLed_D, HIGH);       // Allumage Led EV zone 4
  delay(1000);                        // Pause 1 seconde
  digitalWrite(pinRelayPompe, LOW);  // Allumage Pompe
  delay(1800000);                     // Durée cycle d'arrosage 30 minutes

  digitalWrite(pinRelayPompe, HIGH);   // Arret de la Pompe
  delay(1000);                        // Pause 1 seconde
  digitalWrite(pinRelay_D, HIGH);      // Arret Relay EV zone 4
  digitalWrite(pinLed_D, LOW);        // Arret Led EV zone 4
  delay(500);                         // Pause 500 millisecondes

  // PROGRAMME ZONE 5

  digitalWrite(pinRelay_E, LOW);     // Allumage Relay EV zone 5
  digitalWrite(pinLed_E, HIGH);       // Allumage Led EV zone 5
  delay(1000);                        // Pause 1 seconde
  digitalWrite(pinRelayPompe, LOW);  // Allumage Pompe
  delay(1800000);                     // Durée cycle d'arrosage 30 minutes

  digitalWrite(pinRelayPompe, HIGH);   // Arret de la Pompe
  delay(1000);                        // Pause 1 seconde
  digitalWrite(pinRelay_E, HIGH);      // Arret Relay EV zone 5
  digitalWrite(pinLed_E, LOW);        // Arret Led EV zone 5
  delay(500);                         // Pause 500 millisecondes

  // PROGRAMME ZONE 6

  digitalWrite(pinRelay_F, LOW);     // Allumage Relay EV zone 6
  digitalWrite(pinLed_F, HIGH);       // Allumage Led EV zone 6
  delay(1000);                        // Pause 1 seconde
  digitalWrite(pinRelayPompe, LOW);  // Allumage Pompe
  delay(1800000);                     // Durée cycle d'arrosage 30 minutes

  digitalWrite(pinRelayPompe, HIGH);   // Arret de la Pompe
  delay(1000);                        // Pause 1 seconde
  digitalWrite(pinRelay_F, HIGH);      // Arret Relay EV zone 6
  digitalWrite(pinLed_F, LOW);        // Arret Led EV zone 6
  delay(500);                         // Pause 500 millisecondes

  digitalWrite(pinRelayTransfo, HIGH); //Arret du transformateur

  delay(500);

}

void loop() {
  // put your main code here, to run repeatedly:




}

C’est difficile de répondre comme ça… qu’est censé faire ce code ? Est-ce que c’est normal que tout soit dans setup() et rien dans loop() ? Et surtout, quelles sont les spécifications de l’interrupteur 3 positions ?

S’il s’agit juste d’envoyer HIGH ou LOW à certains pins en fonction de la position d’un interrupteur et du temps, ça semble en effet assez simple. Ce qu’il faut déterminer d’abord si ce n’est pas déjà fait, c’est comment l’Arduino peut savoir sur quelle position est l’interrupteur.

Bonsoir, tout dans le setup et rien dans le loop c’est normal car je veux que le programme s’effectue une seule fois. Quoi qu’il en soit, j’ai réussi a faire ce que je voulais ( avec des "if", des "else if" et des "else" en me basant sur les position HIGH ou LOW des pins de l’interrupteur a glissiere. Merci quand meme.

Ce post est terminé pour moi. Merci encore.

Connectez-vous pour pouvoir poster un message.
Connexion

Pas encore membre ?

Créez un compte en une minute pour profiter pleinement de toutes les fonctionnalités de Zeste de Savoir. Ici, tout est gratuit et sans publicité.
Créer un compte