Aller au contenu


Information tutoriel

  • Ajouté le: avril 14 2016 05:53
  • Date Updated: oct. 23 2016 06:12
  • Lectures: 45684
 


* * * * *
1 Notes

Tutoriel bibliothèque Arduino

Tutoriel Arduino permettant de créer vos bibliothèques personnalisés

Posté par Philippe-RX on avril 14 2016 05:53

La création de bibliothèques personnalisés permet de simplifier la réutilisation de code. Si vous réutilisez un bout de code souvent, je vous recommande de créer une bibliothèque pour pouvoir réutiliser votre code facilement.

Beaucoup de bibliothèques sont déjà présentes et intégrés au logiciel Arduino. Elles vous permettent de programmer plus vite et plus simplement vos systèmes.

Voilà quelques exemples de bibliothèques que vous pouvez prendre avantage à créer si vous avez un Roby : la bibliothèque Châssis, la bibliothèque PareChoc, la library Sharp. Dans le cas où vous créez un nouveau robot à partir de composants d'un autre, vous n'aurez pas à réécrire du code pour les faire marcher.

Nous allons voir comment créer une bibliothèque à travers un exemple concret : la bibliothèque Morse.

attention.png L'anglais "library" est un faux ami. La traduction française correcte est "Bibliothèque" et non pas "Librairie" ;).

Avant toute chose, n'hésitez pas à consulter le tutoriel pour débuter avec Arduino.

Sommaire :
1. Le code de départ
2. Les bibliothèques
3. Utiliser la bibliothèque dans l'IDE

Le code de départ

Code C++
 

int pin = 13;

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

void loop()
{
// SOS
// 3x POINT 3x TIRET 3xPOINT
dot(); dot(); dot();
dash(); dash(); dash();
dot(); dot(); dot();
delay(3000);
}

void dot() // point
{
digitalWrite(pin, HIGH);
delay(250);
digitalWrite(pin, LOW);
delay(250);
}

void dash() // tiret
{
digitalWrite(pin, HIGH);
delay(1000);
digitalWrite(pin, LOW);
delay(250);
}

Les parties de code que nous mettrons dans notre nouvelle bibliothèque sont clairement pinMode(pin, OUTPUT) et les fonctions dot et dash.
Voyons maintenant comment créer une bibliothèque. Nous cherchons à créer la bibliothèque Morse.

Les bibliothèques

Structure d'une bibliothèque

Les bibliothèques Arduino sont composés d'au moins deux fichiers, un fichier d'en tête finissant par .h et un fichier source finissant par .cpp.
Le fichier d'en tête contient les définitions des fonctions disponibles et le fichier source contient l'implémentation du code. C'est à dire le code à l'intérieur des fonctions qui ont été définies dans le fichier d'en tête.

Dans notre cas, le fichier d'en tête sera Morse.h et le fichier source Morse.cpp.

Le fichier d'en tête

Le contenu du fichier sera l'ensemble des déclarations des méthodes de la classe Morse qui représentera la Bibliothèque. On ajoute aussi une propriété privée : _pin qui contiendra le numéro du pin de la led à utiliser. De cette manière, lors de l'initialisation de l'objet Morse, on pourra à la fois mettre pin en mode OUTPUT et le stocker pour ne pas avoir à le redonner lorsqu'on fera un appel à une autre méthode.

Avant la déclaration de la classe, on doit s'assurer que le fichier d'en tête ne sera pas victime d'une inclusion infinie. Donc comme d'habitude en C, on ajoute une protection avec des directives de préprocesseur.
Code : C++
 

#ifndef Morse_h
// si Morse_h n'est pas défini
    
#define Morse_h
// On le défini

// Cela permet d'éviter les multiples inclusion, 
// En effet si votre programme a déjà effectué cette partie de code, 
// pas besoin de l'exécuter à nouveau ! 

// Code de la classe ICI
    
#endif // Fin si

Il manque encore une chose, pour pouvoir utiliser les constantes ou des fonctions faisant parti du core d'Arduino, il faut ajouter une inclue avant la déclaration de la classe. Cet include est :
Code : C++

#include <Arduino.h>

Donc maintenant on peut s'attaquer à la déclaration de la classe. Ce qui donne au final :
Code : C++
 

#ifndef Morse_h
#define Morse_h
    
#include <Arduino.h>
    
class Morse
{
public:
Morse(int pin);
void dot();
void dash();
private:
int _pin;
};
    
#endif

Voilà pour le fichier d'en tête. Au tour du fichier source maintenant.

Le fichier source

Le fichier source contient l'implémentation des méthodes décrites dans le fichier d'en tête. On arrive donc à ce code :
Code : C++

Morse.cpp - Bibliothèque pour code morse avec une DEL.
_________
 

*/

#include <Arduino.h>
#include "Morse.h"

Morse::Morse(int pin)
{
pinMode(pin, OUTPUT);
_pin = pin;
}

void Morse::dot()
{
digitalWrite(_pin, HIGH);
delay(250);
digitalWrite(_pin, LOW);
delay(250);
}

void Morse::dash()
{
digitalWrite(_pin, HIGH);
delay(1000);
digitalWrite(_pin, LOW);
delay(250);
}

C'est tout pour la source.

Utiliser la bibliothèque dans l'IDE

La dernière étape est l'ajout de la bibliothèque à l'IDE pour qu'on puisse l'utiliser dans nos futurs projets.

Installer la bibliothèque

Dans le dossier du logiciel Arduino se trouve un sous dossier nommé "libraries". Chaque dossier à l'intérieur de libraries représente une bibliothèque. Pour ajouter la nôtre à celles officielles, on crée un dossier au nom de notre bibliothèque. Dans notre exemple, le dossier c'est Morse et on y met les deux fichiers qu'on vient de créer soit Morse.h et Morse.cpp.

A partir de maintenant on peut voir la bibliothèque dans l'IDE au menu Sketch > Import Library si vous le relancez comme le montre la capture d'écran.

Cliquer sur cet élément du menu ajoutera le code nécessaire à l'utilisation de votre bibliothèque dans Arduino.

Résultat final

Grâce à la librairie, on peut maintenant simplifier notre code de départ. Ce qui nous permet d'avoir ce code.
Code : C++

#include <Morse.h>
    
Morse morse(13);
    
void setup()
{
}
    
void loop()
{
morse.dot(); morse.dot(); morse.dot();
morse.dash(); morse.dash(); morse.dash();
morse.dot(); morse.dot(); morse.dot();
delay(3000);
}

Ce code, évidemment, a le même effet que le code de départ.
La création de la bibliothèque est maintenant terminée.

Abusez de cette fonctionnalité pour simplifier votre code.

La création de bibliothèques vous assure la logique de votre code et diminue le temps de développement futur.
De plus, vous pouvez partager les bibliothèques pour en faire profiter la communauté !