Chiarimenti su alcune funzioni

Salve,

una piccola domanda sulla funzione analogRead(pin):

"pin" può essere utilizzata come variabile? che tipo di variabile va usata?

Grazie.

Una variabile intera (byte o int).
http://www.arduino.cc/en/Reference/AnalogRead

.....mmmm

quindi se al posto di "pin" utilizzo una mia variabile intera, si può omettere il prefisso "A" ?

Nella fattispecie, se devo leggere l'ingresso analogico A0, posso inviare uno 0 omettendo la A ?

Grazie.

I pin analogici sono susseguenti come numerazione ai pin digitali per cui per rappresentare A0 devi usare 14 (su Arduino UNO), 15 per A1 ecc.

Eccellente, grazie.

non e' che la A e' il nome della variabile, e' proprio il nome del pin, a tua scelta nello sketch puoi chiamare il primo ingresso analogico A0 oppure 14.

In genere per rendere piu' leggibile lo sketch io lo chiamo "14" se lo uso come ingresso digitale, e lo chiamo "A0" se lo uso come ingresso analogico

quindi se tu ometti la parola A da A0 poi non ti funxiona piu' nulla in quanto il micro lavorera' sul pin digitale 0 che e' diverso dal pin A0

Per essere più precisi, Arduino definisce (#define) i pin in un file, tali definizioni sono direttive al compilatore che lo istruiscono per sostituire ogni occorrenza di A0 con 14, di A1 con 15 ecc...

Siccome lui ha detto: "posso inviare uno 0 omettendo la A?" ho pensato che volesse fare qualche manipolazione sul nome considerandolo come una stringa. Ma siccome non è così, è bene allora essere chiari.
Può benissimo fare
int INPUT_PIN=A0;
oppure
int INPUT_PIN=14;

Sono equivalenti.

+1 :slight_smile:

int INPUT_PIN=A0;

...proprio qui volevo arrivare: questa assegnazione cosa salva nella variabile di tipo int ?

Per me che sono un principiante, "A0" è una stringa....e quell'assegnazione mi sa di errore....

Grazie.

Varlux:

int INPUT_PIN=A0;

...proprio qui volevo arrivare: questa assegnazione cosa salva nella variabile di tipo int ?

Per me che sono un principiante, "A0" è una stringa....e quell'assegnazione mi sa di errore....

Grazie.

quella non è una stringa, ma una macro del preprocessore;
in pratica è possibile, mediante #define
definire dei nomi per delle costanti, numeri, stringhe letterali,istruzioni, ecc che appena prima della compilazione verranno sostituite dal preprocessore.
la sintassi del define è questa:

#define nome elenco_di_sostituzione

appena prima della compilazione il preprocessore cerca nel sorgente ogni occorrenza di "nome" e la sostituisce con "elenco_di_sostituzione"

per approfondire guarda qui:
http://www.science.unitn.it/~fiorella/guidac/guidac036.html

Grazie Alex,

avevo già apprezzato le capacità di #define, anche se in questo caso...non lo vedo scritto da nessuna parte!

Per quanto mi dite, è come se all'inizio del codice vi sia l'istruzione:

#define A0 14;

....è così?

sì, quando clicchi "compila" l'IDE arduino fa dei vari magheggi tra cui aggiungere queste definizioni

se guardi nella cartella /hardware/arduino/cores/arduino
c'è un file WProgram.h

li dentro ci sono le dichiarazioni delle entrate analogiche :smiley:

(in realtà quelle non sono definizioni di macro, ma sono variabili con qualificatore const..però alla fine il concetto è,con qualche differenza, quello....)

Ah, vero. Sono definite come semplici variabili. Mi pareva fossero definite col #define, mi sbagliavo con qualcos'altro. Cmq il principio è lo stesso.