Résolu [où est l'erreur dans mon code]

Bonjour,

Pour ce programme je me suis inspiré du programme de sweethom (programmateur horaire) et j’ai voulu lui ajouter une commande manuelle via un switch on/off ( pas un bouton poussoir) qui commanderais un relais en dehors des plages horaires programmées.

Les sorties voies 1 à 4 fonctionnent parfaitement en fonction des heures choisies.

Là ou ça coince c’est quand je veux passer en mode manuel avec le switch, la sortie passe en mode manuel puis se coupe, puis revient en mode manuel et se coupe de nouveau, en boucle .
Pour visualiser ma sortie j’ai mis une led et elle clignote alors qu’elle devrait rester allumée lorsque j’active le switch .

Voici mon code

Je suis preneur de toutes vos remarques.

Merci

[code]

[/code]

Programmateur horaire 4 voies et sortie manuelle sur 5.doc (46 KB)

bonjour
cablage du scitch?

pinMode(Switch, INPUT_PULLUP);//evite les rebonds

y a pas un blem

etatSwitch = LOW; // on initialise l'état du switch comme relaché
...
....
 etatSwitch = digitalRead(Switch); //Rappel : bouton = 2
   if(etatSwitch == LOW)  //test si le bouton a un niveau logique HAUT

Bonjour et merci de vous intéresser à mon problème,

le switch est câblé entre D2 et le +5v au travers d'une résistance
la sortie en mode manuel (switch on) est en D3

electronn2002:
Bonjour et merci de vous intéresser à mon problème,

le switch est câblé entre D2 et le +5v au travers d'une résistance
la sortie en mode manuel (switch on) est en D3

et donc?
une entrée pinMode est une entrée (bouton, switch, etc...)
une sortie pinMode est une sortie 'led, buzzer, etc...)

       const int Switch = 2;// defini pin D2 pour entrée switch mode manuel 
        const int outMan = 3;// défini D3 comme sortie pour mode manuel (TS et relais)
        int etatSwitch ; // variable qui enregistre l'état du switch    
 ...
void setup() {
   pinMode(Switch, INPUT); // switch mode Manuel câblé directement vers +5v, LOW quand inactif, R 10k entre masse et entrée switch D2
  pinMode(outMan, OUTPUT); // outMan est la sortie en manuel
  etatSwitch = LOW; // on initialise l'état du switch comme relaché

moi, ce que je lis dans le code
le switch est en entrée, normal, et initialisé à LOW, donc relaché

  if(etatSwitch == LOW)  //                     [u]test si le bouton a un niveau logique HAUT[/u]
    {
      lcd.setCursor(10,1);
      lcd.print("Manuel");
      digitalWrite(outMan,HIGH); // le swich est activé et la sortie mode manuel est activée

      }

Problème résolu, mon switch n'était pas connecté de la bonne façon