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);
}