Skip to content

Doobz09/Drivers-GPIO-ESP32

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

31 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Controladores GPIO para ESP32

Descripción

Este repositorio contiene controladores para la gestión de pines de entrada/salida (GPIO) en la ESP32. Estos controladores han sido desarrollados por Guadalupe Méndez Ontiveros, Manuel Francisco Zubiate Loya y Alan Alexis Rodriguez Hernandez para facilitar la configuración y utilización de los pines GPIO en proyectos basados en ESP32.

Versión del Programa

La versión actual de los controladores es la 5.1.

Tabla de Contenidos

  1. Estructura del Proyecto
  2. Instalación
  3. Uso Básico
  4. Documentación Detallada
  5. Enlaces Útiles

Estructura del Proyecto

  • GPIO.c: Archivo principal que contiene las definiciones de las funciones para el control de GPIO.
  • GPIO.h: Archivo de encabezado que proporciona las declaraciones de funciones y las definiciones de constantes utilizadas en GPIO.c.
  • BSP.h : Archivo de encabezado que proporciona macros y definiciones de constantes utilizadas en GPIO.c.

Instalación

  1. Clona este Repositorio: clona el repostorio dentro de una carpeta en donde quieras guardarlo. git clone https://github.com/Doobz09/Drivers-GPIO-ESP32.git

  2. Copia la carpeta Drivers en el proyecto en el que quieras trabajar: La carpeta drivers contiene los siguientes archivos: drivers: - GPIO.c - GPIO.h - BSP.h

3.Aegurate de que el compilador Cmake enlace los drivres: Es importante agrear la ruta "../drivers/GPIO.c" en el archivo CMakeLists.txt para no tener problemas.

idf_component_register(SRCS "main.c" "../drivers/GPIO.c"
                INCLUDE_DIRS ".")
  1. Incluye el archivo de cabezera en tu proyecto para empezar a usar los drivers:
#include "../drivers/GPIO.h" 
  1. Compila y disfruta los drivers: Si no te quedo claro las intrucciones en el apartado de enlaces utiles, encontraras un enlace a YouTube donde se mostrara un tutorial de como instalar los drivers en un proyecto nuevo.

Uso-básico

En el main pricipal de este repositorio se encuentra un ejemplo de como es que se estan implementando los drivers para una aplicacion sencilla.

Ejemplos

BLINK

#include <stdio.h>
#include "freertos/FreeRTOS.h"
#include "freertos/task.h"
#include "../drivers/GPIO.h"

void app_main(void)
{
    GpioModeOutput(GPIO2);              /*ESTABLECEMOS EL GPIO2 COMO SALIDA*/
    GpioDigitalWrite(GPIO2,GPIO_LOW);   /*ESTABLECEMOS EL ESTADO LOGICO DEL GPIO2 COMO BAJO PARA APAGAR EL LED*/

    while(1){
        GpioDigitalWrite(GPIO2,GPIO_HIGH);    /*ENCENDEMOS EL LED MANDANDO UN ALTO AL GPIO2*/
        vTaskDelay(pdMS_TO_TICKS(100));       /*RETARDO DE 100 MILISEGUNDOS*/
        GpioDigitalWrite(GPIO2,GPIO_LOW);     /*APAGAMOS EL LED MANDANDO UN BAJO AL GPIO2*/
        vTaskDelay(pdMS_TO_TICKS(100)); 
    }
} 

TOGGLE

#include <stdio.h>
#include "freertos/FreeRTOS.h"
#include "freertos/task.h"
#include "../drivers/GPIO.h"

void app_main(void)
{
    uint8_t estado_led=0;

    GpioModeInput(GPIO18);        /*ESTABLECEMOS EL GPIO18 COMO ENTRADA*/
    GpioPullUpEnable(GPIO18);     /*HABILITAMOS LA RESISTENCIA PULLUP INTERNA DEL GPIO18*/

    GpioModeOutput(GPIO2);       /*ESTABLECEMOS EL GPIO2 COMO SALIDA*/

    while(1){
        GpioDigitalWrite(GPIO2,estado_led);     /*ESTABLECEMOS EL ESTADO LOGICO DEL GPIO2 SEGUN EL VALOR DE LA VARIABLE ESTADO_LED*/

        if(GpioDigitalRead(GPIO18)==GPIO_LOW){   /*LEEMOS EL VALOR DEL GPIO18 Y SI ESTE ES PRESIONADO Y SOLATADO CAMBIA EL VALOR DE ESTADO_LED*/
            while(GpioDigitalRead(GPIO18)==GPIO_LOW);
            estado_led= !estado_led;                      
        }
            
        vTaskDelay(pdMS_TO_TICKS(50));

    }

}

Lectura de entrada en configuracion de resistencia Pull down

#include <stdio.h>
#include "../drivers/GPIO.h"
void app_main(void)
{
 GpioModeInput(GPIO4); /*pin que usaremos cono entrada*/
 GpioModeOutput(GPIO2); /*Led integrado en la tarjeta DevKit*/
 GpioPullDownEnable(GPIO4);

 while(1){
 	 if( GpioDigitalRead(GPIO4)==1){  /*Leemos la entrada*/
 		 GpioDigitalWrite(GPIO2,GPIO_HIGH);/*Enciende Led*/
 	 }
 	 else{
 		 GpioDigitalWrite(GPIO2,GPIO_LOW); /*Apaga Led*/
 	 }

 	}
}

Documentación-detallada

  1. GpioModeOutput(uint32_t gpio)
  2. GpioModeInput(uint32_t gpio)
  3. GpioPullUpEnable(uint32_t gpio)
  4. GpioPullDownEnable(uint32_t gpio)
  5. GpioDigitalWrite(uint32_t gpio, gpio_state state)
  6. GpioDigitalRead(uint32_t gpio)

GpioModeOutput(uint32_t gpio)

Configura el GPIO especificado para su uso como salida.

Parámetros:

gpio: Número del pin GPIO que se configurará como salida.

Ejemplo de uso:

GpioModeOutput(GPIO5);

GpioModeInput(uint32_t gpio)

Configura el GPIO especificado para su uso como entrada.

Parámetros:

gpio: Número del pin GPIO que se configurará como entrada.

Ejemplo de uso:

GpioModeInput(GPIO5);

GpioPullUpEnable(uint32_t gpio)

Activa la resistencia PullUp interna en el GPIO especificado.

Parámetros:

gpio: Número del pin GPIO en el que se activará la resistencia PullUp.

Ejemplo de uso:

GpioPullUpEnable(GPIO5);

GpioPullDownEnable(uint32_t gpio)

Activa la resistencia PullDown interna en el GPIO especificado.

Parámetros:

gpio: Número del pin GPIO en el que se activará la resistencia PullDown.

Ejemplo de uso:

GpioPullDownEnable(GPIO5);

GpioDigitalWrite(uint32_t gpio gpio_state state)

Establece el estado lógico (alto o bajo) en el GPIO especificado.

Parámetros:

gpio: Número del pin GPIO en el que se establecerá el estado. state: Estado lógico que se desea establecer (GPIO_HIGH o GPIO_LOW).

Ejemplo de uso:

GpioDigitalWrite(GPIO5, GPIO_HIGH);

GpioDigitalRead(uint32_t gpio)

Lee el estado lógico actual del GPIO especificado.

Parámetros:

gpio: Número del pin GPIO del que se leerá el estado.

Retorno:

int: Valor leído en el GPIO (1 para HIGH, 0 para LOW).

Ejemplo de uso:

int state = GpioDigitalRead(GPIO5);

Enlaces Útiles

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published