IPA06 – Découverte des exemples arduino.

Découverte des exemples arduino.

 

Voici une succession d’exemples, livrés avec Arduino IDE, décortiqués afin que vous puissiez saisir chacune de leur particularités. Alors préparez vous à suivre les exemples arduino.

En première page, nous verrons les exemples:

  • Blink: découverte de la fonction delay.
  • Blink without delay: Comment temporiser son programme avec la fonction millis.

En deuxième page, nous verrons les exemples:

  • Analog input: Comment lire une entrée analogique pour modifier une durée.
  • Read analog voltage: Comment lire une entrée analogique sur votre PC.
  • Analog In Out Serial: Faire varier l’intensité lumineuse d’une LED et voir leurs valeurs sur votre PC.

En troisième page, nous verrons les exemples:

  • Fading: Utilisons des boucles FOR.
  • Smoothing: Utilisons un tableau.
  • While statement conditionnal: Boucle WHILE et appel de fonction.

 


 

Blink: Découverte de la fonction Delay.

Matériel nécessaire:
  • 1 LED + sa résistance (environ 220Ω).
Localisation du programme:

Ce programme se trouve dans Fichier -> Exemples -> 01.Basic -> Blink.

But du programme:

Le but de ce programme sera de faire clignoter une LED.

Explications du programme:

Je passerai sur la fonction setup() qui ne fait que configurer la borne 13 comme une sortie.

Voici ce que contient la fonction loop():

Arduino exemple blink 01

 

Vous pouvez constater que l’on alterne le  SET/RESET de la sortie 13, mais qu’une fonction delay(1000) vient s’intercaler.

Pour commencer, voici le lien de la fonction delay: Fonction delay() via le site arduino.

Cette fonction est une fonction de temporisation. Son argument (la valeur entre paranthèse) est un unsigned long qui représente le temps durant lequel le programme se mettra en « pause » en milliseconde (1 sec = 1 000 ms). Donc, dans ce programme, la cadence de clignotement sera de 1 seconde.

ATTENTION: Le programme met réellement l’arduino en pause, ce qui fige tout le système! Imaginons que vous fassiez un delay(60000) (soit une minute). Et bien durant une minutes, le programme ne pourra plus faire quoi que ce soit! Cette fonction est donc réservée à des programme très simple qui ne font qu’une seule chose (comme clignoter une LED). Si vous voulez utiliser des temporisation dans des programmes effectuant plusieurs actions, vous devez utiliser la fonction millis() (avec un peu de chance ce sera le prochain exemple 🙂 ).

Blink without delay: Comment temporiser son programme avec la fonction millis.

Matériel nécessaire:
  • 1 LED + sa résistance (environ 220Ω).
Localisation du programme:

Ce programme se trouve dans Fichier -> Exemples -> 02.Digital -> Blinkwithoutdelay.

But du programme:

Le but de ce programme sera de faire clignoter une LED reliée à l’arduino avec la fonction millis.

Explications du programme:

Nous venons de voir les limites de la fonction delay(). Alors voila comment régler le problème en utilisant la fonction millis dont voici la documentation officielle: Documentation de la fonction millis du site arduino.

Cette fonction calcul en millisecondes depuis combien de temps l’arduino est démarré et stocke le résultat dans un unsigned long (soit de 0 à 4,294,967,295). Donc à chaque fois que le programme inversera l’état de la LED, il « mémorisera » la valeur de millis() à cet instant. Puis à chaque cycle, il soustraira la valeur de « millis en cours » à la valeur de « millis mémorisée », ce qui lui donnera précisément la valeur du temps depuis lequel il a changé l’état de la LED.

  • Initialisation des variables
    Cette partie peut être considérée comme l’initialisation des variable. Elle aurait pu se trouver dans setup(), mais l’auteur a préféré la placer avant pour ne pas trop encombrer celle ci et n’y mettre que le paramétrage des bornes en entrée/sortie.
    arduino blink without delay initialisation des variablesconst int ledPin = 13: Nous assignons la valeur 13 à la constante ledPin afin de pouvoir utiliser celle ci pour traiter cette sortie dans notre programme. int ledState = LOW: ledState sera l’image de l’état de notre LED. Ici nous l’initialisons à l’état bas car nous voulons qu’au moment où nous démarrerons notre arduino, la LED soit éteinte.- unsigned long previousMillis = 0: Sert à mémoriser la valeur qu’avait millis() lors de la dernière action. Encore une fois cette variable est initialisée à 0 au lancement du programme.- const long interval = 1000: Durée de la temporisation en milliseconde. C’est la valeur de cette constante que vous devez modifier si vous souhaitez modifier le temps que durera votre temporisation.
  • Paramétrage de la sortieLa fonction setup() ne comprend que la déclaration de la borne ledPin (soit la borne 13) comme étant une sortie.
  • Programme principal
    Programme principal d'une fonction millis
    – unsigned long currentMillis = millis(): Nous commençons par déclarer une variable currentMillis de type Ulong que nous rafraîchirons à chaque cycle par la valeur contenue dans millis(). if (currentMillis – previousMillis >= interval) {: Ici se trouve un if dont l’accolade fermante se trouve en bas du programme (ce qui veut dire que si la condition n’est pas vrai, le programme ne fait rien et reboucle instantanément). Nous soustrayons la variable représentant la valeur contenue dans la fonction millis() à une variable que nous avons initialisé à 0 et que nous n’écrierons que lorsque nous rentrerons dans la boucle. Si le résultat de cette soustraction est inférieur à interval (initialisé à 1000 ci dessus), alors le programme entre dans le if.– previousMillis = currentMillis: Passage important! Si le programme est arrivé à cette ligne c’est qu’il vient d’entrer dans le if. Alors à cet instant il mémorise la valeur de currentMillis (qui est en réalité la valeur de millis) dans previousMillis. Dans la suite du programme, comme la valeur de currentMillis continuera d’évoluer mais previousMillis restera à cette valeur, nous pourrons connaitre depuis combien de temps le programme n’est pas entré dans le if en faisant currentMillis – previousMillis.if (ledState == LOW): On regarde si la valeur de ledState vaut LOW.– ledState = HIGH: Si c’est le cas nous lui assignons la valeur HIGH.– else: sinon c’est sue la valeur de ledState vaut HIGH.– ledState = LOW: Alors nous lui assignons la valeur LOW.digitalWrite(ledPin, ledState): Enfin juste afin de sortir du premier if (if (currentMillis – previousMillis >= interval), nous mettons la sortie ledPin (la borne 13) à la même valeur que son image modifiée ci dessus ledState.- Puis le programme reboucle la boucle loop().

Ainsi grâce à la fonction millis(), vous pourrez temporiser une action sans pour autant mettre tout votre programme en pause (comme le ferai delay()). A chaque cycle, le programme regardera si le résultat de la soustraction du temps actuel – la valeur mémorisé et si celui ci est supérieur à interval, alors il effectuera l’action temporisée, sinon il la passera et continuera le programme.