Bouton sur entrée Analogique

Bonjour,
J'ai un Arduino Leonardo et tout mes pins numériques sont occupés, et j'ai besoin de mettre un bouton, alors j'aimerais savoir s'il serait possible de connecter un bouton par un pin analogique et comment ça se passe au niveau du code ?
Cordialement.

Une mise au point s'impose :

  1. Ce n'est pas chez arduino que tu trouvera une documentation correcte.
    La documentation correcte se trouve sur le site du fabricant du microcontrôleur à savoir ATMEL

  2. La dénomination des entrées/sorties de 1 à N c'est "un truc Wiring/Arduino".
    Pour le fabricant les entrées/sorties sont regroupées dans des PORTs nommé de A à Z .
    Avec les micro Atmel avr les PORTs sont 8bits et regroupent 8 E/S.
    Attention toutes les lettres ne sont pas présentent et il peut y avoir des "trous"

Dans l'IDE Wiring/Arduino il y a des utilitaires pour faire la conversion entre les deux dénominations.
On peut aussi obtenir la table de correspondance sur le net ou en la relevant sur le schéma de la carte qui est disponible sous forme de pdf.

  1. Entrées analogiques ou la confusion apportée par Arduino.
    La mesure analogique n'est pas une fonction principale des E/S des micros Atmel avr.
    La fonction principale des E/S est d'être des E/S numériques.
    Ce n'est que quand on appelle les fonctions de mesure analogique (comme analogRead() arduino) que l'E/S correspondante bascule dans sa fonction secondaire qui est la mesure analogique.
    Donc a priori toutes les entrées dites analogiques peuvent s'utiliser comme un E/S numérique classique, mais chaque micro étant différent il faut quand même vérifier.
    Remarque : Dans un micro il n'y a qu'un seul convertisseur A/D. Ce convertisseur est précédé par un multiplexeur analogique à N entrées.

Le Léonardo et son atmega32U4 :
Je n'ai jamais utilisé ce micro donc je ne connais pas bien quelles E/S Arduino affuble du terme analogiques.
J'ai consulté la datasheet du micro et j'y ai trouvé les renseignements suivants concernant les E/S qui peuvent basculer en analogique :
Chapitre : Alternates Functions
PB6 canal analogique 13
PB5 canal analogique 12
PB4 canal analogique 11
PD7 canal analogique 10
PD6 canal analogique 8
PF7 canal analogique 7
PF6 canal analogique 6
PF5 canal analogique 5
PF4 canal analogique 4
PF1 canal analogique 1
PF0 canal analogique 0
Ce qui fait 11 entrées analogiques alors que la datasheet en annonce 12, il y en a une que je n'ai pas trouvé.
Et j'aurai plutôt penser trouver une numérotation des canaux analogiques de 0 à 11 mais il y a peut-être du copier/coller entre plusieurs briques de bases de différents micros.

Il n'est pas impossible aussi qu'une entrée soit particulière et ne soit connecté qu'au multiplexeur analogique comme c'est le cas pour l'atmega328p avec les entrées analogiques 6 et 7.

Travail restant à faire :
Identifier les sorties qu'Arduino appelle analogiques, vérifier qu'elles sont bien dans le tableau précédent avec leur dénomination Atmel.
Utiliser ces fausses entrées analogique comme des E/S numériques classique.

D'accord merci, mais comment "Utiliser ces fausses entrées analogique comme des E/S numériques classique" ?

Bonjour,

Tu les utilises comme n'importe quelle e/s numérique.
Il suffit de les référencer par leur nom.
Par exemple:

  digitalRead(A1);

Je répète :
Elles ne sont entrées analogiques QUE quand on appelle analogRead().

En fait dans le micro tout est régis par des registres.
A la mise sous tension les registres des E/S sont initialisés en mode numérique.

Les fonctions qui gèrent les E/S de Wiring/arduino fonctionnent de la façon suivante :
Quand tu appelle une fonction :

  • elle vérifie que l'E/S n'a pas préalablement été configurée pour un autre mode et fait une remise à zéro des registres.
  • elle configure les registres pour la fonction ou sous-fonction choisie.

Donc tant que tu reste dans l'utilisation des fonctions Wiring/arduino tu n'as rien à faire si ce n'est utiliser les fonctions.