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)
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 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, Timerdef 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, Timerdef 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 buttond4 = Pin(2, Pin.OUT) #d4 GPIO2 internal ledd0 = 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)
