Buttons and Timings
Code blocks used in this tutorial:
Our goal for this tutorial will be to control the animation speed using buttons:
![`A` button: slow action. `B` button: fast action.](../button_timing/control.gif)
A
button: slow action. B
button: fast action.
We are going to use the Input
blocks. Click in Input
and drag and drop on button [A▼] pressed
on an open space on the right side.
![`on button` Code Block](../button_timing/button.png)
on button
Code Block
This block tells micro:bit what happens when a button is pressed.
If you click on the down arrow ▼
, you can select the specific button to check
(A
, B
, or A+B
).
![`on button` Selection](../button_timing/button_select.png)
on button
Selection
Let’s select button A
and create a simple animation.
![Coding `on button A pressed`](../button_timing/button_A.png)
on button A pressed
Let’s test our program by clicking on play ▶
.
on button A pressed
You may have noticed that the animation timing is a little bit too fast. This is because we haven’t told micro:bit how long it should pause before changing the animation.
We can use the Basic
> pause (ms) [100▼]
code block to tell micro:bit to wait for a
little bit before doing the next instruction.
![`pause` Code Block](../button_timing/pause.png)
pause
Code Block
If you click on the down arrow ▼
, you can select the specific time that
micro:bit should wait. You can also manually write the time (in milliseconds).
For our animation, let’s write 500
and let’s place a pause
block between
each show leds
.
![Coding `on button A pressed` with `pause`](../button_timing/button_A_good.png)
on button A pressed
with pause
Now, if you click on play ▶
, we should have the correct timing!
![Testing `on button A pressed` with `pause`](../button_timing/button_A_good.gif)
on button A pressed
with pause
Are you up for a challenge?
Try to program the code for button B
by yourself. There should be a 50 ms
pause
between each LED animation.
![Button and Timing Challenge](../button_timing/control.gif)
Once you finish, you can check your solution with the answer here.