ATmega 328 possède 5 entrées analogiques broches A0 à A4. Le CAN a une résolution de 10 bits, il convertit une tension analogique en une valeur numérique, un nombre entre 0-1023 codé sur un entier (int) en environ 100 us. Comme l'ATmega 328 est cadencé à 16 MHz, on a un échantillonnage max d'environ 10000 échantillons/s. Pour fonctionner le CAN compare la tension d'entrée An avec une tension de référence AREF. On doit toujours avoir:
La fonction analogReference() permet de modifier la tension AREF utilisée par le CAN
DEFAULT | AREF = 5V. Ici la résolution est de 5/1024 = 4.8mV. |
---|---|
INTERNAL | AREF = 1.1V. Dans ce cas la résolution est de 1.1/1024 = 1.0mV |
AREF | La tension présente sur la broche AREF est utilise comme tension de référence par le CAN. |
L'ATmega 328 n'a pas de CNA mais il est capable de générer des signaux PWM sur certaines broches (3, 5, 6, 9, 10 et 11). Le rapport cyclique (temps à l’état HIGH / temps à l’état LOW) de ces signaux rectangulaires d'une période d'environ 490 Hz peut être modifié via la fonction analogWrite(). Le rapport cyclique est codé sur un byte (0-255).
Remarque:
Les entrées analogiques peuvent être configurées en sorties numéériques comme les différentes lignes du port parallèle. Cet appel à la fonction pinMode() n'est donc pas faux:
void setup() { pinMode(A0, OUTPUT); }