TIPOS de la clase
Tipo
NGN_GPIO_MODE
Descripción
Define el modo de funcionamiento de un puerto GPIO, de forma equivalente al pinMode() de Arduino. Se utiliza como parámetro del método PortMode(). Valores disponibles:
NGN_GPIO_MODE.input — Entrada digital estándar, sin resistencia de pull interna.
NGN_GPIO_MODE.output — Salida digital.
NGN_GPIO_MODE.input_pullup — Entrada digital con resistencia de pull-up interna activada.
NGN_GPIO_MODE.input_pulldown — Entrada digital con resistencia de pull-down interna activada.
Ejemplo
ngn->gpio->SetPortMode(17, NGN_GPIO_MODE.output);
MÉTODOS de la clase
Método
bool SetPortMode(uint8_t port_id, uint8_t mode);
Descripción
Configura el modo de funcionamiento de un puerto GPIO (numeración BCM). Debe llamarse antes de usar DigitalWrite() o DigitalRead() sobre ese puerto. Si el puerto ya tenía un modo asignado previamente, se reconfigura con el nuevo modo. Devuelve TRUE si la operación se ha realizado con éxito, o FALSE si el número de puerto no es válido o se ha producido un error al reservarlo. Fuera de una Raspberry Pi el módulo GPIO no está disponible, por lo que este método no tiene ningún efecto y siempre devuelve FALSE.
Ejemplo
ngn->gpio->SetPortMode(17, NGN_GPIO_MODE.output);
Método
bool SetDebounce(uint8_t port_id, uint32_t microseconds = 0);
Descripción
Configura el tiempo del filtro anti-rebote (debounce) por hardware para un puerto previamente configurado como entrada (INPUT, INPUT_PULLUP o INPUT_PULLDOWN) mediante PortMode(). El parámetro microseconds especifica el tiempo mínimo en microsegundos que debe mantenerse estable una señal eléctrica para ser considerada un cambio de estado válido por el kernel, eliminando el ruido o falso contacto de botones y switches mecánicos. El valor por defecto es 0 (filtro desactivado). Devuelve TRUE si la reconfiguración se ha realizado con éxito, o FALSE si el puerto no es válido, no tiene ningún modo asignado o no está configurado como puerto de entrada.
Ejemplo
ngn->gpio->SetDebounce(17, 5000); // Aplica 5 ms (5000 us) de filtro anti-rebote en el pin 17
Método
bool SetDebounceAll(uint32_t microseconds = 0);
Descripción
Configura de forma global el mismo tiempo del filtro anti-rebote (debounce) por hardware para todos los puertos configurados actualmente en cualquier modo de entrada (INPUT, INPUT_PULLUP o INPUT_PULLDOWN) mediante PortMode(). Los puertos de salida, no asignados o reservados son ignorados automáticamente sin generar un error. El parámetro microseconds especifica el tiempo en microsegundos que debe mantenerse estable la señal en los pines de entrada. El valor por defecto es 0 (filtro desactivado). Devuelve TRUE si la operación se ha realizado con éxito en todos los puertos de entrada activos, o FALSE si no se ha podido reconfigurar alguno de ellos.
Ejemplo
ngn->gpio->SetDebounceAll(5000); // Aplica 5 ms (5000 us) de filtro anti-rebote a todos los botones de entrada
Método
bool DigitalWrite(uint8_t port_id, bool value);
Descripción
Escribe un valor digital en un puerto previamente configurado como OUTPUT mediante PortMode(). El valor TRUE equivale a nivel alto (HIGH) y FALSE a nivel bajo (LOW). Devuelve FALSE si el puerto no es válido, si no tiene ningún modo asignado, o si su modo actual no es OUTPUT.
Ejemplo
ngn->gpio->DigitalWrite(17, true);
Método
bool DigitalRead(uint8_t port_id);
Descripción
Lee el valor digital de un puerto previamente configurado como INPUT, INPUT_PULLUP o INPUT_PULLDOWN mediante PortMode(). Devuelve TRUE si el puerto está a nivel alto y FALSE si está a nivel bajo, si el puerto no es válido, si no tiene ningún modo asignado, o si su modo actual no es de entrada.
Ejemplo
bool state = ngn->gpio->DigitalRead(27);
Método
void ReleasePort(uint8_t port_id);
Descripción
Libera un puerto previamente reservado mediante PortMode(), dejándolo disponible para ser configurado de nuevo. No tiene ningún efecto si el puerto no es válido o si no tenía ningún modo asignado.
Ejemplo
ngn->gpio->ReleasePort(17);
Método
void ReleaseAllPorts();
Descripción
Libera todos los puertos GPIO reservados hasta el momento mediante PortMode().
Ejemplo
ngn->gpio->ReleaseAllPorts();
Método
uint8_t GetPortMode(uint8_t port_id);
Descripción
Devuelve el modo de funcionamiento actual de un puerto GPIO (numeración BCM). El valor devuelto corresponde a una de las constantes definidas en NGN_GPIO_MODE (input, output, input_pullup, input_pulldown). Si el número de puerto no es válido, no está disponible o no se le ha asignado ningún modo previamente mediante PortMode(), devuelve NGN_GPIO_MODE.undefined. Fuera de una Raspberry Pi siempre devolverá NGN_GPIO_MODE.undefined.
Ejemplo
uint8_t mode = ngn->gpio->GetPortMode(17);
if (mode == NGN_GPIO_MODE.output) ngn->gpio->DigitalWrite(17, true);
Método
bool IsAvailable();
Descripción
Indica si el módulo GPIO se ha inicializado correctamente durante el arranque de la librería y está listo para ser usado. Su valor siempre será FALSE fuera de una Raspberry Pi, o en una Raspberry Pi si no ha sido posible abrir el chip GPIO del sistema.
Ejemplo
if (ngn->gpio->IsAvailable()) ngn->gpio->SetPortMode(17, NGN_GPIO_MODE.output);
CONSTANTES de la clase
Constante
uint32_t NGN_GPIO_DEBOUNCE_TIME
Descripción
Define el tiempo de anti-rebote (debounce) por hardware recomendado en microsegundos para juegos a 60 FPS (8333 us, equivalente a medio frame de 16,66 ms). Este valor es ideal para ser utilizado como parámetro en los métodos SetDebounce() o SetDebounceAll(), eliminando por completo el ruido eléctrico y los falsos contactos de botones y switches mecánicos arcade sin introducir lag perceptible para el jugador.
Ejemplo
ngn->gpio->SetDebounceAll(NGN_GPIO_DEBOUNCE_TIME);