Ecriture sur un port analogique

La carte "Grove PI+", comme la carte "Grove PI zero", ne dispose d'aucun convertisseur numérique/analogique. La carte ne peut donc pas directement piloter des sorties analogiques.

Pour pouvoir, malgrès cela, piloter un port en analogique, on va utiliser la technique de la modulation PWM sur l'ATmega328p (µControleur figurant sur la carte Grove PI et communiquant avec le Raspberry PI via un Bus I2C).

Depuis le µControleur, on pilote, les sorties digitales (préalablement paramétrées en sortie) en PWM, via la fonction C :

int pin = 5; /* pour le port D5 */
int valeur = 220; /* valeur analogique comprise entre 0 et 255 */
analogWrite(pin, valeur);
	

Le firmware du "Grove PI" contient un programme qui, sur réception d'un ordre d'écriture PWM sur un port digital via l'I2C, pilote le port en conséquence.

La blibliothèque Python du "Grove PI" contient également une fonction d'écriture analogique nommée "analogWrite" qui envoie via l'I2C l'ordre de pilotage à l'ATmega.

Sur le Raspberry PI, on effectuera donc l'écriture analogique, en Python, de la manière suivante :

pin = 5
grovepi.pinMode(pin, "OUTPUT")
grovepi.analogWrite(pin, 220)
	

Remarque : De la même façon qu'il n'est pas nécessaire de repréciser, à chaque écriture digitale, le sens de fonctionnement du port, il n'est pas nécessaire de le faire à chaque pilotage PWM.

Remarque : Tous les ports digitaux du GrovePI ne sont pas compatibles avec le pilotage PWM, on peut uniquement le faire avec les ports 3, 5, 6 et 9.