# 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="https://4115294714-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FxugokskCzICXfnqSP3ui%2Fuploads%2FJ7Sjl7vNIzVG5TakxaTp%2Fmontaje2_sch.png?alt=media&#x26;token=691d460b-a5be-4711-8b65-f1bd77eb0d68" 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="https://4115294714-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FxugokskCzICXfnqSP3ui%2Fuploads%2FHZbIay1TvbySlCwYcy3o%2Fmontaje2_bb.png?alt=media&#x26;token=db11914d-5b60-4797-8d11-cc7f00431d96" alt=""><figcaption><p>Diagrama de conexión</p></figcaption></figure>

El archivo fritzing se muestra a continuación:

{% file src="https://4115294714-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FxugokskCzICXfnqSP3ui%2Fuploads%2FYblXjkEIPGZ3Bk2xGGl0%2Fmontaje2.fzz?alt=media&token=93cf018f-7f41-45d5-818c-2575b2de742b" %}
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);
  }
}
```
