11. EXT: Buttons and selection
11.1. Changing values with A and B-buttons
Use the A-button to increase a variable.
Use the B-button to decrease a variable.
In the code below, the
delay_time
variable is increased in steps of 10 by the A-button and decreased in steps of 10 by the B-button. Finally, text is scrolled with a delay of delay_time
.from microbit import *
delay_time = 80
while True:
if button_a.is_pressed():
delay_time += 10
elif button_b.is_pressed():
delay_time -= 10
else:
sleep(100)
display.scroll("ABC", delay=delay_time)
The code above fails when the delay_time goes below 0.
The variable,
delay_time
, can be restricted to a set range of values using the min and max functions.delay_time = min(400, delay_time + 10)
prevents the delay_time
from going above 400.delay_time = max(50, delay_time - 10)
prevents the delay_time
from going below 50.from microbit import *
delay_time = 80
while True:
if button_a.is_pressed():
delay_time = min(400, delay_time + 10)
elif button_b.is_pressed():
delay_time = max(50, delay_time - 10)
else:
sleep(100)
display.scroll("ABC", delay=delay_time)
Tasks
Edit the code to adjust the scroll delay in steps of 25.
Write code to alter a
guess_number
variable in steps of 1 by the buttons. Use both buttons to set the number and show it. Start the number at 5 and limit it to a minimum of 1 and a maximum of 9.
Edit the code to adjust the scroll delay in steps of 25.
from microbit import *
delay_time = 80
while True:
if button_a.is_pressed():
delay_time += 25
elif button_b.is_pressed():
delay_time -= 25
else:
sleep(100)
display.scroll("ABC", delay=delay_time)
Write code to alter a guess_number
variable in steps of 1 by the buttons. Use both buttons to set the number and scroll it. Start the number at 5 and limit it to a minimum of 1 and a maximum of 9.
from microbit import *
guess_number = 5
while True:
if button_a.is_pressed() and button_b.is_pressed():
display.show(guess_number, delay=80)
# now start again
guess_number = 5
if button_a.is_pressed():
guess_number = min(9, guess_number + 1)
elif button_b.is_pressed():
guess_number = max(1, guess_number - 1)
else:
sleep(100)
display.show(guess_number, delay=80)
sleep(200)