utiliser les port analogique comme port digital

bonjour,

voila mon problème j'ai une arduino uno mais il me manque un port digital pour un bouton poussoir qui est essentiel. j'ai entendu dire que l'on pouvais utiliser des port analogique comme port digitale est-ce vrais si oui comment ???

merci d'avance ivanutsu.

Mieux qu'un long discours un schéma : regardes celui de la page 5 de la spec de l'atmega328p (gogole recherche "atmega328p datasheet").

Tu verra que les broches physiques des accès "dit analogiques" sont reliés aux entrées digitales ET aux entrées du convertisseur analogique/digital.

Ce qui veut dire que si tu écris dans ton programme digitalWrite(Ax , HIGH) ou digitalRead(Ax) l'accès Ax sera automatiquement considéré comme digital, exactement comme pour les pins 1 à 13. Si tu écrit analogRead(Ax) l'accès sera considéré comme analogique et c'est le convertisseur analogique/digital qui sera automatiquement actionné.

C'est transparent pour toi, c'est la librairie Arduino associée qui envoie les ordres qui vont bien.

En surfant pour me faire un oscillosocpe avec mon arduino, j'étais tombé la dessus :

Avec une entrée, tu peux mettre 10 boutons ^^

Voila le site interessant : http://n.mtng.org/ele/arduino/oscillo.html

Si ca peux servir...

Le problème c'est qu'il faut envisager toutes les possibilités appui sur un bouton, deux, trois.... juste un tableau qui fera plus de 10^10 possibilité :grin:

Désolé de te contredire, Jean-François , mais pourquoi compter 10^10 solutions ou 11^11 ?

Dans le schéma que j'ai posté, quand on presse un Switch, cela a pour effet de shunter les autres (SW6 shunte les SW5 a SW1), même si on appuis sur 2 boutons.

Pour moi, on ne peux détecter qu'un bouton a la fois, et si on appuis sur un second bouton, non ?

Je suis léger en électronique, et pour moi, le courant va au moins résistif.

Je pense que l’étalonnage de chaque bouton (loi d'ohm, et des mailles), doit être bien chiant, et doit être testé avant de finaliser le projet (par contre).

SI tu peux m’éclairer :stuck_out_tongue:

Bonjour,

Ayant déjà réalisé un montage de ce type sur un vieux projet, je n'avais pas trouvé de solution simple pour supporter la lecture de plusieurs boutons simultanément. Ou alors, il faut partir sur une solution de type matrice mais qui ne sera rentable qu'avec un grand nombre de boutons.

Pour répondre à cyberfred91, quand deux résistances sont mises en parallèle (ce qui est le cas ici quand deux boutons sont appuyés) on obtient une résistance de (R1*R2)/(R1+R2). Donc, pas simple de déterminer qui est appuyé en même temps qu'un autre.

Il est aussi nécessaire de vérifier si on est dans une certaine fourchette pour chaque boutons et pas faire un test trop ciblé, le courant et le convertisseur analogique/digital n'étant pas toujours très stables et pouvant varier suivant certains paramètres. Il m'est arrivé sur ce projet de devoir changer les fourchettes de tests après une modification du montage.

Sinon, il est toujours possible d'utiliser un multiplexer digital du genre PCF 8574 quand on est en manque de pins digitales, c'est simple à utiliser et ça ajoute 8 nouvelles entrées/sorties par CI ... Et il existe aussi des versions 16 entrées/sorties aussi en I2C.

Salut,

Bon ça c'est déjà dit mais pour utiliser une broche analogique en broche numérique il suffit d'utiliser pinMode, digitalRead, ... avec Ax
Exemple :

pinMode(A0, OUTPUT);

Pour ce qui est de mettre des boutons sur une broche analogique il existe une librairie tout préte sur le playground :wink:
http://arduino.cc/playground/Code/AnalogButtons

Pour le PCF8574 j'ai fait une librairie qui reprend les fonctions de base : [Librairie Arduino] PCF8574 – PCF8575 | Skyduino - Le DIY à la française
C'est totalement transparent pour l'utilisateur.