Nel progetto 5, per evitare di ripetere numerose volte istruzioni che cambiano solo per il valore di alcuni parametri, abbiamo imparato a programmare una funzione che ogni volta che viene richiamata, specificando gli opportuni parametri al suo interno, esegue la sequenza di istruzioni con i parametri di volta in volta inseriti. L'avevamo chiamata "accendiesuona(...)".
Questo tipo di funzioni, che creiamo all'interno dello sketch, sono molto potenti e consentono di rendere particolarmente funzionale ed elegante il programma, ma hanno un grosso limite, ovvero che agiscono solo all'interno del programma nel quale sono state create. Ovvero se costruisco un nuovo sketch nel quale mi tornerebbe utile usare una determinata funzione utilizzata in un altro sketch, sono costretto a doverla ricreare nel nuovo sketch, mentre mi sarebbe più comodo semplicemente richiamarla. Questa è la funzione di una libreria, cioè una sequenza di istruzioni create al di fuori dello sketch principale, che può essere semplicemente richiamata (inclusa) in ogni sketch dove può tornare utile, e ciò, una volta creata la libreria, avviene semplicemente con l'istruzione #include "nome della libreria.h".
Supponiamo di voler realizzare una sequenza di istruzioni (libreria) che consenta, in base alla frase digitata o dettata, determini l'accensione, lo spegnimento o il lampeggio di un Led.
Creiamo dunque la libreria. Per quanto riguarda i collegamenti elettrici si può far riferimento a quelli del progetto 8, se non si vuol usare il dispositivo bluetooth oppure del progetto 10, con il bluetooth.
Le librerie di Aruduino sono raccolte nella sottocartella 'libraries' della cartella di 'Arduino' presente in genere nella cartella 'Documenti' (quindi nell'ordine, dal'applicazione Esplora File -> Documenti -> Arduino -> libraries ed in questa creiamo quindi una nuova cartella denominata con un nome a piacere, ad esempio, 'pilotaLed'. In questa cartella dobbiamo salvare due file.
Per realizzare questi due file apriamo l'applicazione del PC 'Appunti' o 'Blocco note' di Windows (non usiamo l'IDE di Arduino) ed incolliamo il seguente codice:
Salviamo il file di testo appena realizzato nella cartella "pilotaLed" con il nome 'pilotaLed.cpp '.
Noterete che in questo codice inserito nella libreria, includiamo (#include "Arduino.h") e (#include "pilotaLed.h") per far comprendere al compilatore che stiamo creando una nuova libreria per l'Arduino IDE. Successivamente nel void (void pilotaLed (String testo)) specifichiamo che la funzione creata nella libreria dovrà agire su stringhe (testo è il nome della variabile di tipo stringa su cui la libreria dovrà agire) e specifichiamo tutto quello che la libreria pilotaLed dovrà fare in base al contenuto di questa stringa. Nel nostro caso dovrà verificare se corrisponde ad "accendi il dispositivo", o a "spegni il dispositivo" o ancora a "lampeggia", rispettivamente accendendo, spegnendo o facendo lampeggiare il Led per 5 volte.
Adesso apriamo un nuovo file vuoto nell'applicazione 'Appunti' o 'Blocco note' di Windows ed incolliamoci il seguente codice:
#include "Arduino.h"
void pilotaLed(String testo);
e salviamolo sempre nella stessa cartella con il nome ' pilotaLed.h '
A questo punto la libreria pilotaLed() è pronta per essere utilizzata in qualsiasi codice andremo a realizzare, inserendo l'istruzione ' #include "pilotaLed.h" ' .
Chiudiamo ora l'applicazione Appunti e torniamo a lavorare nell'IDE di Arduino ove incollare e caricare, sempre ricordandosi di scollegare il Pin 0 il tempo di caricamento. il seguente codice (la prima parte è sempre la stessa usata per la ricezione di una frase dalla comunicazione seriale):
Si può notare che che prima del 'void setup()' è inclusa la libreria ' #include "pilotaLed.h" '
e poi, ricevuta la frase della seriale, contenuta nella variabile 'testo', facciamo agire la funzione realizzata nella libreria con la variabile testo 'pilotaLed(testo);'.
Se tutto è stato realizzato correttamente, scrivendo nel Monitor seriale dell'IDE, o dettando, le frasi "accendi il dispositivo", "spegni il dispositivo", "lampeggia", dovrebbe accendersi, spegnersi o lampeggiare il Led collegato al PIN 4. Altre frasi, non essendo riconosciute dalla libreria, non sortiranno alcun effetto sul Led.
Nei prossimi progetti sfrutteremo alcune delle migliaia di librerie già realizzate da altri programmatori di Arduino, utili per gestire, ad esempio, Pin per la comunicazione seriale, diversi dal Pin 0 ed 1, per pilotare un servomotore, per visualizzare i dati su un display LCD ecc..