value_str is a way to add text on a button without a separate label.
This saves having an extra label object, but uses more memory and is
removed in LVGL8
The scrollbar would go out of bounds if DROPDOWN_PART_LIST had uneven
padding. Also enable clip_corner feature to stop the selected item from
overflowing.
Don't use relative imports like `../foo.h` as those depend on the
relative position of both files. Rather than that use imports relative
to the `src` directory, which explicitly is part of the include
directories.
`xTaskGetTickCount()` returns a `TickType_t`, which is defined as an
`uint32_t`. This is compared to the `bpm` variable, which is a `int16_t`
in the range of 40 to 220 as defined in the constructor.
```cpp
lv_arc_set_range(bpmArc, 40, 220);
```
Just assume that `bpm` is greater than 0, as this
would result in a divison by zero or negative values, which would
unintentionally underflow to a very large number.
* add basic metronome app
* add bpb, tap to bpm, update widgets
* use event pressed for bpm tap
* move case statement break to the right place
* narrow bpm selection range, override touch events
* fix arc knob style
* re-enable sleeping in destructor