Pages: [1]   Go Down
Author Topic: Librerie  (Read 1774 times)
0 Members and 1 Guest are viewing this topic.
Offline Offline
Full Member
***
Karma: 0
Posts: 236
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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

Logged

Global Moderator
Italy
Online Online
Brattain Member
*****
Karma: 332
Posts: 22811
Logic is my way
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

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.
Logged


Offline Offline
Newbie
*
Karma: 0
Posts: 14
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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
Logged

Milano, Italy
Offline Offline
Faraday Member
**
Karma: 11
Posts: 3091
Sideralis Arduino!
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

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:
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
Logged

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

Offline Offline
Newbie
*
Karma: 0
Posts: 14
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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
Logged

BZ (I)
Online Online
Brattain Member
*****
Karma: 266
Posts: 21661
+39 349 2158303
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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


Logged

0
Offline Offline
Shannon Member
****
Karma: 131
Posts: 10473
:(){:|:&};:
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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...)
Logged

sei nuovo? non sai da dove partire? leggi qui: http://playground.arduino.cc/Italiano/Newbie

Global Moderator
Italy
Online Online
Brattain Member
*****
Karma: 332
Posts: 22811
Logic is my way
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

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  smiley-wink
Logged


Offline Offline
Newbie
*
Karma: 0
Posts: 14
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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

Grazie
Logged

Global Moderator
Italy
Online Online
Brattain Member
*****
Karma: 332
Posts: 22811
Logic is my way
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

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
Logged


Offline Offline
Newbie
*
Karma: 0
Posts: 9
ci riesco ? ma certamente
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

è 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.
Logged

Cagliari, Italy
Online Online
Tesla Member
***
Karma: 112
Posts: 7124
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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.
Logged

Code fast. Code easy. Codebender --> http://codebender.cc/?referrer=PaoloP

0
Offline Offline
Shannon Member
****
Karma: 131
Posts: 10473
:(){:|:&};:
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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
Logged

sei nuovo? non sai da dove partire? leggi qui: http://playground.arduino.cc/Italiano/Newbie

Offline Offline
Newbie
*
Karma: 0
Posts: 9
ci riesco ? ma certamente
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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.....
Logged

Pages: [1]   Go Up
Jump to: