class Pin – control I/O pins¶
A pin is the basic object to control I/O pins. It has methods to set the mode of the pin (input, output, etc) and methods to get and set the digital logic level. For analog control of a pin, see the ADC class.
Usage Model:
Board pins are identified by their string id:
g = pyb.Pin('GP9', mode=pyb.Pin.OUT, pull=None, drive=pyb.Pin.MED_POWER, alt=-1)
You can also configure the Pin to generate interrupts. For instance:
def pincb(pin):
print(pin.id())
pin_int = pyb.Pin('GP10', mode=Pin.IN, pull=pyb.Pin.PULL_DOWN)
pin_int.irq(mode=pyb.Pin.IRQ_RISING, handler=pincb)
# the callback can be triggered manually
pin_int.irq()()
# to disable the callback
pin_int.irq().disable()
Now every time a falling edge is seen on the gpio pin, the callback will be executed. Caution: mechanical push buttons have “bounce” and pushing or releasing a switch will often generate multiple edges. See: http://www.eng.utah.edu/~cs5780/debouncing.pdf for a detailed explanation, along with various techniques for debouncing.
All pin objects go through the pin mapper to come up with one of the gpio pins.
Constructors¶
-
class
pyb.Pin(id, ...)¶ Create a new Pin object associated with the id. If additional arguments are given, they are used to initialise the pin. See
pin.init().
Methods¶
-
pin.init(mode, pull, *, drive, alt) Initialise the pin:
modecan be one of:Pin.IN- input pin.Pin.OUT- output pin in push-pull mode.Pin.OPEN_DRAIN- output pin in open-drain mode.Pin.ALT- pin mapped to an alternate function.Pin.ALT_OPEN_DRAIN- pin mapped to an alternate function in open-drain mode.
pullcan be one of:None- no pull up or down resistor.Pin.PULL_UP- pull up resistor enabled.Pin.PULL_DOWN- pull down resitor enabled.
drivecan be one of:Pin.LOW_POWER- 2mA drive capability.Pin.MED_POWER- 4mA drive capability.Pin.HIGH_POWER- 6mA drive capability.
altis the number of the alternate function. Please refer to the pinout and alternate functions table. for the specific alternate functions that each pin supports.
Returns:
None.
-
pin.id()¶ Get the pin id.
-
pin.value([value])¶ Get or set the digital logic level of the pin:
- With no argument, return 0 or 1 depending on the logic level of the pin.
- With
valuegiven, set the logic level of the pin.valuecan be anything that converts to a boolean. If it converts toTrue, the pin is set high, otherwise it is set low.
-
pin.pull()¶ Returns the currently configured pull of the pin. The integer returned will match one of the allowed constants for the pull argument to the init function.
-
pin([value])¶ Pin objects are callable. The call method provides a (fast) shortcut to set and get the value of the pin. See pin.value for more details.
-
pin.toggle()¶ Toggle the value of the pin.
-
pin.mode([mode]) Get or set the pin mode.
-
pin.pull([pull]) Get or set the pin pull.
-
pin.drive([drive])¶ Get or set the pin drive strength.
-
pin.irq(*, trigger, priority=1, handler=None, wake=None)¶ Create a callback to be triggered when the input level at the pin changes.
triggerconfigures the pin level which can generate an interrupt. Possible values are:Pin.IRQ_FALLINGinterrupt on falling edge.Pin.IRQ_RISINGinterrupt on rising edge.Pin.IRQ_LOW_LEVELinterrupt on low level.Pin.IRQ_HIGH_LEVELinterrupt on high level.
The values can be ORed together, for instance mode=Pin.IRQ_FALLING | Pin.IRQ_RISING
prioritylevel of the interrupt. Can take values in the range 1-7. Higher values represent higher priorities.handleris an optional function to be called when new characters arrive.wakesselects the power mode in which this interrupt can wake up the board. Please note:- If
wake_from=pyb.Sleep.ACTIVEany pin can wake the board. - If
wake_from=pyb.Sleep.SUSPENDEDpinsGP2,GP4,GP10,GP11, GP17`` orGP24can wake the board. Note that only 1 of this pins can be enabled as a wake source at the same time, so, only the last enabled pin as apyb.Sleep.SUSPENDEDwake source will have effect. - If
wake_from=pyb.Sleep.SUSPENDEDpinsGP2,GP4,GP10,GP11,GP17andGP24can wake the board. In this case all of the 6 pins can be enabled as apyb.Sleep.HIBERNATEwake source at the same time. - Values can be ORed to make a pin generate interrupts in more than one power mode.
- If
Returns a callback object.
Constants¶
-
Pin.IN
-
Pin.OUT¶
-
Pin.OPEN_DRAIN¶
-
Pin.ALT¶
-
Pin.ALT_OPEN_DRAIN¶ Selects the pin mode.
-
Pin.PULL_UP
-
Pin.PULL_DOWN Selectes the wether there’s pull up/down resistor.
-
Pin.LOW_POWER¶
-
Pin.MED_POWER¶
-
Pin.HIGH_POWER¶ Selects the drive strength.
-
Pin.IRQ_FALLING¶
-
Pin.IRQ_RISING¶
-
Pin.IRQ_LOW_LEVEL¶
-
Pin.IRQ_HIGH_LEVEL¶ Selects the IRQ trigger type.