Sub Process_Globals
.....
Type ButtonState (index As Byte, lastState As Boolean, currentState As Boolean, lastDebounceTime As ULong, pressStartTime As ULong, pressDuration As ULong, eventGenerated As Boolean, periodicCounter As UInt, pressEventTime As ULong, lastPeriodicTime As ULong)
Private buttons(2) As ButtonState 'setup exactly needed qty to avoid crash!
Private pins(2) As Pin 'setup exactly needed qty to avoid crash!
End Sub
' Add new button
Public Sub AddButton(gpio_num As Byte, pin_mode As Byte)
pins(ButtonsIndex).Initialize(gpio_num, pin_mode)
buttons(ButtonsIndex).index = ButtonsIndex
buttons(ButtonsIndex).lastState = True
....
' Process single button state
Private Sub ProcessButton(btn As ButtonState)
Dim gpio_num As Byte = pins(btn.index).PinNumber
Dim reading As Boolean = pins(btn.index).DigitalRead