Association Evasion Folembray
| Les Cartes Arduino -> Entrée-Sortie Analogique |

Qu'est qu'une Entrée ou Sortie Analogique ?

Ces broches sont généralement numérotées de A0 à A12 sur les cartes Arduinos.
Elles permettent contrairement aux E/S Digitales d'osciller le courant entre 0 et 5V, tant en entrée qu'en sortie:

Exemple basique d'utilisation configuré en Sortie:
- Allumer une ampoule progressivement.

Exemple basique d'utilisation configuré en Entrée:
- Les claviers à boutons poussoirs.
- Les capteurs de distance SHARP.
- Créer un oscilloscope


Comment interpréter informatiquement ?

Voici un code complet lorsque la pin A0 est utilisée comme Entrée:
void setup(){
  pinMode(A0,INPUT);
}

void loop(){
  int Info=analogRead(A0); //Valeur lue entre 0 et 1023
}

Voici un code complet lorsque la pin A0 est utilisée comme Sortie:
void setup(){
  pinMode(A0,OUTPUT);
}

void loop(){
  analogWrite(A0,175); //Valeur envoyée entre 0 et 255
}




Exemples de codes informatiques:

- Le voltmètre:

Nous allons concevoir un voltmètre suivant ce schéma:

Pour simplifier, et étant donnée que cela est développé dans la partie électronique, nous supposons que nous allons mesurer une tension maximum de 5V à la sonde:
Le pont diviseur de tension et le régulateur 7805 n'est donc plus utile. La sonde est directement reliée au broches A0 et 0V.

Le code ci-dessous lit la valeur sur la pin A0, la convertie en tension puis l'envoie au PC pour la lecture.
float Info=0.00; // Afin d'obtenir 2 chiffres après la virgule;

void setup(){
  pinMode(A0,INPUT);
  Serial.begin (9600);
}

void loop(){
  Info=analogRead(A0); //Valeur lue entre 0 et 1023
  Info=Info*5/1023; // Converti en Volt
  Serial.print("V = ");
  Serial.print(Info);
  Serial.println("V");
  delay(100);
}



- Une LED qui s'allume progressivement...

Reliez la cathode d'une DEL à la pin A0 et l'anode à 0V.

int val=0;

void setup(){
  pinMode(A0,OUTPUT);
}

void loop(){
  val++; // Incrémente 1 à chaque passage
  analogWrite(A0,val); // Valeur lue entre 0 et 1023
  delay(10); // Laisse un délai pour ralentir la progression
  if (val>254){val=0;} // Si val est supérieur à 254, val retourne à 0.
}