> 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/primeros-pasos/primeros-pasos-usando-el-esp32/proyecto-2.md).

# Proyecto 2

## Descripción

Usando la placa de desarrollo ESP32 hacer una aplicación que permita encender y apagar un led a traves de un pulsador conectado externamente de tal manera que cuando el pulsador se presione, el led se encienda y cuando el pulsador se libere el led se apague.

## Hardware

Ya que la targeta ESP32 tiene un led integrado, vamos a hacer uso de este para evitar conectar hardware adicional. La siguiente tabla muestra la lista de componentes a usar:

<table><thead><tr><th width="74">#</th><th width="112">Nombre</th><th width="127">Cantidad</th><th>Componente</th></tr></thead><tbody><tr><td>1</td><td>U1</td><td>1</td><td>Tarjeta de desarrollo ESP32</td></tr><tr><td>2</td><td>L1</td><td>1</td><td>Grove - LED (<a href="https://www.seeedstudio.com/Grove-Starter-Kit-for-Arduino-p-1855.html">link</a>)</td></tr><tr><td>3</td><td>P1</td><td>1</td><td>Grove - Button (<a href="https://www.seeedstudio.com/Grove-Starter-Kit-for-Arduino-p-1855.html">link</a>)</td></tr></tbody></table>

Como hay varios componentes vamos a mostrar primero el esquematico en el cual se detallan las conexiones entre los componentes:

<figure><img src="/files/7fusRk2HFKyku3wI8p7C" alt=""><figcaption><p>Esquematico del montaje 2</p></figcaption></figure>

A continuación se muestra el diagrama de conexión asociado al esquematico mostrado en la figura anterior:

<figure><img src="/files/xKiIfrZt70743BTjX6At" alt=""><figcaption><p>Diagrama de conexión</p></figcaption></figure>

El archivo fritzing se muestra a continuación:

{% file src="/files/ZqoblBFV0FY7pOYza9A3" %}
Archivo Fritzing del montaje 2
{% endfile %}

## Software

```arduino
/*
Nombre: montaje2.ino
Autor: IoT UdeA
Descripción: Aplicación que prende y apaga un led por medio 
             de un pulsador. 
Conexiones: 

Pin ESP32 - Groove LED
GPIO17 - SIG
GND - GND
3.3 - VCC

...
|ESP32|Groove Button|
GPIO0 - SIG
GND - GND 
3.3 - VCC
*/

/* Librerias*/

/* Constantes */

/* Entradas */
const int buttonPin = 0; //(GPIO0)

/* Salidas */
const int ledPin =  17; //(GPIO17)

/* Variables de la aplicacion */
int buttonState;    // Estado del pulsador

/* Funcion setup: Configuracion */
void setup() {
  pinMode(buttonPin, INPUT);
  pinMode(ledPin, OUTPUT);
}

/* Funcion loop: Logica del programa */
void loop() {
  buttonState = digitalRead(buttonPin);
  if(buttonState = HIGH) {
    digitalWrite(ledPin, HIGH);
  }
  else {
    digitalWrite(ledPin, HIGH);
  }
}
```
