Problème lancement séquence via 5v sur broche

Bonjour à tous,

je suis débutant sur Arduino et je rencontre un petit problème avec mon montage. Pour être bref, je réalise un petit séquenceur (genre chenillard) dont je règle la vitesse via un contacteur rotatif à 5 positions.
Tout ceci fonctionne, mais j'aimerai pouvoir initialiser la séquence depuis ma console qui peut envoyer du 5v. J'ai placé une résistance de 10k entre la broche et la masse, mais là, rien ne se passe quand j'envoie du 5v sur la broche.
J'ai alors testé l'inverse, mais là lorsque j'allume l'arduino, la séquence se lance seule sans que je fasse quoi que ce soit...
Là je sèche... Je pense que j'ai du faire une grossière erreur dans mon code, mais laquelle ?
Si une âme charitable passe par là...
Voilà le code :

int interval = 1000;
byte pr = 1;
const int E5V = 12;
byte etat_broche = digitalRead(E5V);
   
void setup ()
  {
    Serial.begin(9600);
    pinMode (A0, INPUT_PULLUP);
    pinMode (A1, INPUT_PULLUP);
    pinMode (A2, INPUT_PULLUP);
    pinMode (A3, INPUT_PULLUP);
    pinMode (A4, INPUT_PULLUP);
    pinMode (E5V, INPUT_PULLUP);
    pinMode (2, OUTPUT);
    pinMode (3, OUTPUT);
    pinMode (4, OUTPUT);
    pinMode (5, OUTPUT);
    if (digitalRead (A1) == LOW) {interval = 2000;}
    if (digitalRead (A2) == LOW) {interval = 3000;}
    if (digitalRead (A3) == LOW) {interval = 4000;}
    if (digitalRead (A4) == LOW) {interval = 5000;}
   }
  
void loop ()
  {
    // on lit l'état de la broche
   
      Serial.print(etat_broche);
  
    // tant qu'il n'y a rien sur la broche, on fait rien
      while (digitalRead(E5V) == LOW)
      {
      }

    // sinon on lance
      Serial.print(etat_broche);
      for (pr=1; pr <6; pr++)
      {
      delay(interval);
      digitalWrite(pr, etat_broche);
      }
      delay(2000);
      digitalWrite (2, LOW);
      digitalWrite (3, LOW);
      digitalWrite (4, LOW);
      digitalWrite (5, LOW);
  }

Je n'ai pas regardé en détail mais déjà Vous ne mettez jamais à jour etat_broche

Il faut mettre sans doute

 etat_broche = digitalRead(E5V);

Dans la loop

Et ce code est supposé faire quoi ?

Ok, je rajoute ça

Ce code place un délai fixé par un contacteur rotatif (interval) avant d'activer chaque broche de 2 à 5.

de 1 à 5. la pin 1 c'est Tx, on essaye de la laisser tranquille si on utilise Serial :slight_smile:

Ok, merci, je modifie ça. De toute façon, la broche 1 n'est pas utilisée, j'envoie directement le 5v sur 1 opto, puis un irf540 sans passer par l'arduino.

si si lorsque vous faites un Serial.print() elle est utilisée

OK.

Bonsoir dany68

Ce qui veut dire que tu veux travailler en PULL_DOWN alors que tu initialises la broche ainsi:
pinMode (E5V, INPUT_PULLUP);
Il y a contradiction.

Cordialement
jpbbricole

Ce serait bien de nous remettre le code modifié. Histoire d'être sûr que tout le monde parle de la même chose.

This topic was automatically closed 180 days after the last reply. New replies are no longer allowed.