[Résolu] Programme s'exécute en USB mais pas en 9V

Bonsoir,

J’ai suivi les indications qui m’ont été données ici pour brancher mes ampoules et les faire s’allumer avec l’Arduino.

Tout fonctionne à merveille (le code s’exécute comme attendu) quand je suis en alimentation USB mais quand je passe avec une pile 9V (plusieurs ont été testées), seule l’ampoule sur la pin 5 s’allume quand je manipule l’interrupteur de la pin 13. Les autres ne font rien…

Autrement dit, seule l’ampoule jaune s’allume alors qu’il y a pour chacune le même code à exécuter…

Pour preuve, le code :

const int ampouleverte = 2;
const int ampoulebleue = 3;
const int ampoulegrise = 4;
const int ampoulejaune = 5;
const int interrupteur1 = 10;
const int interrupteur2 = 11;
const int interrupteur3 = 12;
const int interrupteur4 = 13;
int etat_interrupteur1;
int etat_interrupteur2;
int etat_interrupteur3;
int etat_interrupteur4;

void setup()
{
pinMode(ampoulejaune, OUTPUT);
pinMode(ampouleorange, OUTPUT);
pinMode(ampouleverte, OUTPUT);
pinMode(ampoulebleue, OUTPUT);
pinMode(interrupteur1, INPUT);
pinMode(interrupteur2, INPUT);
pinMode(interrupteur3, INPUT);
pinMode(interrupteur4, INPUT);
}


void loop()
{
 etat_interrupteur1 = digitalRead(10);
  etat_interrupteur2 = digitalRead(11);
   etat_interrupteur3 = digitalRead(12);
    etat_interrupteur4 = digitalRead(13);
 
  if (etat_interrupteur1 == HIGH)
    {
  digitalWrite(ampouleverte, HIGH);
    }
  
  if (etat_interrupteur1 == LOW)
   {
     digitalWrite(ampouleverte, LOW);
   }

    if (etat_interrupteur2 == HIGH)
    {
  digitalWrite(ampoulebleue, HIGH);
    }
  
  if (etat_interrupteur2 == LOW)
   {
     digitalWrite(ampoulebleue, LOW);
   }
   
    if (etat_interrupteur3 == HIGH)
    {
  digitalWrite(ampoulegrise, HIGH);
    }
  
  if (etat_interrupteur3 == LOW)
   {
     digitalWrite(ampoulegrise, LOW);
   }
   
    if (etat_interrupteur4 == HIGH)
    {
  digitalWrite(ampoulejaune, HIGH);
    }
  
  if (etat_interrupteur4 == LOW)
   {
     digitalWrite(ampoulejaune, LOW);
   }
}

Je n’ai pas sous la main de quoi tester les tensions, ni d’autres alimentations que les 9V…
De plus j’ai lu que ce problème pourrait venir d’un GND mal relié et que l’USB ferait le GND manquant, mais je ne vois pas où je me serais trompé…

Merci d’avance pour les éclaircissements apportés.
Bonne soirée
Romtaz

PS : je ne suis pas un pro de Fritzing, excusez donc le schéma un peu brouillon… J’ai essayé de mettre des couleurs pour le rendre plus lisible.

vu sur l'ancien sujet

J'ai une idée de projet dans lequel j'aimerais brancher 4 ampoules incandescentes de 4,8V et 0,5A et les faire s'allumer : c'est l'Arduino qui commanderait tout cela...

Je pense sincerement qu'avec une prise usb, tu as assez de peches ( de courant) pour allumer 4 ampoules en meme temps...

Alors qu'avec une pile 9V 1200mah, n'est pas assez puissante

Je suis bien d'accord, mais j'aimerais que mon montage soit indépendant (je dois pouvoir le promener avec moi sans être relié à un ordi) et que les ampoules ne s'allument pas forcément en même temps...

C'est le cas dans mon bout de code : chacun des interrupteurs devrait allumer une seule ampoule, sauf qu'aucune d'elle, même indépendamment, ne s'allume, sauf celle sur la pin 13 commandée par l'interrupteur en pin 5...

Merci pour ta réponse !

Sur l'image jointe (qui n'est pas un schema mais plutôt un plan de câblage), tu as disposé des interrupteurs.

Ceux-ci ont ont broche connectée au GND et l'autre broche connectée à une pin de l'Arduino

Dans ton programme tu teste si l'entrée correspondante est au niveau HIGH

Est-ce que tu t'es posé la question : comment un niveau HIGH peut arriver à l'entrée Arduino alors que l'interrupteur est relié uniquement au GND ?

Pour cela il faudrait que ton interrupteur puisse envoyer une tension VCC vers l'entrée Arduino

Je ne vais pas te donner une solution toute faite, ce que tu apprendras par toi-même sera le meilleur des apprentissages.
Recherche "arduino resistance de rappel"

romtaz:
Je suis bien d'accord, mais j'aimerais que mon montage soit indépendant (je dois pouvoir le promener avec moi sans être relié à un ordi) et que les ampoules ne s'allument pas forcément en même temps...

C'est le cas dans mon bout de code : chacun des interrupteurs devrait allumer une seule ampoule, sauf qu'aucune d'elle, même indépendamment, ne s'allume, sauf celle sur la pin 13 commandée par l'interrupteur en pin 5...

Merci pour ta réponse !

bonsoir
si le fonctionnement en alim USB est satisfaisant , alors qu'il ne l'est pas avec une "pile 9V" c'est tres certainement que la pile ne debite pas assez .

test simple de levée de doute :
breanche un voltmetre au bornes de la pile et releve la tension à vide et ensuite là tension en charge .

Bonsoir Alain,

Alain46:
Est-ce que tu t'es posé la question : comment un niveau HIGH peut arriver à l'entrée Arduino alors que l'interrupteur est relié uniquement au GND ?

Non effectivement... je débute en électronique et en Arduino, donc je n'ai pas encore tous les bons réflexes !!!

Alain46:
Je ne vais pas te donner une solution toute faite, ce que tu apprendras par toi-même sera le meilleur des apprentissages.
Recherche "arduino resistance de rappel"

Merci, c'est effectivement comme ça que l'on progresse et que j'ai trouvé ma solution ... En activant le pull-up, ça fonctionne avec une pile 9V comme alimentation...

Donc un énorme merci Alain car la solution à mon problème venait de là !!!

Merci également à ceux qui prennent le temps de lire et de répondre aux messages des débutants comme moi !

Bonne soirée !