Ho trovato in vendita su Troniqa un potenziometro a membrana, chiamato SoftPot (datasheet):
Questo potenziometro, disponibile nelle lunghezze di 10 e 20cm, modifica la sua resistenza in base al punto sul quale viene esercitata una pressione.
Il collegamento ad Arduino è molto semplice e non differisce da quanto spiegato nel tutorial ufficiale per un “normale” potenziometro: ho collegato al pin 1 (indicato dalla freccia) 5V, al pin centrale un ingresso analogico di Arduino e al pin 3 la massa.
Il valore letto nello sketch (tramite la funzione analogRead) varia da 0 a 1023, a seconda di dove viene premuta la membrana del potenziometro.
Per dimostrare un esempio pratico di utilizzo di SoftPot, ho preparato un semplice circuito utilizzando i led APA106 di cui vi ho parlato in un precedente articolo.
Ho collegato in cascata 4 led e il pin DIN del primo al pin 6 di Arduino. Ho quindi collegato SoftPot come descritto sopra, utilizzando il pin AN0 di Arduino:
Lo sketch (che potete trovare su Github) accende i led in base al valore letto dal potenziometro… per rendere l’effetto più simile ad un v-meter audio, i primi 3 led si accendono di colore rosso, mentre l’ultimo di colore verde.
Per fare questo, il valore letto viene diviso in 4 “zone”, ognuna di 256 valori. Ogni zona controlla uno dei led:
int potValue = analogRead(A0); if(potValue < 256) { pixels.setPixelColor(0, pixels.Color(potValue, 0, 0)); [...] else if(potValue < 512) { pixels.setPixelColor(1, pixels.Color(potValue - 256, 0, 0)); [...] else if(potValue < 768) { pixels.setPixelColor(2, pixels.Color(potValue - 512, 0, 0)); [...] else { pixels.setPixelColor(3, pixels.Color(0, potValue - 768, 0)); |
Ecco un filmato che mostra il funzionamento: