Go Down

Topic: Librerie (Read 2066 times) previous topic - next topic

albyy911

Mi potete spiegare cortesemente come funzionano le librerie per arduino??

in particolare quella tinywebserver per la shell ethernet, (vi premetto che l'unica esperienza che ho riguardo a librerie sono quelle di jquery).

Cmq mi bastano anche solo spiegazioni teoriche non per forza pratiche(ma sono bene accette anche quelle)

vi ringrazio per la vostra pazienza di mi regalate ogni volta:D


leo72

Una libreria è una raccolta di comandi che qualcuno ha già scritto per un determinato hardware o per eseguire un determinato calcolo, ad esempio.

Quindi, invece di scrivere ogni volta che vuoi accedere ad un display LCD tutto il software necessario, hai una libreria per accedere a quel display che devi includere nel tuo sketch.
"Includere" significa dire al compilatore di caricare un file esterno che contiene le funzioni che ti servono e considerarlo come se facesse parte del tuo sketch.

Una volta che hai incluso la libreria, tutte le funzioni di quella libreria sono disponibili nel tuo sketch e le puoi usare come qualsiasi altra funzione nativa di Arduino.

Ciao a tutti , e la prima volta che scrivo , come e poca la mia esperienza su arduino , il mio intervento qui e proprio nel fatto chè stavo cercando documentazione in merito alle Librerie , che cosa sono e cosa servono , e dalla spiegazione di Leo72 ho quindi capito in parte ciò che vorre afferrare meglio .
faccio quindi le mie domande che saranno banali per chi ha già eseguito queste funzioni , ma per chi come me e alle prime armi .... mi sono spiegato ,

1 le librerie si caricano ogni volta che si vuole sviluppare un progetto su cui richiede la libreria , esempio la libreria lcd se ho un display e che non mi servirà se ho la LAN , e così via .
2 queste librerie si trovano alcune  già pronte  alla voce  sketch >import library del compialatore arduino ,Giusto ?
3 come faccio ad importarle nel compilatore per renderle pronte ?
4 Grazie mille per l'interessamento a tutto il Team Arduino

SAluti

Federico


1 le librerie si caricano ogni volta che si vuole sviluppare un progetto su cui richiede la libreria , esempio la libreria lcd se ho un display e che non mi servirà se ho la LAN , e così via .
2 queste librerie si trovano alcune  già pronte  alla voce  sketch >import library del compialatore arduino ,Giusto ?

Giusto, giusto
Quote

3 come faccio ad importarle nel compilatore per renderle pronte ?


Se ne hai altre che intendi utilizzare puoi caricarle nella tua directory sketchbook, in una sottocartella libraries. la mia e' cosi' ad esempio

Code: [Select]

blackman@altair:~/sketchbook/libraries $ ls
AFMotor  DS1624.tar.bz2  LiquidCrystal_I2C  RadioTime   WaveHC
Dcf77    DS1803          NewSoftSerial      SRF02
DS1307   DS1803.tar.bz2  nikonIrControl     Tlc5940
DS1624   LedControl      Pattern            Tlc5940Mux
blackman@altair:~/sketchbook/libraries


ogni libreria una sottocartella sotto libreries, in sketchbook

F
Federico - Sideralis
Arduino &C: http://www.sideralis.org
Foto: http://blackman.amicofigo.com

Grazie Federico ,con la tua spiegazione sono riuscito ad afferrare il concetto ,

io uso OSX , quindi la trovo dove ?

e in oltre , approfitto successivamente e ringrazio anticipatamente :
prima di eseguire un SKETCH devo caricare le librerie ma totalmente o solo menzionarle con

#include <EEPROM.h> e lui carica la libreria .

un altra domanda , i vai TAB presenti nell'interfaccia grafica per la compialazione di Arduino , se per esempio ho 2 o 3 tab per fare un esempio premo il tasto upload per scrivere su Arduino , scrive tutti i tab o solo quello aperto ?

Grazie ancora

uwefed

No, basta l' include.
Le funzioni della libreria vengono messe nel programma compilato a secondo del uso che fai.
Dovrebbe compilare tutti i tab perche vede i tab un sketch unico.

Non so dove si trovano le librerie nell' installazione sotto OSX.

In Windows le librerie si trovano nella cartella:
"... arduino22/librarys" dove "arduino22" é la cartella dove hai installato l'IDE.
Ogni libreria deve essere messa nella cartella col stesso nome della libreria senó viene vista dal IDE ma non dal compilatore. Se fai un unzip automaticamente crea la catella giusta.
Ciao Uwe



lesto

le "tab" non sono uppate, a meno che non siano classi/librerie che sono richiamate nel file .pda

ah, se le librerie intendi modificarle/usarle per un solo progetto/chessò, puoi anche metterle nella cartella del progetto, e ti compariranno come tab.
però poi per richiamarle anziché fare
#include <EEPROM.h>
devi fare
#include "EEPROM.h"

è molto utile se per esempio stai usando delle librerie ufficiali arduino modificate, così non crei casini agli altri sketch

io suggerisco di non mischiare librerie ufficiali e non perché quelle ufficiali sono considerabili bug-free, quelle non ufficiali sono distribuite "senza garanzia"

dunque, salto il metodo di uwe per il motivo sopracitato, ne restano 2 nella tua cartella utente ci dovrebbe essere la cartella "sketchbook":
caso 1:
crei la cartella "libraries" e ci sbatti dentro la libreria dezippata. In questo modo sarà disponibile per tutti i progetti.
caso 2:
localizzi la cartella del tuo progetto, la apri e ci sbatti dentro la cartella della libreria (ricordati che in include potrebbe essere necessario mettere il nome della cartella tipo
#include "nomecartella/EEPROM.h", e la libreria sarà disponibile solo per il progetto
entrambi i metodi dovrebbero funzionare per win, mac e linux (anche se varia la posizione della cartella utente, il resto è uguale)...
anzi forse per win nelle cartelle in include non si mette / ma \\ (che sarebbe \, ma essendo \ carattere speciale ci vuole doppio...)
sei nuovo? non sai da dove partire? leggi qui: http://playground.arduino.cc/Italiano/Newbie

leo72

Anch'io consiglio di creare la cartella "libraries" sotto a /sketchbook (che, tra l'altro, è anche il metodo "consigliato") in modo da non mischiare le librerie ufficiali da quelle non ufficiali. Questa divisione ha anche un altro vantaggio: quando si aggiorna l'IDE di Arduino ad una nuova versione non si è costretti a ricopiare tutta la cartella delle lib in /arduino-00xx ed a fare un controllo per vedere se una libreria faceva parte di quelle ufficiali o meno e per non sovrascrivere con una versione vecchia una libreria ufficiale aggiornata  ;)

ok ma tutto questo su win mentre su osx la cartella dov'e ?

Grazie

leo72

Veramente io uso Linux... comunque la cartella /sketchbook la scegli tu in fase di primo avvio dell'IDE di Arduino.
Se non sai dov'è, menu dell'IDE -> Files -> Preferences e dovresti avere il suo percorso

esuccessoveramente

è passato molto tempo e sono sicuro che hai trovato dove stanno le librerie nel mac.
Caso mai lo scrivo visto che non è arrivata la risposta.
Percorso:
root(hd dove hai il sistema mac)/utenti/iltuonomediloginalpc/Libreria/Arduino

Dovrebbe essere quella.

Aggiungo una domanda perchè ho provato a cercare la risposta e questo mi sembra un ottimo topic:

Parlando terra terra le librerie...... sono dei listati già pronti che fanno una determinata azione ?

Ad esempio se dovessi far accendere il FAMOSO LED quando mi arriva un impulso x di valore [a,b] invece di scrivere sempre lo stesso codice composto di 6 o 7 righe i muovo in questa maniera:

1 scrivo le sei o 7 righe e salvo il tutto con un nome.  Quel nome è la mia libreria richiamabile ogni volta che ne ho bisogno.

Ma se è così è come il famoso Go To del basic che mandavi il computer a fare una determinata cosa per poi continuare dal punto appena sotto al Go To.

Spero di aver capito bene.

PaoloP


le "tab" non sono uppate, a meno che non siano classi/librerie che sono richiamate nel file .pda

Lesto, non ho capito questo tuo passaggio.
Io suddivido il codice in varie tab in modo che sia più leggibile. Uso, ad esempio, una tab per setup e loop, una con le funzioni di gestione del diplay, una per l'RTC e un'altra con le funzioni della Eterneth shield.
Quando compilo il codice viene letto da tutte le tab, unito e poi "uppato" sull'Arduino.

lesto



le "tab" non sono uppate, a meno che non siano classi/librerie che sono richiamate nel file .pda

Lesto, non ho capito questo tuo passaggio.
Io suddivido il codice in varie tab in modo che sia più leggibile. Uso, ad esempio, una tab per setup e loop, una con le funzioni di gestione del diplay, una per l'RTC e un'altra con le funzioni della Eterneth shield.
Quando compilo il codice viene letto da tutte le tab, unito e poi "uppato" sull'Arduino.


le parole magiche sono
Quote
a meno che non siano classi/librerie che sono richiamate nel file .pde

e non sono nemmeno tanto vere, perchè se non erro l'IDE arduino fa un piccolo lavoro di copia incolla unendo tutto il codice in un mega file unico, di cuoi però il compilatore ometterà nel file .hex le classi o le funzioni NON utilizzate, più altri piccoli trucchi.

Un piccolo esperimento, e mettere una Serial.println(micros());, poi un for vuoto da i=0 a i=36000, e poi di nuovo una millis(); il compilatore si accorge che quel for è inutile e lo elimina, quindi otterrai due risultati pressochè identici.
ed è anche "intelligente": se nel for fai a+=1; e poi la variabile "a " non la usi mai, anche quì si accorge ed esclude il for. se invece subito dopo la seconda millis() stampi su seriale "a", a questo punto il codice viene compilato nella sua interezza e noti una grossa diversità del risultato delle due chiamate millis()!!!!

a prima vista non centra molto, ma è per farvi capire (con esperimenti facili da riprodurre) che non sempre quello che scrivete viene compilato, ma anzi viene rimaneggiato anche molto profondamente
sei nuovo? non sai da dove partire? leggi qui: http://playground.arduino.cc/Italiano/Newbie

esuccessoveramente

Bene, molto bene.
Quindi le librerie sono dei pezzi di code che fanno una operazione ben definita. Quindi se ti serve fare sempre la stessa SERIE DI FUNZIONI/OPERAZIONI fai un richiamo alla LIBRARY, una volta che la labrary citata ha finito di fare la sua serie di operazioni, ritorna al punto del tuo listato/codice dal quale ha avuto il richiamo.

http://it.wikipedia.org/wiki/Libreria_software

Grazie a tutti ora ho capito perchè quando copio e incollo un listato/code mi dava una montagna di errori.....

Go Up