// SPDX-License-Identifier: MIT // Entrada analógica: código, volts e porcentagem na mesma linha (ESP32-S3 DevKitC-1 N16R8) // // Mesma ideia da versão do Uno, com uma vantagem: aqui não é preciso converter o código // na mão. analogReadMilliVolts() devolve a tensão já em milivolts, usando a calibração // gravada de fábrica no chip. // // Ligação: trimpot de 10 kΩ entre 3V3 e GND, cursor no GPIO4 (ADC1_CH3). Nunca use o 5V. // // Arduino IDE: placa "ESP32S3 Dev Module", PSRAM "OPI PSRAM", Flash Size "16MB (128Mb)", // USB CDC On Boot: "Enabled". const int PINO_TRIMPOT = 4; // GPIO4 = ADC1_CH3 const int FUNDO_DE_ESCALA_MV = 3100; // fim da faixa que a atenuação padrão consegue medir const int INTERVALO_MS = 100; void setup() { Serial.begin(115200); Serial.println("codigo\tvolts\tporcento"); } void loop() { int valor = analogRead(PINO_TRIMPOT); // 0 a 4095 uint32_t mV = analogReadMilliVolts(PINO_TRIMPOT); // milivolts calibrados float volts = mV / 1000.0; // de milivolts para volts int porcento = (int)(mV * 100L / FUNDO_DE_ESCALA_MV); if (porcento > 100) porcento = 100; // o topo do curso satura antes do fim Serial.print(valor); Serial.print('\t'); Serial.print(volts, 2); Serial.print('\t'); Serial.println(porcento); delay(INTERVALO_MS); } // Repare no que acontece ao girar até o fim: o código para de subir em 4095 e os // milivolts param perto de 3100, mesmo com 3,3 V no cursor. É a saturação da faixa // medida, não um defeito da placa.