Go Down

Topic: [arduino nano] utilisation des broches entrée analogique en IO numérique (Read 2934 times) previous topic - next topic

kollibar

Bonjour,

j'ai cherché un peu, mais je n'ai pas trouvé. Y a-t-il le moyen d'utiliser les broches entrées analogique de l'arduino en tant qu'entré sortie numérique?

Merci
Thomas

kamill

Bonjour,

Oui, il suffit d'utiliser digitalRead ou digitalWrite
Code: [Select]
bouton=digitalRead(A0);  // par exemple

Artouste


kamill

Effectivement, A6 et A7 sont uniquement des entrées analogiques

kollibar

OK, merci!!!

Du coup, si j'ai bien compris, si la broche est configurée en entrée, on peut y lire soit une valeur numérique, soit une valeur digitale.

et si elle est configurée en sortie, on peut y écrire une valeur numérique.

Dans le cas de l'entrée numérique, à partir de quelle tension, la broche lit un état haut?
Thomas

_pepe_


Artouste

Avec une alimentation de 5V, on lit un niveau haut au-dessus de 0,30V, et un niveau bas au-dessous de 0,15V. Il existe un seuil de basculement avec une petite hystérésis entre 0,15V et 0,30V.
bonjour
0.15V et 0.30V ?
y aurait pas une erreur de positionnement de virgule ? 8)




68tjs

C'est très clair, sauf dans l'esprit de ceux qui écrivent la documentation sur le site arduino.

Sur les avr et en particulier sur le 328p (a l'exception de A6 et A7 comme il a déjà été fait mention voir [1] en fin de message) TOUTES LES BROCHES accessibles sur connecteur SONT NUMERIQUES

Absolument toutes.

Explication:
Toutes les broches ont une fonction principale et des fonctions secondaires.
Les fonctions principales sont activées à la mise sous tension ou après un Reset.
La fonction principale de TOUTES les broches accessibles sur les connecteurs est d'être une entrée/sortie numérique.

Les fonctions secondaires ou "alternate function" doivent être activées par programmation.

Exemple de fonctions secondaires :
- la PWM : 6 broches peuvent être contrôlées par les timers (2 broches par Timer) --> activée par analogWrite()
- La liaison série et l'UART --> activée par Serial.begin()
- La laison SPI --> activée par la lib SPI
- La liaison I2C --> activée par la lib I2C (wire)

et le voltmètre analogique activé par analogRead()

[1] Pourquoi A6 et A7 ne sont pas numériques ?
La raison est très simple. Dans un micro-contôleur les I/O sont groupées par PORT, avr = port de 8 bits.
Il se trouve qu'il restait 2 places libres sur les entrées du multiplexeur analogique mais qu'il ne restait plus de place disponible dans les ports.

Atmel a sorti une version améliorée (atmega328pB) avec un port supplémentaire ce qui fait que maintenant A6 et A7 pourrait être numériques si arduino adaptait ses bibliothèques. Il y aurait peut être aussi des retouches de câblage à faire donc un nouveau circuit imprimé.
Trop coûteux, il n'y a plus rien à gagner avec des avr 8bits, la concurrence chinoise est trop rude.

_pepe_


_pepe_


68tjs

Une restriction sur A4 et A5 en mode I2C.
Dans cette configuration les entrées sont à la norme CMOS.
Vil <=0,3V
Vih >= 0,7 * Vcc
hystérésis min = 50 mV
cf datasheet 328p, Rev. 8271A - 12/09,  page 308

Et c'est bien gênant parce que 0,7*5 = 3,5V
J'ai testé sur 1 exemplaire, la tension min  était 3,44V , il n'y a pas de marge.

Il n'est donc pas possible de faire dialoguer par I2C un micro sous 5V et un autre sous 3,3V sans circuit d'adaptation de niveaux, c'est ballot.

Artouste

Une restriction sur A4 et A5 en mode I2C.
Dans cette configuration les entrées sont à la norme CMOS.
Vil <=0,3V
Vih >= 0,7 * Vcc
hystérésis min = 50 mV
cf datasheet 328p, Rev. 8271A - 12/09,  page 308

Et c'est bien gênant parce que 0,7*5 = 3,5V
J'ai testé sur 1 exemplaire, la tension min  était 3,44V , il n'y a pas de marge.

Il n'est donc pas possible de faire dialoguer par I2C un micro sous 5V et un autre sous 3,3V sans circuit d'adaptation de niveaux, c'est ballot.

bonjour
reserves auxquelles il faut ajouter aussi celles eventuelles dues "aux boards arduino eux-même"
---> implantation de la "LED13" selon "les boards et les versions"  :smiley-mr-green:


Go Up