Un potenziometro è una resistenza variabile. Possiede tre piedini:
I due laterali vanno collegati al positivo (5v) e alla massa. Quello centrale, invece, devi collegarlo a un pin analogico di Arduino. Questo perché il valore che imposti sul potenziometro è variabile; non corrisponde a 0 o 1 (come nei pin digitali). In questo modo in tale pin la tensione varierà da 0 a 5v. Arduino converte questa tensione in un numero che varia da 0 a 1023 (il numero massimo rappresentabile con 10 bit). Vediamo lo schema elettronico del progetto:
Collega il potenziometro come scritto precedentemente; il resto del circuito è uguale a quello visto nel precedente articolo.
Vediamo ora il codice. Come prima cosa definiamo una variabile. Una variabile è un valore che cambia nel tempo, che può essere di vari tipi: intero, booleano, una stringa ecc, a cui viene associato un nome. In alcuni linguaggi di programmazione non è necessario dichiarare di che tipo è una variabile. Ciò, però, non accade su Arduino, quindi, per definire la variabile devi comunicarne ad Arduino il tipo. In questo caso usiamo una variabile intera che chiamiamo “valore_potenziometro” e a cui assegniamo il valore “0” (zero):
int valore_potenziometro=0;
Scrivi ora il setup, all’interno del quale imposti il pin 13 come output e il pin analogico “A0” come input. Questo passaggio non ha bisogno di spiegazioni: il pin A0 “riceve” il dato dal potenziometro; Arduino “butta fuori” il dato sul LED.
void setup(){
pinMode(13,OUTPUT);
pinMode(A1,INPUT);
}
Passiamo ora al loop; qui dici ad Arduino di cambiare il valore della variabile “valore_potenziometro” (che inizialmente era zero) con la “lettura” del potenziometro, quindi il valore compreso tra 0 e 1023.
void loop(){
valore_potenziometro=analogRead(0);
Poi scrivi il codice del programma visto nella precedente guida, sostituendo il tempo di ritardo con il valore della variabile.
digitalWrite(13,HIGH);
delay(valore_potenziometro);
digitalWrite(13,LOW);
delay(valore_potenziometro);
}
In questo modo ottieni che:
- con il potenziometro impostato al massimo della sua resistenza, la variabile ha il valore 1023 e quindi il tempo di attesa è poco maggiore di un secondo (ricorda che il tenpo viene letto da Arduino in millisecondi)
- con il potenziometro impostato al minimo della sua resistenza, la variabile ha il valore 0 e quindi il tempo di attesa è nullo. Siccome Arduino deve comunque accendere e spegnere il LED, esso non avrà piena luminosità
Anche questa guida è finita, ti invito a commentare se non è chiaro qualche concetto/termine!
Non ho capito solo una cosa,
analogRead(1);
per tra parentisi 1 ?
In realtà era presente un errore. analogread(1) è stato sostituito con analogread(0) dove lo zero sta per il pin analogico 0 (A0) al quale è collegato il potenziometro.