J'ai un circuit facile câblé, avec une LED connectée à la broche 18 sur la référence BOARD. J'exécute un programme simple pour mettre la broche 18 sur HIGH, ce qui allume la LED, puis quelques secondes plus tard, je mets la broche 18 sur LOW, et enfin je termine mon programme avec GPIO.cleanup ().
À ce stade, la LED est éteinte, ce qui signifie que la broche 18 est éteinte (LOW). Maintenant, je redémarre ou redémarre mon Raspberry Pi, et lorsqu'il redémarre, le voyant de la broche 18 s'allume à nouveau, même si la broche était éteinte avant de redémarrer le Raspberry Pi.
Pourquoi cela peut-il arriver? Comment puis-je configurer une broche spécifique, comme la broche 18, pour qu'elle soit désactivée lorsque le Raspberry Pi démarre? Et je ne veux pas que les broches GPIO soient sur HIGH lorsque le Raspberry Pi démarre.
Je suis préoccupé par ce problème, parce que disons que la broche 18 est connectée à un moteur à courant continu sur un robot, et lorsque le Raspberry Pi démarre, le moteur s'allume, et ce n'est pas quelque chose que je veux car cela interfère avec toute la structure du robot, et certains moteurs peuvent démarrer et d'autres pas, selon les broches auxquelles ils sont connectés. Je veux allumer manuellement tous les moteurs de manière synchronisée.
Une autre chose est que toutes les broches n'ont pas ce problème. Certains restent éteints lorsque le Raspberry Pi démarre, mais d'autres non.
/sys/class/gpio
et exportez la broche 18, dans quel état le système dit-il qu'il est si vous ne changez rien?echo
, qui écrit, c'est-à-dire, définit quelque chose. Après l'avoir exporté, vous voulez vous en abstenir et utiliser simplementcat
, qui lit, pour vérifier la direction et la valeur.Réponses:
A la mise sous tension, les GPIO sont tirés haut ou bas à travers les résistances internes. Que la traction soit élevée ou faible pour un GPIO particulier est détaillée à la page 102 des périphériques ARM BCM2835 .
Lorsque le noyau Linux est démarré et si l'arborescence des périphériques est activée (probable), il reconfigure les GPIO en fonction des paramètres de l'arborescence des périphériques. Les modules chargés à partir de
/etc/modules
peuvent également mettre à jour l'état GPIO.Tout autre logiciel que vous utilisez au démarrage pourrait potentiellement reconfigurer les GPIO après les paramètres de l'arborescence des périphériques et les charges de module.
Il est plus sûr de trouver une solution matérielle si vous avez du matériel qui pourrait être déclenché de manière incorrecte au démarrage du système.
la source
Lorsque le Raspberry Pi démarre, les lignes GPIO sont réinitialisées à la valeur par défaut de la puce, puis le système d'exploitation est chargé et les réinitialise à la valeur par défaut du système d'exploitation. Il n'y a aucun moyen de "se souvenir" des paramètres lors d'un redémarrage. Voir aussi Quel est l'état de mise sous tension des GPIO? et l' état GPIO après le démarrage .
la source
Je sais qu'il est assez tard. Répondre. Vous pouvez écrire un script python ou un script bash qui définit manuellement le code PIN sur low et planifie l'exécution d'une tâche cron à chaque démarrage. Vous n'aurez pas besoin de modifier les fichiers système / critiques. En dehors de cron
la source