# 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);
  }
}
```


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://udea-iot.gitbook.io/introduccion-al-iot/primeros-pasos/primeros-pasos-usando-el-esp32/proyecto-2.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
