Creare Libreria per Arduino

Ho avuto la necessità di realizzare una libreria con Arduino, pertanto raccolgo di seguito un po' di info raccolte.

Percorso

Intanto le librerie di Arduino vanno posizionate nella cartella libraries che si trova in Documenti/Arduino/libraries (MacOS), poi sono costituiti da 3 file, il primo formato .cpp, il secondo .h e il terzo si chiama keyword.txt. Sono posizionati tutti all'interno di una cartella che da il nome alla libreria, il quale nome corrisponderà al nome dato ai 2 files .cpp e .h. Se dovessimo preparare anche un file di esempio di utilizzo della libreria, questo verrebbe posizionato in una cartella di nome "examples" da posizionare all'interno della cartella stessa della libreria. Ricapitolando... percorso: Documenti/Arduino/libraries/esempio nella qual cartella ci saranno esempio.cpp, esempio.h e keyword.txt.

___________________________________________________

Esempio.h

#ifndef Esempio_h       // controlliamo se Esempio_h è già stato definito in precedenza.                                                               In caso affermativo salta tutto fino a endif

#define Esempio_h      // definizione di Esempio_h

#include "Arduino.h"    // richiamo della libreria di Arduino e di tutte le sue funzioni essenziali

class Esempio{           // definizione della classe, la quale conterrà tutte le variabili e funzioni

    public:

          Esempio(int pin);

          void Var1();

          void Var2();

     private:

          int _pin;

};

#endif
___________________________________________________

Esempio.cpp

#include "Arduino.h"

#include "Esempio.h"

Esempio::Esempio(int pin){

     pinMode(pin, OUTPUT);

     _pin = pin;

}

void Esempio::Var1(){

     digitalWrite(_pin, HIGH);

     delay(500);

     digitalWrite(_pin, LOW);

}

void Esempio::Var2(){

     digitalWrite(_pin, HIGH);

     delay(1000);

     digitalWrite(_pin, LOW);

}
____________________________________________

keyword.txt

Esempio KEYWORD1    // Colore arancione, da assegnare alle classi

Var1 KEYWORD2          // Marrone, per le funzioni

Var2 KEYWORD2         // Utilizzare Tab tra il nome dell'oggetto e keyword, altrimenti non va

____________________________________________

Esempio.ino

#include

Esempio esempio1(13);            // qui assegniamo la libreria alla sua istanza e al pin da gestire

Esempio esempio2(8);

void setup(){ }

void loop(){

     esempio1.Var1(); esempio1.Var2();                                            //istanza 1

delay(3000);

     esempio2.Var1(); esempio2.Var2(); esempio2.Var1();              //istanza 2

delay(5000); 

}