La carte "Grove PI+", comme la carte "Grove PI zero", dispose de trois ports "A0", "A1" et "A2" reliés à des convertisseurs analogiques/numériques (ADC) 10 bits de l'ATmega328p (µContrôleur figurant sur la carte et communiquant avec le Raspberry PI via un Bus I2C). Ces trois ports sont donc utilisables uniquement en entrée et il n'est donc pas nécessaire de spécifier le sens d'utilisation. Une tension comprise entre 0 et 5 Volts sera convertie linéairement en un entier entre 0 et 1023.
Depuis le µContrôleur, on lit les valeurs via la fonction C :
int pin = 0; /* pour le port A0 */ int valeur = analogRead(pin);
Le firmware du "Grove PI" contient un programme qui, sur réception d'un ordre de lecture d'un port analogique (compris entre 0 et 2) via l'I2C, fournit en retour la valeur convertie.
La blibliothèque Python du "Grove PI" contient également une fonction de lecture analogique nommée "analogRead" qui envoie via l'I2C l'ordre de lecture à l'ATmega et réceptionne en retour la valeur convertie.
Sur le Raspberry PI, on effectuera donc la lecture d'un port analogique de la manière suivante :
pin = 0 valeur = grovepi.analogRead(pin)
Remarque : Quand on manque d'entrée digitale pour son application, il est possible d'utiliser un port analogique libre pour y connecter une sonde digitale tel qu'un interrupteur. On effectuera la conversion de la valeur sur 10 bits, par programmation, en un simple booleen.
pin = 0 valeur = (grovepi.analogRead(pin)>511)
On récupère alors True ou False, dans la variable "valeur".