Communication USB entre un arduino et son PC, exemple readAnalogVoltage.

Communication USB entre un arduino et son PC, exemple readAnalogVoltage.

Continuons nos premiers pas avec les entrées analogiques via l’exemple ReadAnalogVoltage qui consiste à afficher  la valeur d’une entrée analogique sur le moniteur d’un PC par l’intermédiaire du port USB. Cet article reprendra beaucoup d’éléments de l’exemple AnalogInput(que je vous invite à voir à ce lien) notamment par rapport au câblage du potentiomètre, donc si vous êtes un peu perdu allez y jeter un œil. Maintenant voyons comment établir une ommunication USB entre un arduino et son PC…

Analyse du programme d’exemple: ReadAnalogVoltage.

Où trouver le programme ReadAnalogVoltage?

localisation du programme readAnalogVoltage

Fonction setup().

readanalogvoltage setup 01

La fonction setup ne contient qu’une seule ligne, l’objet Serial. Une recherche des terme serail et begin sur le site officiel arduino vous conduit à cette page: definition de Serial.begin. Vous pouvez y lire que Serial.begin prend comme paramètre speed une variable de type long , et éventuellement un autre paramètre (facultatif) nommé config que nous n’utiliserons pas pour l’instant.

Le format que nous utiliserons sera donc sous la forme Serial.begin(speed) avec pour valeur de speed la vitesse de communication entre votre arduino et votre PC en bit par second. Ici nous communiquerons à une vitesse de 9600 bits par secondes.

Fonction loop().

// the loop routine runs over and over again forever:
void loop() {
// read the input on analog pin 0:
int sensorValue = analogRead(A0);
// Convert the analog reading (which goes from 0 - 1023) to a voltage (0 - 5V):
float voltage = sensorValue * (5.0 / 1023.0);
// print out the value you read:
Serial.println(voltage);
}
  • Ligne 4: Nous commençons par l’acquisition de la valeur du potentiomètre relié sur l’entrée analogique A0 (pour plus de précision se référer à l’exemple analogInput). Vous pourrez remarquer qu’ici l’auteur n’a pas fait le choix de renommer A0 (contrairement à l’exemple analogInput où A0 avait été renommé sensorPin).
  • Ligne 6: Nous faisons ici une « mise à l’échelle ». Petite explication, le potentiomètre envoie à l’entrée analogique A0 une tension variant de 0 à 5V. L’arduino lui convertit directement cette tension en un nombre de points allant de 0 à 1023, ce qui implique que nous ne connaissons pas directement la tension présente sur notre entrée. C’est l’utilité d’une mise à l’échelle, elle convertit une valeur « lue par l’arduino » en « valeur physique réelle ».
    Quelques exemples:
    ⇒L’arduino lit 0 point: Tension = 0 * (5.0/1023.0) = 0V
    ⇒L’arduino lit 1023 point: Tension = 1023 * (5.0/1023.0) = 5V
    ⇒L’arduino lit 511 point: Tension = 511 * (5.0/1023.0) = 2.497V
    ⇒L’arduino lit 841 point: Tension = 841 * (5.0/1023.0) = 4.11V
    Admettez que 4.11 volt est quand même plus parlant que 841 points!
  • Ligne 8: Nous utilisons la fonction Serial.println(voltage) pour envoyer la valeur de l’entrée analogique mis à l’echelle au moniteur serie du logiciel arduino IDE.

Amélioration du programme (facultatif).

Afin d’illustrer la mise à l’échelle, nous allons apporter une légère modification au programme d’origine.

Nous allons envoyer en premier la variable sensorValue (soit le nombre de points), puis une chaine de caractère afin que l’affichage soit plus clair sous la forme de  » — « , enfin nous afficherons la valeur contenue dans la variable voltage (soit la tension mise à l’echelle).

La boucle loop() deviendra donc:

// the loop routine runs over and over again forever:
void loop() {
// read the input on analog pin 0:
int sensorValue = analogRead(A0);
// Convert the analog reading (which goes from 0 - 1023) to a voltage (0 - 5V):
float voltage = sensorValue * (5.0 / 1023.0);

//La modification commence ici
Serial.print(sensorValue);   //On affiche le nombre de points sans retour à la ligne
Serial.print(" --- ");        //On affiche ce qui est comprit entre les guillemets, soit ---
// Fin de la modification

// print out the value you read:
Serial.println(voltage);
}

Cette arrangement ne devrez pas être trop difficile à comprendre, la seule nouveauté étant la fonction Serial.print qui est la même chose que Serial.println mais sans le retour à la ligne (voir la définition du site arduino / genuino).

Cablage de l’exemple arduino readAnalogVoltage.

Celui ci est exactement le même que l »exemple analogInput si ce n’est que la LED n’est plus utilisée. Vous pouvez le retrouvez en cliquant sur ce lien.

 

Utilisation du moniteur serie d’arduino IDE.

Le moniteur série est une interface servant à faire le lien entre votre PC et votre arduino. Vous pouvez y accéder via le menu Outil/Moniteur série, ou en cliquant sur la loupe présente en haut à droite d’arduino IDE.

moniteur serie arduino

Le moniteur série s’ouvre, vous y trouverez:

configuration moniteur serie arduino

  • En bleu un champ vous permettant d’entrer des commandes à envoyer à l’arduino (non utilisé dans cet exemple).
  • En orange la zone affichant les valeurs provenant de l’arduino, nous y voyons donc en premier notre nombre de points, notre séparateur sous la forme de trois tirets, puis notre tension mise à l’échelle.
  • En rouge, la vitesse de communication, ce champs doit être à la même valeur que Serial.begin(XXXX) programmée dans la fonction setup()!

Conclusion sur l’entrée analogique arduino et la communication USB entre un arduino et son PC.

Voila qui conclut nos exemples traitants des entrées analogiques et introduit la communication entre différents systèmes. Vous vous apercevrez rapidement que le moniteur série est un outil idéal lors de vos phase de débogage. La prochaine fois nous attaquerons le dernier élément faisant partie des E/S: les sorties analogiques.

En attendant je vous rappel que si vous avez des question vous pouvez accéder au forum en cliquant ici.

Bonne bidouilles!


Réseaux sociaux:

Facebook: https://www.facebook.com/automacile/

Twitter: https://twitter.com/Automacile

Youtube: https://www.youtube.com/channel/UChYxOrIAM-SdgvE3gTkGnzA

Liens externes:

Site arduino / genuino, definition de Serial.begin: https://www.arduino.cc/en/Serial/Begin

Site arduino / genuino, definition de Serial.println:https://www.arduino.cc/en/Serial/Println

Site arduino / genuino, definition de Serial.print:https://www.arduino.cc/en/Serial/Print

Liens internes:

Exemple AnalogInput: http://automacile.fr/entree-analogique-arduino-exemple-analoginput/

Utilisation d’un potentiometre: http://automacile.fr/potentiometre-et-diviseur-de-tension/

About the Author: maxpeigne