> For the complete documentation index, see [llms.txt](https://udea-iot.gitbook.io/introduccion-al-iot/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://udea-iot.gitbook.io/introduccion-al-iot/interaccion-con-el-mundo-fisico/ejemplos/esp32/ejemplo-1.md).

# Ejemplo 1

## Uso de un pulsador en el ESP32

### Descripción&#x20;

En el siguiente ejemplo se emplea un pulsador para prender y apagar el led integrado a la placa ESP32.

### Componentes

La siguiente tabla muestra los componentes principales del circuito a montar:

<table><thead><tr><th width="176.33333333333331">Componentes</th><th>Cantidad</th><th>Observaciones</th></tr></thead><tbody><tr><td>ESP32</td><td>1</td><td>Se usará el led integrado (y no uno externo) en la placa como indicador</td></tr><tr><td>Button switch module (Elegoo)</td><td>1</td><td>Tambien se puede emplear cualquiera de los otros módulos disponibles: el KY-004 Button (Landzo) o Grove – Button (seeed)</td></tr></tbody></table>

### Conexión

La conexión entre el sensor Button switch module (Elegoo) se muestra en la siguiente tabla:

<table><thead><tr><th width="351">ESP32</th><th>Button switch module</th></tr></thead><tbody><tr><td>P23</td><td>S (Signal: pin 1 - izquierda)</td></tr><tr><td>3.3</td><td>Vin (Power: pin 2 - centro)</td></tr><tr><td>GND</td><td>GND (GND: pin 3 - derecha)</td></tr></tbody></table>

#### Esquematico

La siguiente figura muestra el esquematico:

<figure><img src="/files/aFAhi9Afixc39BG3XN1V" alt=""><figcaption></figcaption></figure>

#### Conexión

A continuación se muestra la conexión entre los componentes:

<figure><img src="/files/V8jgxmJkyyUQZd4vwTdp" alt=""><figcaption></figcaption></figure>

#### Archivo Fritzing

{% file src="/files/KUh9apn9748LhzaawoJ4" %}

### Programa

A continuación se muestra el programa que se ejecuta en el ESP32:

```arduino
/**
   Hardware Connections:

    ESP32 | Button switch module
    -------------------
      P23   |   S (Signal: pin 1 - izquierda)
      3.3   |   Vin (Power: pin 2 - centro)
      GND   |   GND (pin 3 - derecha)
*/

const int led = LED_BUILTIN; // Define the LED pin
const int buttonPin = 23;    // P23 (GPIO23)
int val;                     // Define a numeric variable

void setup() {
	pinMode(led,OUTPUT);
	pinMode(buttonPin,INPUT);
}

void loop() {
	val = digitalRead(buttonPin); // check the state of the button
	if(val==HIGH) { 
		// if button is pressed, turn LED on
		digitalWrite(led,HIGH);
	}
	else {
		// if button is released, turn LED off
		digitalWrite(led,LOW);
	}
}
```

### Simulación

Para comprender el funcionamiento del programa, puede seguir el siguiente [link](https://wokwi.com/projects/357785036087055361). En este caso como no se disponde del **Button switch module** se hizo una conexión en la protoboard usando los diferentes componentes.

<figure><img src="https://github.com/UdeA-IoT/ensayo-sensores/raw/main/button/esp32/esp32-button_sim.png" alt=""><figcaption></figcaption></figure>

<br>
