# [Programa] LED e interruptor

#### Objetivo:

Utilizar o ESP32-WROOM-32E DevKitC v4 \[1\] para alimentar um LED em conjugação com um interruptor para alternar entre os estados ligado e desligado do LED.

#### Lista de material:

- *ESP32-WROOM-32E DevKitC v4*
- Breadboards
- Resistência de 330 ohm (Ω)
- Interruptor (tipo botão)
- Díodo emissor de luz (LED) vermelho
- Fio de ligação
- Cabo USB micro

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

#### Contextualização:

Em eletrónica, um circuito LED é um circuito usado para alimentar um díodo emissor de luz (LED). O circuito deve fornecer corrente suficiente para acender o LED e evitar danos ao mesmo. O circuito mais simples para acionar um LED é através de uma resistência em série \[3\]. Por outro lado, um interruptor é um componente elétrico que pode desconectar ou conectar o caminho condutor de um circuito elétrico, interrompendo a corrente elétrica ou desviando-a de um condutor para outro \[4\].

#### Procedimento:

Atentando no objetivo enunciado, e escolhendo os terminais 21 (para o LED), 22 (para o interruptor) e o GND do ESP32 como referência deve considerar-se o seguinte circuito:

<table border="0" id="bkmrk--0" style="border-collapse: collapse; width: 100%; border-style: none;"><tbody><tr><td style="width: 49.9383%;">#### [![butaoled_a.png](https://kb.deec.uc.pt/uploads/images/gallery/2023-08/scaled-1680-/waRbutaoled-a.png)](https://kb.deec.uc.pt/uploads/images/gallery/2023-08/waRbutaoled-a.png)

</td><td style="width: 49.9383%;">#### [![butaoled_b.png](https://kb.deec.uc.pt/uploads/images/gallery/2023-08/scaled-1680-/cTcbutaoled-b.png)](https://kb.deec.uc.pt/uploads/images/gallery/2023-08/cTcbutaoled-b.png)

</td></tr></tbody></table>

#### Instruções:

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

- 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
/*
tipo botão LED 
*/

#define BUTTON_PIN 22  // Terminal GPIO22 do ESP32 que liga ao interruptor
#define LED_PIN    21  // Terminal GPIO21 do ESP32 que liga ao led

// variáveis:
int led_state = LOW;    // o estado atual do LED
int button_state;       // o estado atual do interruptor
int last_button_state;  // o estado anterior do interruptor

void setup() {
	Serial.begin(115200);              // inicializa comunicação série
	pinMode(BUTTON_PIN, INPUT_PULLUP); // estabelece o modo do terminal do ESP32
	pinMode(LED_PIN, OUTPUT);          // estabelece o modo do terminal do ESP32
	
	button_state = digitalRead(BUTTON_PIN);
}

void loop() {
	last_button_state = button_state;       // guarda o estado anterior
	button_state = digitalRead(BUTTON_PIN); // lê o novo estado
	
	if (last_button_state == HIGH && button_state == LOW) {
		Serial.println("o interruptor foi pressionado");
		
		// modifica o estado do LED
		led_state = !led_state;
		
		// controla o LED de acordo com o estado do interruptor
		digitalWrite(LED_PIN, led_state);
	}
}
```

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

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

- Verificar o resultado

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

</td><td style="width: 49.9383%;">#### [![outoutout.png](https://kb.deec.uc.pt/uploads/images/gallery/2023-08/scaled-1680-/outoutout.png)](https://kb.deec.uc.pt/uploads/images/gallery/2023-08/outoutout.png)

</td></tr></tbody></table>

#### Montagem exemplificativa:

<table border="0" id="bkmrk-%C2%A0" style="border-collapse: collapse; width: 100%; border-style: none;"><tbody><tr><td style="width: 49.9383%;">#### [![aaa.png](https://kb.deec.uc.pt/uploads/images/gallery/2023-08/scaled-1680-/NhWaaa.png)](https://kb.deec.uc.pt/uploads/images/gallery/2023-08/NhWaaa.png)

</td><td style="width: 49.9383%;">#### [![aaa_0.png](https://kb.deec.uc.pt/uploads/images/gallery/2023-08/scaled-1680-/aaa-0.png)](https://kb.deec.uc.pt/uploads/images/gallery/2023-08/aaa-0.png)

</td></tr><tr><td style="width: 49.9383%;">#### [![bbb.png](https://kb.deec.uc.pt/uploads/images/gallery/2023-08/scaled-1680-/bbb.png)](https://kb.deec.uc.pt/uploads/images/gallery/2023-08/bbb.png)

</td><td style="width: 49.9383%;">#### [![bbb_0.png](https://kb.deec.uc.pt/uploads/images/gallery/2023-08/scaled-1680-/bbb-0.png)](https://kb.deec.uc.pt/uploads/images/gallery/2023-08/bbb-0.png)

</td></tr><tr><td style="width: 49.9383%;">#### [![ccc.png](https://kb.deec.uc.pt/uploads/images/gallery/2023-08/scaled-1680-/ccc.png)](https://kb.deec.uc.pt/uploads/images/gallery/2023-08/ccc.png)

</td><td style="width: 49.9383%;">#### [![ccc_0.png](https://kb.deec.uc.pt/uploads/images/gallery/2023-08/scaled-1680-/ccc-0.png)](https://kb.deec.uc.pt/uploads/images/gallery/2023-08/ccc-0.png)

</td></tr><tr><td style="width: 49.9383%;">#### [![ddd.png](https://kb.deec.uc.pt/uploads/images/gallery/2023-08/scaled-1680-/ddd.png)](https://kb.deec.uc.pt/uploads/images/gallery/2023-08/ddd.png)

</td><td style="width: 49.9383%;">#### [![ddd_0.png](https://kb.deec.uc.pt/uploads/images/gallery/2023-08/scaled-1680-/ddd-0.png)](https://kb.deec.uc.pt/uploads/images/gallery/2023-08/ddd-0.png)

</td></tr><tr><td style="width: 49.9383%;">#### [![eee.png](https://kb.deec.uc.pt/uploads/images/gallery/2023-08/scaled-1680-/eee.png)](https://kb.deec.uc.pt/uploads/images/gallery/2023-08/eee.png)

</td><td style="width: 49.9383%;">#### [![eee_0.png](https://kb.deec.uc.pt/uploads/images/gallery/2023-08/scaled-1680-/eee-0.png)](https://kb.deec.uc.pt/uploads/images/gallery/2023-08/eee-0.png)

</td></tr><tr><td style="width: 49.9383%;">#### [![fff.png](https://kb.deec.uc.pt/uploads/images/gallery/2023-08/scaled-1680-/fff.png)](https://kb.deec.uc.pt/uploads/images/gallery/2023-08/fff.png)

</td><td style="width: 49.9383%;">  
</td></tr></tbody></table>

#### Referências

\[1\] 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).

\[2\] 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).

\[3\] Wikipedia. LED circuit. url: [https://en.wikipedia.org/wiki/LED\_circuit](https://en.wikipedia.org/wiki/LED_circuit) (acedido em 18/08/2023).

\[4\] Wikipedia. Switch. url: [https://en.wikipedia.org/wiki/Switch](https://en.wikipedia.org/wiki/Switch) (acedido em 22/08/2023).