# [Programa] Potenciómetro

#### Objectivo:

Utilizar o *ESP32-WROOM-32E DevKitC v4* \[3\] para ler valor de tensão de saída de um potenciómetro.

#### Lista de material:

- *ESP32-WROOM-32E DevKitC v4*
- Breadboards
- Potenciómetro de 10kΩ
- Fios de ligação
- Cabo USB micro

[![setup_a.png](https://kb.deec.uc.pt/uploads/images/gallery/2023-08/scaled-1680-/setup-a.png)](https://kb.deec.uc.pt/uploads/images/gallery/2023-08/setup-a.png)

#### Contextualização:

Um potenciómetro é um componente eletrónico que incorpora uma resistência elétrica ajustável \[5\].

##### Potenciómetro

Um potenciómetro possui tipicamente três terminais incluindo um contacto ajustável, deslizante ou rotativo, que forma um divisor de tensão ajustável \[5\].

<table border="0" id="bkmrk--0" style="border-collapse: collapse; width: 100%; border-style: none;"><tbody><tr><td style="width: 24.9691%;">[![eg_out_2.png](https://kb.deec.uc.pt/uploads/images/gallery/2023-08/scaled-1680-/eg-out-2.png)](https://kb.deec.uc.pt/uploads/images/gallery/2023-08/eg-out-2.png)</td><td style="width: 24.9691%;">[![eg_0_2.png](https://kb.deec.uc.pt/uploads/images/gallery/2023-08/scaled-1680-/eg-0-2.png)](https://kb.deec.uc.pt/uploads/images/gallery/2023-08/eg-0-2.png)</td><td style="width: 24.9691%;">[![eg_120_2.png](https://kb.deec.uc.pt/uploads/images/gallery/2023-08/scaled-1680-/eg-120-2.png)](https://kb.deec.uc.pt/uploads/images/gallery/2023-08/eg-120-2.png)</td><td style="width: 24.9691%;">[![eg_240_2.png](https://kb.deec.uc.pt/uploads/images/gallery/2023-08/scaled-1680-/eg-240-2.png)](https://kb.deec.uc.pt/uploads/images/gallery/2023-08/eg-240-2.png)</td></tr></tbody></table>

##### ESP32-WROOM-32E DevKitC v4

Apesar de se aconselhar a consulta da página do fabricante sobre o kit *ESP32-WROOM-32E DevKitC v4* \[3\] é possível considerar que em determinadas situações os terminais de entrada do microcontrolador ESP32 podem converter tensão (algo como uma quantidade analógica entre 0V e 3.3V) em um valor digital inteiro entre 0 e 4095 (num total de 2<sup>12</sup>=4096 representações possíveis, \[1\]\[2, SAR ADC\]).

[![esp32.png](https://kb.deec.uc.pt/uploads/images/gallery/2023-08/scaled-1680-/esp32.png)](https://kb.deec.uc.pt/uploads/images/gallery/2023-08/esp32.png)

#### Procedimento:

Atentando ao objetivo enunciado, e escolhendo os terminais 33 (para o terminal de saída do potenciómetro), 3.3V e o GND do ESP32 como referência deve considerar-se o seguinte circuito:

[![interruptor_montagem_2.png](https://kb.deec.uc.pt/uploads/images/gallery/2023-08/scaled-1680-/Vi0interruptor-montagem-2.png)](https://kb.deec.uc.pt/uploads/images/gallery/2023-08/Vi0interruptor-montagem-2.png)

##### Instruções:

(para uma primeira utilização do ESP32, sugere-se o tutorial *Primeiro Programa* \[4\])

- Montar o circuito esquematizado anteriormente (ver Secção **Montagem exemplificativa**, para mais detalhe)
- Ligar a placa ESP32 ao computador por via de cabo USB micro
- Abrir o IDE Arduino
- Selecionar o dispositivo ESP32 adequado
- Copiar o seguinte código

```C
/*
* Potenciómetro
*/

float floatMap(float x, float in_min, float in_max, float out_min, float out_max) {
	return (x - in_min) * (out_max - out_min) / (in_max - in_min) + out_min;
}

// a função setup é executada pontualmente quando o botão reset é premido ou 
// a placa é alimentada:
void setup() {
	// inicializa a comunicação série a 115200 bits por segundo:
	Serial.begin(115200);
}

// a função loop é executada sucessivamente, uma e outra vez, e por aí em diante
void loop() {
	// leitura do valor de entrada no terminal analógico GPIO33:
	int analogValue = analogRead(33);
	// Normalização dos valores lidos para a tensão do potenciómetro
	float voltage = floatMap(analogValue, 0, 4095, 0, 3.3);
	
	// print out the value you read:
	Serial.print("valor lido: ");
	Serial.print(analogValue);
	Serial.print(", tensão: ");
	Serial.println(voltage);
	delay(1000);
}
```

- Compilar e carregar o código para a placa ESP32

[![arduino.png](https://kb.deec.uc.pt/uploads/images/gallery/2023-08/scaled-1680-/arduino.png)](https://kb.deec.uc.pt/uploads/images/gallery/2023-08/arduino.png)

- Verificar o resultado

<table border="0" id="bkmrk--4" style="border-collapse: collapse; width: 100%; border-style: none;"><tbody><tr><td style="width: 49.9383%;">[![out_hand_2.png](https://kb.deec.uc.pt/uploads/images/gallery/2023-08/scaled-1680-/out-hand-2.png)](https://kb.deec.uc.pt/uploads/images/gallery/2023-08/out-hand-2.png)</td><td style="width: 49.9383%;">[![serial_out_eg.png](https://kb.deec.uc.pt/uploads/images/gallery/2023-08/scaled-1680-/serial-out-eg.png)](https://kb.deec.uc.pt/uploads/images/gallery/2023-08/serial-out-eg.png)</td></tr></tbody></table>

#### Montagem exemplificativa:

<table border="0" id="bkmrk--5" style="border-collapse: collapse; width: 100%; border-style: none;"><tbody><tr><td style="width: 33.3745%;">[![setup_a_1.png](https://kb.deec.uc.pt/uploads/images/gallery/2023-08/scaled-1680-/setup-a-1.png)](https://kb.deec.uc.pt/uploads/images/gallery/2023-08/setup-a-1.png)</td><td style="width: 33.3745%;">[![setup_b_1.png](https://kb.deec.uc.pt/uploads/images/gallery/2023-08/scaled-1680-/setup-b-1.png)](https://kb.deec.uc.pt/uploads/images/gallery/2023-08/setup-b-1.png)</td><td style="width: 33.3745%;">[![setup_a_2.png](https://kb.deec.uc.pt/uploads/images/gallery/2023-08/scaled-1680-/setup-a-2.png)](https://kb.deec.uc.pt/uploads/images/gallery/2023-08/setup-a-2.png)</td></tr><tr><td style="width: 33.3745%;">[![setup_a_3.png](https://kb.deec.uc.pt/uploads/images/gallery/2023-08/scaled-1680-/setup-a-3.png)](https://kb.deec.uc.pt/uploads/images/gallery/2023-08/setup-a-3.png)</td><td style="width: 33.3745%;">[![setup_b_2.png](https://kb.deec.uc.pt/uploads/images/gallery/2023-08/scaled-1680-/setup-b-2.png)](https://kb.deec.uc.pt/uploads/images/gallery/2023-08/setup-b-2.png)</td><td style="width: 33.3745%;">[![setup_a_4.png](https://kb.deec.uc.pt/uploads/images/gallery/2023-08/scaled-1680-/setup-a-4.png)](https://kb.deec.uc.pt/uploads/images/gallery/2023-08/setup-a-4.png)</td></tr><tr><td style="width: 33.3745%;">[![setup_a_5.png](https://kb.deec.uc.pt/uploads/images/gallery/2023-08/scaled-1680-/setup-a-5.png)](https://kb.deec.uc.pt/uploads/images/gallery/2023-08/setup-a-5.png)</td><td style="width: 33.3745%;">[![setup_b_3_2.png](https://kb.deec.uc.pt/uploads/images/gallery/2023-08/scaled-1680-/setup-b-3-2.png)](https://kb.deec.uc.pt/uploads/images/gallery/2023-08/setup-b-3-2.png)</td><td style="width: 33.3745%;">[![setup_a_6_2.png](https://kb.deec.uc.pt/uploads/images/gallery/2023-08/scaled-1680-/setup-a-6-2.png)](https://kb.deec.uc.pt/uploads/images/gallery/2023-08/setup-a-6-2.png)</td></tr><tr><td style="width: 33.3745%;">[![setup_a_6_2.png](https://kb.deec.uc.pt/uploads/images/gallery/2023-08/scaled-1680-/setup-a-6-2.png)](https://kb.deec.uc.pt/uploads/images/gallery/2023-08/setup-a-6-2.png)</td><td style="width: 33.3745%;">[![setup_b_4_2.png](https://kb.deec.uc.pt/uploads/images/gallery/2023-08/scaled-1680-/setup-b-4-2.png)](https://kb.deec.uc.pt/uploads/images/gallery/2023-08/setup-b-4-2.png)</td><td style="width: 33.3745%;">[![setup_a_8_2.png](https://kb.deec.uc.pt/uploads/images/gallery/2023-08/scaled-1680-/setup-a-8-2.png)](https://kb.deec.uc.pt/uploads/images/gallery/2023-08/setup-a-8-2.png)</td></tr></tbody></table>

#### Referências:

\[1\] Ltd. Espressif Systems Co. Analog to Digital Converter (ADC). url: [https://docs.espressif.com/projects/esp-idf/en/release-v4.4/esp32/api-reference/peripherals/adc.html](https://docs.espressif.com/projects/esp-idf/en/release-v4.4/esp32/api-reference/peripherals/adc.html) (acedido em 23/08/2023).  
\[2\] Ltd. Espressif Systems Co. ESP32 Technical Reference Manual. Versão 5.0, pp. 631–637. url: [https://www.espressif.com/sites/default/files/documentation/esp32\_technical\_reference\_manual\_en.pdf](https://www.espressif.com/sites/default/files/documentation/esp32_technical_reference_manual_en.pdf) (acedido em 18/08/2023).  
\[3\] Ltd. Espressif Systems Co. ESP32-DevKitC V4 Getting Started Guide. url: [https://docs.espressif.com/projects/esp-idf/en/latest/esp32/hw-reference/esp32/get-started-devkitc.html](https://docs.espressif.com/projects/esp-idf/en/latest/esp32/hw-reference/esp32/get-started-devkitc.html) (acedido em 18/08/2023).  
\[4\] Paulo Menezes. Artigos de Suporte - DEEC - Kit Eletrónica - Primeiro Programa. url: [https://kb.deec.uc.pt/books/deec/page/primeiro-programa](https://kb.deec.uc.pt/books/deec/page/primeiro-programa) (acedido em  
17/08/2023).  
\[5\]Wikipedia. Potentiometer. url: [https://en.wikipedia.org/wiki/Potentiometer](https://en.wikipedia.org/wiki/Potentiometer) (acedido em 23/08/2023).