// SPDX-License-Identifier: MIT // Entrada analógica: código, volts e porcentagem na mesma linha (Arduino Uno) // // Imprime três colunas separadas por tabulação. É o formato que o Serial Plotter // entende: cada coluna vira uma curva. // // Ligação: trimpot de 10 kΩ com as pontas em 5V e GND e o cursor em A1. const int PINO_TRIMPOT = A1; const float TENSAO_REFERENCIA = 5.0; // AVCC: a referência padrão do Uno const float DEGRAUS = 1024.0; // 2^10 combinações; o código vai de 0 a 1023 const int INTERVALO_MS = 100; void setup() { Serial.begin(9600); Serial.println("codigo\tvolts\tporcento"); // cabeçalho sem acento: a Serial é ASCII } void loop() { int valor = analogRead(PINO_TRIMPOT); // O ".0" das constantes obriga a conta a ser feita em ponto flutuante. // Escrito com inteiros (valor * 5 / 1024) o resultado seria truncado para 0, 1, 2... float volts = valor * TENSAO_REFERENCIA / DEGRAUS; // valor * 100 passaria de 32767 no topo da escala e estouraria o int. // O "L" do 100L manda fazer a conta em long antes de dividir. int porcento = valor * 100L / 1023; Serial.print(valor); Serial.print('\t'); Serial.print(volts, 2); // 2 casas decimais Serial.print('\t'); Serial.println(porcento); delay(INTERVALO_MS); } // Por que dividir por 1024 e não por 1023? 1024 é o número de degraus da escada, e é a // fórmula do fabricante do chip. Com 1024, o código 1023 vira 4,995 V, um degrau abaixo // da referência. A diferença entre as duas contas é de no máximo um degrau (4,88 mV), só no topo.