Button atau tombol merupakan alat yang cukup esensial. Button merupakan sensor dasar yang paling mudah untuk dipahami dan biasanya menjadi sensor pertama yang perlu dipelajari dalam pemrograman mikrokontroller

Berikut ini contoh kode program micropython untuk tombol pushbutton dengan mengambil pin GPIO-13 dan akan mengontrol LED interna GPIO-2. Jika tombol ditekan lampu akan mati, jika dilepas maka lampu akan hidup, 

from machine import Pin
import time
led = Pin(2, Pin.OUT)
button = Pin(13, Pin.IN, Pin.PULL_UP)
while True:
        led.value(not button.value())
        print(button.value())
        time.sleep(.3)
Kode berikut merupakan pengembangan dari kode di atas. Pada kode ini, tombol bersifat toggle, ketika ditekan akan mengubah status dari on ke off dan sebaliknya. 

from machine import Pin
led = Pin(2, Pin.OUT)
button = Pin(13, Pin.IN, Pin.PULL_UP)
while True:
    if not button.value():
        led.value(not led.value())
        while not button.value():
            pass

Tombol dapat disimulasikan dengan dua kabel yang dihubungkan.

untuk dua button berikut contoh kodenya:

import machine
import time
button1 = machine.Pin(0, machine.Pin.IN, machine.Pin.PULL_UP)
button2 = machine.Pin(3, machine.Pin.IN, machine.Pin.PULL_UP)

while True:
    print('Button1 down!') if not button1.value() else print('Button1 up!') 
    print('Button2 down!') if not button2.value() else print('Button2 up!')
    time.sleep(0.25)

Pada beberapa kasus, tombol terkadang tidak akurat dalam membaca masukan sehingga perlu digunakan teknik debouncing. berikut ini contoh kodenya

from machine import Pin, Timer

def on_pressed(timer):
    print('pressed')
    led.value(not led.value())

def debounce(pin):
    # Start or replace a timer for 200ms, and trigger on_pressed.
    timer.init(mode=Timer.ONE_SHOT, period=200, callback=on_pressed)
# Register a new hardware timer.

timer = Timer(0)

# Setup the button input pin with a pull-up resistor.
button = Pin(0, Pin.IN, Pin.PULL_UP)
led = Pin(2, Pin.OUT)

# Register an interrupt on rising button input.
button.irq(debounce, Pin.IRQ_RISING)

Berikut ini modifikasi dengan mengembalikan status toggle dari tombol ke posisi semula (off) setelah 5 detik menggunakan timer.

from machine import Pin, Timer

def on_pressed(timer):
    print('pressed')
    d4.value(not d4.value())
    timer2.init(mode=Timer.ONE_SHOT, period=5000, callback=on_reset)

def on_reset(timer2):
    print('reset')
    d4.value(1)


def debounce(pin):
    # Start or replace a timer for 200ms, and trigger on_pressed.
    timer.init(mode=Timer.ONE_SHOT, period=200, callback=on_pressed)

# Register a new hardware timer.
timer = Timer(0)
timer2 = Timer(0)

# Setup the button input pin with a pull-up resistor.
d3 = Pin(0, Pin.IN, Pin.PULL_UP) #d3 GPIO 0internal button
d4 = Pin(2, Pin.OUT) #d4 GPIO2 internal led

d0 = machine.Pin(16, Pin.OUT)
d1 = machine.Pin(5, Pin.OUT)
d2 = machine.Pin(4, Pin.OUT)

d5 = machine.Pin(14, Pin.OUT)
d6 = machine.Pin(12, Pin.OUT)
d7 = machine.Pin(13, Pin.OUT)
d8 = machine.Pin(15, Pin.OUT)

# Register an interrupt on rising button input.
d3.irq(debounce, Pin.IRQ_RISING)