Shift register : LED s'allument seules

Bonjour,

J’ai regardé plusieurs tutos avant de venir poster ici, mais je n’ai pas trouvé la solution…
J’utilise un Shift Register 74HC595 pour contrôler 8 LEDs.
J’ai donc créé un script Python, qui fonctionne très bien pour ça. Ce script Python utilise la lib RPI.GPIO.

Sauf que quand aucun script Python ne tourne, si je touche quelques fils de mon raspberry (sans les debrancher, juste effleurer), mes LEDs s’allument un peu n’importe comment.
Vu qu’aucun script Python ne tourne, je suppose que mes broches GPIO ne pas à un état fixe, elles sont dans le vide, du coup le shift register doit recevoir 1 ou 0 aléatoirement sur ses broches ?

J’ai donc trouvé un début de réponse ici https://electronics.stackexchange.com/questions/72317/why-74hc595-keep-my-light-always-on. J’ai mis une résistance PULL-DOWN sur chacune des broches qui arrivent sur le shift register (les 3 broches qui permettent de configurer le shift register), et ça ne bug plus depuis… SAUF quand je branche des nouveaux fils sur d’autres broches GPIO, ça refait la même chose, des LEDs s’allument un peu au hasard…

Une histoire de PULL-DOWN ?

Merci pour votre aide.

Bonjour hyt82909,

Oui j’ai bien fait attention de faire un cleanup quelque soit la sortie de mon programme.
Il est vrai que quand j’allume mon RPI, les LEDs s’allument, je vais donc faire un script qui les initialisent à zéro.

Par contre, mon plus gros soucis, c’est qu’elles s’allument aléatoirement après démarrage, et après avoir exécuter mon script (script qui termine par un cleanup).

Par exemple si je fais :

  1. Démarrage du PI
  2. Lancement du script LED.py qui fait clignoter mes LEDs (termine par un cleanup)
  3. À ce stade, mon script est terminé et toutes mes LEDs sont éteintes
  4. Si je branche une souris sur un port USB libre, rien que le fait de faire contact entre les parties métalliques USB, mes LEDs s’allument n’importe comment…

Si je comprends bien le rôle du cleanup, ça permet de libérer les sorties GPIO ?
Du coup, si je ne fais pas de cleanup à la fin de script, mes sorties GPIO resteront à leur état et je n’aurai pas de bug ?