Ecco in modo specifico una gestione del pot digitale che avviene in modo LINEARE
Questo esempio - naturalmente - non è corretto sintatticamente : ha solo valore esplicativo.
// il pin 25 dell'esp32 è adibito alla lettura di un valore tra 0 e +3V3
Val_Pin = 25;
Val_1 = 0;pinMode(Val_Pin, INPUT);
analogReadResolution(10);
// leggo il valore, che sarà da 0 a 1024
Val_1 = analogRead(Val_Pin);// lo mappo da 0 a 100 (mi servirà per una mini meter grafico)
Range_1 = map( Val_1, 0, 1024, 0, 100);// prendo il valore da 0 a 100 e lo trasformo ancora, ma in dato valido per il pot digitale, cioè da 0x00 a 0xFF (256 step)
ValorePot = map(Range_1, 0, 100, 0, 0xFF);
**** qui credo debba avvenire la trasformazione in un valore adatto a log inverso ****
quella di @Sulimarco o di @J-M-L ----> debbo provare
// scelgo indirizzo I2C configurato per pot digitale (vedi pdf in link in post sopra)
PotAddr = 0x2D;
Wire.beginTransmission(PotAddr);// definisco il canale del pot
PotCh = 0x01;
Wire.write(PotCh);// habemus papam ! Scrivo il valore che deve assumere il pot
Wire.write(ValorePot);Wire.endTransmission();
Spero ora sia un pò più chiaro