Bonjour,
je voudrais compléter quelques points :
- les entrées A0, A1, ... ne sont que des ENTRÉES analogiques (ie on peut LIRE une entrée analogique). Si on les utilise en tant que telle, la pin est reliée à un convertisseur analogique vers numérique
- aucun des arduinos classiques (Uno, Méga, Nano, ...) ne possède PAS de SORTIE analogique. Il existe d'autres microcontroleurs qui ont ont, mais pas les arduinos (sauf peut être des versions plus exotiques, celles là je ne les connais pas toutes)
- en revanche, l'arduino possède 3 timers, qui permèttent de générer des créneaux sur certaines pins (les pins avec "~", ie les pins PWM). Ces créneaux ne peuvent prendre que 2 tensions à un instant donné : 0V ou 5V. Il existe deux modes de créneaux "classiques" implémentés par la librairie arduino : la bibliothèque servo (si mes souvenirs sont bon, la période est 20ms, et le temps passé à l'état haut est entre 1 et 2ms), et analogWrite, qui crée un PWM (la période est fixée, et la proportion passé à l'état haut (5V) varie de 0% (0) à 100% (255). D'autres variantes sont possible (vous pouvez choisir presque n'importe quelle période et presque n'importe quelle durée passée à l'état haut), mais ça oblige à aller écrire dans les registres directement, du coup c'est beaucoup plus compliqué à utiliser
- les PWM et autres créneaux ne sont PAS des signaux analogiques : si vous regardez à l'oscilloscope, vous verrez un créneau qui est toujours soit à 0V, soit à 5V. En revanche, vu que la fréquence est assez élevée, il y a beaucoup de composants qui se comporte COMME s'il s'agissait d'un signal analogique égal à la moyenne du signal. Par exemple une LED va en réalité clignoter très vite, tellement vite que l’œil n'arrive pas à voir les clignotements et voit la moyenne. Un moteur à courant continue est bassé sur des bobines, qui ont un effet passe bas : du coup il voit la moyenne du signal (c'est pour ça qu'on peut facilement le commander en vitesse avec un PWM). Attention, dans le cas du moteur, si on le branche direct sur une pin il y a un risque de cramer l'arduino. En revanche, d'autres composants ne supporteront pas un créneau à la place d'une tension continue : par exemple si vous avez un circuit intégré prévu pour fonctionner en 1.8V, n’essayez surtout pas d'utiliser un PWM pour créer l'alim 1.8V : il y a de fortes chances que les pics à 5V le crament (et même dans le cas contraire il ferra probablement du n'importe quoi)
- si vous avez besoin d'un vrai signal analogique, il est possible d'utiliser un PWM suivit d'un filtre passe bas (dans la version la plus simple un filtre RC, composé d'une résistance et d'un condensateur), qui permet de "lisser" le signal. A noter que dans le monde arduino il est plutôt rare d'avoir besoin d'une vraie valeur analogique. Si vous en avez besoin, alors vous êtes probablement familier des filtrages, sinon n'hésitez pas à demandez pour trouver un filtre pqsse bas adapté à votre besoin. Une autre alternative est d'utiliser un convertisseur numérique vers analogique externe, qui communiquera avec l'arduino par exemple en I2C
- si vous avez besoin de plus de PWM que disponible, il est possible de créer un "soft PWM", c'est à dire que c'est le programme qui se charge de changer la valeur des pins (il me semble qu'il y a des librairies pour ça, sinon ça se fait très bien à partir d'une interruption sur un des timers)
Bonne journée
Sandro