Utiliser toutes les broches comme E / S numériques


11

Augmentez le nombre de broches numériques

Il existe de nombreux articles qui expliquent comment utiliser plus que les broches standard des différents Arduinos, mais aucun d'entre eux n'explique correctement les limitations et les problèmes.

entrez la description de l'image ici

Arduino Uno:

1.Vous pouvez utiliser les broches analogiques

Pin 14 = Analog in 0
Pin 15 = Analog in 1
Pin 16 = Analog in 2
Pin 17 = Analog in 3
Pin 18 = Analog in 4
Pin 19 = Analog in 5

digitalWrite(14,HIGH);
or
digitalWrite(A0,HIGH);

Vous ne pouvez pas utiliser à la fois SDA, SCL et A4, A5 car ils sont fondamentalement les mêmes (18,19).

3.Vous pouvez également utiliser le TX / RX.

"Ne le fais pas, tu interromps la communication série ..."

"N'utilisez jamais les broches 0 et 1"

"vous ne pouvez pas utiliser les broches TX / Rx"

Vous pouvez ... mais vous devez prendre des précautions. Lesquels?

Il devrait avoir un logiciel série sur USB, non?

Ou est-ce que je casse la série USB?

Y a-t-il des problèmes de puce interne si j'utilise TX / RX?

Comme j'utilise ces broches TX / RX dans le code, je ne devrais probablement pas utiliser Serial.print()?

Que se passe-t-il si j'oublie de supprimer Serial.print()après avoir téléchargé le code qui utilise les broches 0,1?

Comment réinitialiser le matériel Arduino / Bootloader en cas de problème?

Comme il existe divers autres Arduino qui utilisent des puces différentes, est-ce que ce qui précède est valable pour toutes les puces Atmel?

Alors, que dois-je savoir avant d'utiliser ces TX / RX ou peut-être aussi les autres broches analogiques?

Il y a des shiftregisters bon marché, des pilotes pwm, des pilotes led, spi, i2c et plus d'ic pour étendre vos E / S


Mais s'il n'y a pas de gros problèmes, cela signifie que l'arduino a 20 broches d'E / S ...

Vous pourriez théoriquement contrôler:

17x3 = 51 = 17 RGB leds (multiplexing, pwm sourcing&sinking);
14x6 = 84 leds (multiplexing, pwm on 6 rows/colums );
10x10 = 100 leds (multiplexing, high low);
20x(20-1) = 380 leds (charlieplexing, high low);
// yes it would flicker

Corrige moi si je me trompe. Cela signifie que vous pouvez contrôler 380 "peu importe" en utilisant des diodes et un arduino.

Réponses:


8

Le problème principal concerne les broches 0 et 1.

De nombreuses broches ont plusieurs fonctions qui leur sont attribuées, telles que A4 et A5 sont également les broches I2C, les broches 10/11/12/13 sont également les broches SPI, etc. Mais les broches 0 et 1 sont les seules broches multifonctions qui en fait avoir quelque chose attaché à eux sur le tableau.

Toutes les autres broches, tout en étant multifonctions, ont leur fonction définie essentiellement par ce que vous leur attachez. Étant donné que les broches 0 et 1 sont déjà fixées sur la carte à la puce d'interface USB, leurs possibilités d'utilisation sont un peu plus limitées.

  • Dès que vous activez Serial dans votre sketch ( Serial.begin()), ces deux broches ne peuvent plus être utilisées de manière fiable pour les E / S numériques.

Cela signifie que vous pouvez soit utiliser le port série matériel, soit utiliser les broches pour les E / S numériques, mais pas les deux.

  • Les appareils connectés aux broches 0 et 1 peuvent interférer avec la connexion série

Cela inclut le téléchargement de croquis. Vous avez des données série provenant du PC alors que les mêmes broches sont affectées par d'autres choses qui leur sont connectées. Le plus courant est des choses comme les modules GPS qui se connectent à ces broches et envoient constamment des données série. Ces données série entreront en conflit avec les données série du PC et aucune n'arrivera correctement.

  • Comment télécharger des croquis si la série est perturbée par votre croquis? Comment "réinitialiser" la carte?

Non. Ce n'est pas votre croquis qui interfère avec la série, c'est ce qui est physiquement connecté à ces deux broches IO qui interfèrent. Déconnectez simplement ces deux broches de tout ce qui est connecté et vous pourrez télécharger à nouveau des croquis. De nombreux boucliers commencent maintenant à ajouter un petit interrupteur sur eux pour déconnecter ces broches afin que vous puissiez télécharger des croquis sans débrancher le bouclier. Vous pouvez également utiliser la même astuce avec d'autres appareils que vous câblez à ces broches - ajoutez un bipolaire à un seul jet ou un bipolaire à deux lancers (et n'utilisez pas une position) pour isoler facilement les deux broches du reste de votre matériel quand vous en avez besoin.

  • Est-ce que cela affecte toutes les cartes Arduino?

