Bonjour, dans un futur projet, j'aurais besoin de 4 capteur Ultrason (HC-SR04) commander par un arduino UNO. avec 1 capteur cela fonctionne bien; mais comment faire pour utiliser les 3 autres capteurs ? Ou les brancher ? car mon premier capteur la pin trig est sur le 8 et la pin echo sur 9. et mes broche digitales sont dejà toutes prises. jusqu'à 13. analogue 4 et 5 sont aussi prise(ecran lcd). dois je utiliser un second arduino uno ?
merci pour vos eclairage :-) .
Le problème principal quand on multiplie ce genre de capteur de distance qui utilisent des ondes n'est pas les pins disponibles, mais les risques d'interférence entre les ondes ultrasonores ou infrarouges.
Il ne faut pas les commander simultanément.
Il faut aussi avoir en tête que le cône d'émission des ondes ultrasonores est de 60 °.
En ce qui concerne ta question sur les pins disponibles il existe des "expenseurs" comme le PCF8575 toujours cité sur internet mais qui en 2026 est à bannir, surtout si tu veux l'utiliser en mode entrées numériques.
C'est une usine à gaz.
Regarde plutôt du côté du MCP23016 qui ajoute 16 réelles IOs numériques et ne nécessite de mobiliser que A4 et A5 pour l'I2C.
Microchip a aussi développé une version 8 bits le MCP23008.
Tu peux aussi regarder des capteurs optiques qui ont un cône d'émission plus fin comme les produits STMicroelectronics et dits "Time of Flight".
Ils fonctionnent en envoyant des ondes lumineuses (sécurisées) dans l'infrarouge.
Vu de l'extérieur leur fonctionnement est proche de celui des capteurs ultrasons, mais à mon avis ils sont plus simples à utiliser et plus précis.
Il existe plusieurs déclinaisons. Le choix du modèle dépendra de ton cahier des charges : distances de détection, précision de la détection.
Ils sont nettement moins volumineux et ne nécessitent que l'I2C en plus de l'alim.
Pour ton problème, les broches SDA et SCL (A4 et A5) couvriraient :
Le MCP23016
Tous les capteurs optiques "Time of Flight"
Mes 5 cts.
EDIT :
Les questions se posent dans le forum général.
Tutoriels et cours est fait pour déposer des tutos et des cours.
Merci de lire ou de relire et respecter les prescriptions du message d'accueil
Ce message sera déplacé par la modération, ne pas en créer un autre, merci.
j'ai déplacé le post dans le forum général.
Pour le besoin d'un capteur ultrason, je ne pense pas qu'on puisse mesurer précisément avec MCP23016 le temps de ping (ce qu'on fait avec pulseIn() ou une boucle sur micro() dans les bibliothèques courantes) car à la vitesse de 400 kbit/s, lire un octet via le MCP23016 prend au moins 25 µs. Cette latence n'est pas compatible avec le temps nécessaire pour mesurer correctement l’impulsion d’un capteur ultrason, qui se compte en dizaines de microsecondes.
Cela dit la proposition est bien entendu tout à fait valable, il faut envisager de migrer sur le MCP23016 ce que vous avez sur d'autres broches si c'est envisageable.
(sinon +1 aussi sur les capteurs ToF)
➜ donc la question est quel Arduino avez vous et qu'est-ce que vous voulez brancher.
C'est une info, pas un pinaillage ![]()
Il existe le MCP23S17 qui est une version SPI du MCP23017 I2C, 16 bits les deux.
Le SPI mobilise plus de pins que l'I2C mais est plus rapide.
Si on prend une carte UNO R3, je pense que c'est le cas.
L'I2C tourne à 400 KHz max et à une entropie de 0,5-> il faut envoyer l'adresse plus la donnée, soit deux octets dont un seul contient une information, l'adresse ne contenant pas d'information.
Le SPI sur un micro avr tourne à FH/2 = 8 MHz et n'envoie qu'un seul octet puisque l'adresse est déléguée à un IO.
Cela dit, pour le cas du MCP23S17 je n'ai pas compris le fonctionnement de la bibliothèque fournie par le gestionnaire de l'IDE arduino (il y a 3 ou 4 ans) qui nécessite d'utiliser l'adresse I2C pour un fonctionnement SPI !
Trop compliqué pour moi.