GPIO Module¶
| Since | Origin / Contributor | Maintainer | Source |
|---|---|---|---|
| 2016-11-26 | Johny Mattsson | Johny Mattsson | gpio.c |
This module provides access to the GPIO (General Purpose Input/Output) subsystem.
GPIO Overview¶
The ESP32 chip features 40 physical GPIO pads. Some GPIO pads cannot be used or do not have the corresponding pin on the chip package (refer to the ESP32 Datasheet).
- GPIO6-11 are usually used for SPI flash.
- GPIO20, GPIO24, and GPIO28-31 are not available as pins.
- GPIO34-39 can only be set as input mode and do not have software pullup or pulldown functions.
gpio.config()¶
Configure GPIO mode for one or more pins.
Syntax¶
gpio.config({
gpio=x || {x, y, z},
dir=gpio.IN || gpio.OUT || gpio.IN_OUT,
opendrain= 0 || 1 -- only applicable to output modes
pull= gpio.FLOATING || gpio.PULL_UP || gpio.PULL_DOWN || gpio.PULL_UP_DOWN
}, ...)
Parameters¶
List of configuration tables:
gpioone or more (given as list) pins, see GPIO Overviewdirdirection, one ofgpio.INgpio.OUTgpio.IN_OUT
opendrain1 enables opendrain mode, defaults to 0 if omittedpullenable pull-up and -down resistors, one ofgpio.FLOATINGdisables both pull-up and -downgpio.PULL_UPenables pull-up and disables pull-downgpio.PULL_DOWNenables pull-down and disables pull-upgpio.PULL_UP_DOWNenables both pull-up and -down
Returns¶
nil
Example¶
gpio.config( { gpio={19,21}, dir=gpio.OUT }, { gpio=22, dir=gpio.IN, pull=gpio.PULL_UP })
gpio.read()¶
Read digital GPIO pin value.
Syntax¶
gpio.read(pin)
Parameters¶
pin pin to read, see GPIO Overview
Returns¶
0 = low, 1 = high
gpio.set_drive()¶
Set the drive strength of a given GPIO pin. The higher the drive strength, the more current can be sourced/sunk from the pin. The exact maximum depends on the power domain of the pin and how much current other pins in that domain are consuming.
Syntax¶
gpio.set_drive(pin, strength)
Parameters¶
pin, a valid GPIO pin number.strengththe drive strength to set, one ofgpio.DRIVE_0weakest drive strengthgpio.DRIVE_1stronger drive strengthgpio.DRIVE_2default drive strengthgpio.DRIVE_DEFAULTdefault drive strength (same asDRIVE_2)gpio.DRIVE_3maximum drive strength
Returns¶
nil
Example¶
gpio.set_drive(4, gpio.DRIVE_3)
gpio.trig()¶
Establish or clear a callback function to run on interrupt for a GPIO.
Syntax¶
gpio.trig(pin [, type [, callback]])
Parameters¶
pin, see GPIO Overviewtypetrigger type, one ofgpio.INTR_DISABLEornilto disable interrupts on this pin (in which casecallbackis ignored and should benilor omitted)gpio.INTR_UPfor trigger on rising edgegpio.INTR_DOWNfor trigger on falling edgegpio.INTR_UP_DOWNfor trigger on both edgesgpio.INTR_LOWfor trigger on low levelgpio.INTR_HIGHfor trigger on high level
callbackoptional function to be called when trigger fires. Ifnilor omitted (andtypeis notgpio.INTR_DISABLE) then any previously-set callback will continue to be used. Parameters are:pinlevel
Returns¶
nil
gpio.wakeup()¶
Configure whether the given pin should trigger wake up from light sleep initiated by node.sleep().
Note that the level specified here overrides the interrupt type set by gpio.trig(), and wakeup only supports the level-triggered options gpio.INTR_LOW and gpio.INTR_HIGH. Therefore it is not possible to configure an edge-triggered GPIO callback in combination with wake from light sleep, at least not without reconfiguring the pin immediately before and after the call to node.sleep().
The call to node.sleep() must additionally include gpio = true in the options in order for any GPIO to trigger wakeup.
Syntax¶
gpio.wakeup(pin, level)
Parameters¶
pin, see GPIO Overviewlevelwake-up level, one ofgpio.INTR_NONEchanges to the level of this pin will not trigger wake from light sleepgpio.INTR_LOWif this pin is low it should trigger wake from light sleepgpio.INTR_HIGHif this pin is high it should trigger wake from light sleep
Returns¶
nil
See also¶
gpio.write()¶
Set digital GPIO pin value.
Syntax¶
gpio.write(pin, level)
Parameters¶
pinpin to write, see GPIO Overviewlevel1 or 0
Returns¶
nil