Non, seuls ceux qui utilisent une puce de pont USB vers série - ce sont des choses comme Uno, Due, Mega, etc. Les cartes qui ont une connexion USB directe n'utilisent pas les broches TX et RX pour télécharger des croquis - elles utilisent l'USB dédié Broches D + et D-. Ce sont des planches comme la Leonardo, certaines des planches plus petites (mini? Micro? J'oublie lesquelles), etc.


"De nombreux boucliers commencent maintenant à ajouter un petit interrupteur" cool. Micro a "puce de pont USB vers série"? Est-ce à dire que je peux utiliser les broches 0,1 sur uno mais pas sur micro?
cocco

Vous pouvez les utiliser sur tous ceux qui n'ont pas de pont USB vers série. L'Uno en a un, le Mega en a un, le Mini n'en a pas, mais vous devez en connecter un en externe aux broches TX / RX pour le programmer. Tout cela est sorti. Le Micro et le Leonardo n'en ont pas, vous pouvez donc les utiliser.
Majenko

C'est de quoi parle @Nick Gammon? Uno et les autres que vous avez notés ont des résistances de pullup qui ne vous permettent pas d'utiliser correctement les broches 0 et 1 mais le Micro n'a pas de résistance de pullup et donc les broches 0 et 1 fonctionnent correctement et également l'USB pour télécharger de nouveaux croquis?
cocco

Pour une fois, Nick se trompe sur ce point. Il n'y a pas de résistance de rappel. Qu'est-ce qu'il y a une paire de petites résistances en ligne pour éviter les problèmes si le MCU principal et la puce USB essaient tous les deux de conduire la même ligne à des niveaux opposés en même temps. Vous pouvez les voir sur le schéma Uno comme RN4A et RN4B.
Majenko

Si la puce USB essaie de piloter la broche RX (vous avez le port USB branché et vous ouvrez la connexion série [ou peut-être que c'est juste branché, pas sûr]), cela peut affecter la tension sur la broche RX indépendamment de quoi que ce soit que vous faites dans votre croquis, il n'est donc pas sûr d'utiliser cette épingle pour des choses comme le charlieplexing.
Majenko

1

Je ne peux pas commenter en raison d'une réputation insuffisante, mais je tiens à souligner que le brochage OP a au moins une broche incorrecte!

PB6 devrait être PB5

J'ai passé beaucoup de temps à essayer de comprendre pourquoi je ne pouvais pas voir SCK sur la portée (bus SPI). Je travaillais à bas niveau, pas avec l'IDE.

Comme c'est la première photo qui apparaît lors de la recherche sur Google, je voulais éviter le même problème aux autres ...


0

20x (20-1) = 380 leds (charlieplexing, haut bas); Corrige moi si je me trompe. Cela signifie que vous pouvez contrôler 380 "peu importe" en utilisant des diodes et un Arduino.

Tout d'abord, le chiffre de 380 est correct pour 20 broches (20 2 - 20), mais les broches 0 et 1 sont connectées à des résistances de rappel sur l'Atmega16U2, donc elles ne sont jamais vraiment à 0V. Si vous chargez un croquis vierge, vous mesurerez 5 V sur les broches 0 et 1.

Deuxièmement, vous ne pouvez pas conduire 380 "whatevers", vous pouvez conduire 380 LED via Charlieplexing. La propriété de la LED, que le courant ne circule que dans un sens, est importante pour son fonctionnement.

Question connexe Existe-t-il un moyen d'avoir plus de 14 broches de sortie sur Arduino?


Premièrement: que se passe-t-il si je mets 2 LED inversées (avec des résistances) sur les broches 0 et 1, que je règle la broche 0 haute la broche 1, un retard faible de 1 seconde et que je règle la broche 0 bas et la broche 1 retard élevé 1 seconde?
cocco

Deuxièmement: Par "whatevers", j'entends les interrupteurs ... les interrupteurs à cliquet, les interrupteurs à lames souples, les capteurs ou tout type de combinaison d'entrées / sorties qui prennent en charge les hautes / basses. electronicdesign.com/site-files/electronicdesign.com/files/… fait avec des diodes.
cocco

Eh bien pas vraiment. Charlieplexing est une forme de multiplexage, donc à moins que vous ne vouliez que vos commutateurs cliquent comme des fous, cela ne fonctionnera pas vraiment pour eux. Et c'est une situation de sortie, donc vous ne ferez pas d'entrées, comme vous semblez le penser. Je vous suggère de lire les autres liens. Les registres à décalage, ou expandeurs de port, sont plus pratiques que Charlieplexing ici.
Nick Gammon
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.