Bibliothèque

Les library (Bibliothèque en français) sont des programmes qui contiennent des fonctions supplémentaires.

Celles-ci permettent de simplifier la programmation.

Les éditeurs modernes de code permettent d'intégrer facilement de nouvelles bibliothèques (Servo.h, ...)

Nous montrons ici le principe de l'écriture d'une bibliothèque.

DéfinitionPrincipe

Nous reprenons le clignotement de deux LEDs avec une fonction.

Arduino - LED
1
const int LED1 = 4;
2
const int LED2 = 5;
3
4
void clignotement(int led, int nb) {
5
  for(int i = 0; i < nb; i++) {
6
    digitalWrite(led, HIGH); 
7
    delay(500);
8
    digitalWrite(led, LOW);
9
    delay(500);
10
  }
11
} 
12
13
void setup() {
14
  pinMode(LED1, OUTPUT);
15
  pinMode(LED2, OUTPUT);
16
}
17
18
void loop() {
19
  clignotement(LED1, 3);
20
  clignotement(LED2, 4);
21
}

Pour réaliser une bibliothèque, il faut créer deux fichiers :

  • un fichier d'en tête avec l'extension .h. Il contient les définitions des fonctions.

  • un fichier d'implémentation avec l’extension .cpp. il contient la programmation complète des fonctions.

Définitionfonction.h

1
#ifndef fonction_h   // vérifie que fonction.h n'existe pas déjà
2
#define fonction_h   // commence la définition de fonction
3
4
void clignotement(int led, int nb);  // déclaration de notre fonction
5
6
#endif  // fin de la définition

Définitionfonction.cpp

1
#include <Arduino.h>    // on inclue les bibliothèques dont on a besoin
2
#include "fonction.h"   // on inclue la définition de notre bibliothèque
3
4
void clignotement(int led, int nb) {
5
  for(int i = 0; i < nb; i++) {
6
    digitalWrite(led, HIGH); 
7
    delay(500);
8
    digitalWrite(led, LOW);
9
    delay(500);
10
  }
11
}

Définitionmain.cpp

Au final, on intègre notre bibliothèque dans le main et on l'utilise.

1
#include <Arduino.h>    // on inclue la bibliothèque dont on a besoin
2
#include "fonction.h"   // on inclue la nouvelle bibliothèque
3
4
const int LED1 = 4;
5
const int LED2 = 5;
6
7
void setup() {
8
  pinMode(LED1, OUTPUT);
9
  pinMode(LED2, OUTPUT);
10
}
11
12
void loop() {
13
  clignotement(LED1, 3);   // on peut utiliser la bibliothèque
14
  clignotement(LED2, 4);
15
}

DéfinitionProgrammation Objet

La plupart des bibliothèques sont écrites en programmation Objet. La création d'objets sort de notre champ d'étude. Cependant, nous devrons en utiliser.

Je présente ici un exemple de programmation objet qui permet de gérer l'allumage de LEDs non bloquant.

Arduino - LED
1
#include <Arduino.h>
2
3
class Led
4
{
5
private:
6
  int pinLed;
7
  unsigned long tpsOld = millis();
8
  unsigned long tpsHigh;
9
  unsigned long tpsLow;
10
11
public:
12
  Led(int, unsigned long, unsigned long);
13
  void clignotement();
14
};
15
16
Led::Led(int port, unsigned long tpsHigh, unsigned long tpsLow)
17
{
18
  pinLed = port;
19
  pinMode(pinLed, OUTPUT);
20
  this->tpsHigh = tpsHigh;
21
  this->tpsLow = tpsLow;
22
}
23
24
void Led::clignotement()
25
{
26
  unsigned long tpsNew = millis();
27
  if (tpsNew - tpsOld > tpsHigh && digitalRead(pinLed) == 1)
28
  {
29
    tpsOld = tpsNew;
30
    digitalWrite(pinLed, 0);
31
  }
32
  if (tpsNew - tpsOld > tpsLow && digitalRead(pinLed) == 0)
33
  {
34
    tpsOld = tpsNew;
35
    digitalWrite(pinLed, 1);
36
  }
37
}
38
39
Led led1(2, 500, 500);
40
Led led2(3, 1000, 500);
41
Led led3(5, 500, 1000);
42
Led led4(7, 200, 1000);
43
44
void setup()
45
{
46
}
47
48
void loop()
49
{
50
  led1.clignotement();
51
  led2.clignotement();
52
  led3.clignotement();
53
  led4.clignotement();
54
}
55

Class : définie la structure de notre objet. C'est une usine à fabriquer des objets.

Led::Led : définie l'initialisation de l'objet

Led::clignotement : méthode qui permet de faire clignoter notre objet

Led led2(3, 1000, 500) : led2 est un objet Led. La Led sur la broche 3 est initialisée pour s'allumer 1000ms et s'éteindre 500ms.

led2.clignotement() : lance la fonction (méthode) clignotement sur l'objet led2.

Supposons que la classe se trouve dans la bibliothèque Led, il nous reste dans notre code :

1
#include <Arduino.h>
2
#include <Led.h>
3
4
Led led1(2, 500, 500);
5
Led led2(3, 1000, 500);
6
Led led3(5, 500, 1000);
7
Led led4(7, 200, 1000);
8
9
void setup()
10
{
11
}
12
13
void loop()
14
{
15
  led1.clignotement();
16
  led2.clignotement();
17
  led3.clignotement();
18
  led4.clignotement();
19
}
20