Arduino fonctionne a l'envers ?!

Bonsoir,

Je suis débutant en arduino et je suis en grande galère. J'ai fais des essais d'un programme au voltmetre, celui ci semblais fonctionner...

Après quelques déboires avec des relais, j'ai enfin tout le matériel nécéssaire, malheureusement mon programme ne fonctionne pas comme il faut, je deviens fou.

J'en suis venu a faire un programme qui me donne l'état de mes E/S via le moniteur série.

Le but du programme, est que lorsque j'envoie 5V dans la PIN13, l'état de mes E/S s'affiche dans le moniteur série.

Voici le code :

// Affectation des variables sur les PIN
const int apiLife = 2;
const int levelUp = 3;
const int levelDown = 4;
const int reniflard = 5;
const int evPompe = 6;
const int pompe = 7;
const int cmdRemplissage = 8;
const int cmdVidange = 9;
const int sensPompe = 10;
boolean memCmdRemplissage = false;
boolean memCmdVidange = false;
int etat13 = 0;

void setup()
{
  // Configuration des entrées/sorties
  pinMode(2, OUTPUT);
  pinMode(3, INPUT);
  pinMode(4, INPUT);
  pinMode(5, OUTPUT);
  pinMode(6, OUTPUT);
  pinMode(7, OUTPUT); 
  pinMode(8, INPUT);
  pinMode(9, INPUT);
  pinMode(10, OUTPUT);
  pinMode(13, INPUT);
  Serial.begin(9600);
}



void loop()
{
  // Mise à 1 de la sortie toujours active
  digitalWrite(apiLife, HIGH);
  
 etat13 = digitalRead(13);
  
  if (etat13 == HIGH)
  {
     Serial.println("-----");
     Serial.println(digitalRead(2));
     Serial.println(digitalRead(3));
     Serial.println(digitalRead(4));
     Serial.println(digitalRead(5));
     Serial.println(digitalRead(6));
     Serial.println(digitalRead(7));
     Serial.println(digitalRead(8));
     Serial.println(digitalRead(9));
     Serial.println(digitalRead(10));
  }
}

Il n'est pas commenté mais avec l'explication je pense que c'est facilement compréhensible.

En vient l'essai. Je branche mon arduino, charge le programme et affiche le moniteur série.
Que se passe t il ? L'état de mes E/S s'affiche a chaque cycle dans le moniteur, alors que la PIN13 n'est pas raccordée à quoi que ce soit !

Lorsque j'envoie 5V dedans, il se passe la même chose. Par contre, j'ai testé le tout pour le tout, j'ai raccordé la PIN13 à mon GND et là, miracle, l'état de mes E/S n'est plus mis a jour dans mon moniteur !

En gros, ça fonctionne à l'envers, avec le GND...

Arduino HS ?!

Merci d'avance.

Salut,

Comportement on ne peut plus normal, ton pin est à l'état flottant (relié à rien ne veut pas dire relié au VCC ou au GND) sensible à tout ce qui est environnant.

Cherche résistance de pull down et pull up

Bonsoir,
C'est ce que j'appelle une entrée en "ghost detector"
@+

Je viens de faire l'essai en mettant des pull down logiciel par exemple digitalWrite(mon_entrée, LOW)

Malheureusement, je n'ai pas l'impression que cela ai quelconque effet.

J'ai bien peur d'avoir fait une bêtise.

Je vais refaire un programme propre, le tester, noter les résultats.
Si rien de concluant je donnerai le code ici avec les résultats attendu, je suis sur qu'une ame charitable qui a une carte vide pourra tester et comparer nos résultats.

Merci à vous en attendant.

Re,
Essaye de repartir sur du simple, par exemple, le fameux "blink"
@+

toytoy:
Le but du programme, est que lorsque j'envoie 5V dans la PIN13, l'état de mes E/S s'affiche dans le moniteur série.

void loop()

{
  // Mise à 1 de la sortie toujours active
  digitalWrite(apiLife, HIGH);
 
etat13 = digitalRead(13);
 
  if (etat13 == HIGH)
  {
    Serial.println("-----");
    Serial.println(digitalRead(2));
    Serial.println(digitalRead(3));
    Serial.println(digitalRead(4));
    Serial.println(digitalRead(5));
    Serial.println(digitalRead(6));
    Serial.println(digitalRead(7));
    Serial.println(digitalRead(8));
    Serial.println(digitalRead(9));
    Serial.println(digitalRead(10));
  }
}




Lorsque j'envoie 5V dedans, il se passe la même chose. Par contre, j'ai testé le tout pour le tout, j'ai raccordé la PIN13 à mon GND et là, miracle, l'état de mes E/S n'est plus mis a jour dans mon moniteur !


En gros, ça fonctionne à l'envers, avec le GND...

Ton programme fonctionne comme tu l'as codé.

Le if (etat13 == HIGH) demande l'exécution du code entre accolades si la broche 13 est à l'état haut (donc 5V). C'est bien le comportement que tu obtiens.
Si la broche 13 est à 5V, tu affiches l'état de tes entrées.
Sinon, tu n'affiches rien.