Arduino 2019-3.1s instructions S3

INSTRUCTIONS S3

Instructions

Comme les semaines passées, voici une description des nouvelles fonctions utilisées (n’hésitez pas à cliquer sur les liens ci-dessous afin d’arriver sur la référence Arduino).

  • Les nouvelles instructions :

  • analogRead permet de lire l’état d’une broche analogique et de renvoyer une valeur numérique proportionnelle à la tension reçue. La carte Arduino comporte 6 voies, A0 à A5, connectées à un convertisseur analogique-numérique 10 bits. Cela signifie qu’il est possible de transformer la tension d’entrée entre 0 et 5V en une valeur numérique entière comprise entre 0 et 1023.

analogRead(analogInPin);

La valeur de retour de analogRead peut être stockée dans une variable entière (c’est pour cela que nous devons déclarer une variable de type int pour stocker le résultat) :

sensorValue = analogRead(analogInPin);
  • Serial est une librairie (un ensemble de fonctions) utilisée pour les communications par le port série entre la carte Arduino et un ordinateur ou d’autres composants. Ce port série permet l’envoi et la réception de suites de caractères sur les broches 0 (RX) et 1 (TX) avec l’ordinateur via le port USB. C’est pourquoi, si vous utilisez cette fonctionnalité, vous ne pouvez utiliser les broches 0 et 1 en tant qu’entrées ou sorties numériques. Si vous souhaitez visualiser le texte envoyé depuis l’Arduino vers votre ordinateur, vous pouvez utiliser le terminal série intégré à l’environnement Arduino. Il suffit pour cela de cliquer sur le bouton du moniteur série dans la barre d’outils (Rappel : il faut bien attendre la fin du téléversement avant d’ouvrir le moniteur série) :

  • Dans la fenêtre qui s’ouvre, vérifier bien que vous êtes au même débit de communication que celui utilisé dans l’appel de la fonction Serial.begin. Par défaut le débit est de 9600 :

  •   Les fonctions de la librairie Serial sont :

    • Serial.begin permet d’initialiser la communication entre Arduino et votre ordinateur. Cette fonction doit être placée dans le bloc setup, elle doit être suivi d’un seul paramètre qui correspond au débit de communication en nombre de caractères échangés par seconde (l’unité est le baud) pour la communication série. De manière classique, nous choisirons de communiquer à 9600 bauds. Pour en savoir plus sur l’utilisation du port série et des débits possibles, cliquez ici.  Sans le Serial.begin dans le bloc setup, on ne peut utiliser les autres fonctions Serial.print et Serial.println.

Serial.begin(9600);
    • Serial.print Cette fonction permet d’envoyer sur le port série une suite de caractères indiqué en paramètre. De la même façon,  Serial.println envoie une suite de caractères suivi d’un retour à la ligne :

Serial.print("Texte envoye vers l'ordinateur"); // sans retour à la ligne
Serial.println("Texte avec retour a la ligne"); // avec retour à la ligne
    • Serial.print nous sera particulièrement utile pour une tâche que vous avez déjà faite sans vous en rendre compte : le débogage. Il n’est pas rare que vous téléversiez votre code sur Arduino sans problème, mais une fois sur Arduino le comportement de votre programme n’est pas celui attendu. Des petites erreurs viendront souvent se glisser dans vos programmes car nous ne sommes malheureusement pas parfaits et qu’un oubli est vite arrivé. Grâce à Serial, il nous sera possible d’indiquer quand nous allumons une LED ou lorsque nous faisons un test… Il nous sera ainsi possible de suivre le déroulement de notre programme ! Mais ce n’est pas tout, Serial.print et Serial.println peuvent également afficher la valeur de variables si nous indiquons un nom de variable en paramètre :

Serial.print("sensor = " );                       
Serial.print(sensorValue);
    • map permet de faire passer une valeur située dans un intervalle vers un autre.  Les paramètres de ces fonctions sont les suivants :

      • variable qui se trouve dans l’intervalle initial

      • début de l’intervalle initial

      • fin de l’intervalle initial

      • début de l’intervalle visé

      • fin de l’intervalle visé

Grâce à cette fonction, nous allons donc nous retrouver avec une valeur proportionnelle

map(sensorValue, 0, 1023, 0, 255); // sensorValue passe de l'intervalle 0→1023 vers 0→255
    • analogWrite va être utilisé dans ce programme pour moduler l’intensité lumineuse d’une LED branchée sur la broche spécifiée avec le premier paramètre. Dans les semaines passées, nos LED étaient allumées ou éteintes. L’intérêt de analogWrite est de pouvoir régler l’intensité lumineuse en spécifiant un nombre (compris entre 0 et 255) dans le second paramètre de la fonction :

analogWrite(11, 0);   // éteint complètement la LED branché sur la broche 11
analogWrite(11, 90);  // allume un tout petit peu la LED branché sur la broche 11
analogWrite(11, 255); // allume complètement la LED branché sur la broche 11