BBR Button Board Documentation

Display tiles and legends#

A display tile shows text and pictures that can change during a match. On a screen key the display is inside the cap, so the key’s legend changes: the same key can say INTAKE in one part of a match and CLIMB in another. The disp2 colour display shows the same kind of stored pictures on a larger panel, next to the keys rather than in one.

The display tiles#

Tile Panel Keys Pictures
disp1 128 × 32 monochrome, 21 columns × 4 rows of text none no
disp2 160 × 128 colour, 13 columns × 8 rows of text none streamed, and 32 stored
screenkey1 128 × 128 colour, inside a key cap 1 streamed, and 32 stored

disp1 shows readouts: match time, a mechanism state, a message from the robot. disp2 shows the same in colour, plus full-colour pictures: a mode, a target, a status image. screenkey1 is one key whose cap is the screen.

All three are ordinary tiles: they go anywhere on the chain and are addressed like any other.

Showing text and pictures#

A display tile shows text in a grid of characters, drawn in the tile’s own font.

There are two ways to show a picture:

Stream it Store it in a slot
Colours Two, dithered Full colour
Time to show ~0.2 s, every time A few milliseconds
Time to load none a few seconds, once
Kept where nowhere; the panel holds it until cleared the tile’s own flash chip

Stream a picture you show once. Store the pictures you use as legends.

screenkey1 and disp2 each store up to 32 pictures. Each numbered place is a slot.

Loading a picture into a slot#

In the config app’s Configure screen, select the tile (screenkey1 or disp2) and find the Picture section of the inspector.

  1. Choose an image file. The app shows you what the tile will actually draw — re-sized and encoded for that panel — not the file you picked.
  2. Set send as to a stored picture.
  3. Choose the slot and, on a colour panel, the encoding. Full colour is rgb565; the one-bit form is smaller and faster to load.
  4. Press Store in slot n.

The slot is erased when the transfer starts and holds a picture again only once the whole transfer has arrived and its checksum matches. An interrupted store leaves the slot empty, never half-drawn. If it fails, the app says so; store it again.

Checking and reusing stored pictures#

The Slots section lists the slots, with Show, Load and Erase buttons.

  • Check slots asks the tile what each slot holds: empty, or a picture with its format and size. It takes well under a second. A picture stored from this page is shown by its file name.
  • Load reads a picture back from the tile into the Picture editor. From there you can change its colours or format, or store it in another slot, without the original file. Reading is slower than storing: about 8 seconds for a full-colour picture, 1 second for a two-colour one.

Pictures stay on the tile through power cycles. Slot read-back needs current tile firmware; an older tile answers Check slots with an error.

Binding legend codes#

A stored picture is switched by a number, and that number is what robot code sends. A code names an entry in a map, which says which tile and which slot, so the panel layout or the pictures can change without changing robot code. The Legend codes section of the same inspector binds them.

There are fifteen codes, 1 to 15, shared by every display tile on the board. Each row picks a slot on the tile you have selected. One code can only point at one tile and slot, so a screenkey1 and a disp2 that change together need a code each.

Code Bound to
1 slot 0 — intake.png
2 slot 3 — climb.png
3 unbound

A code with no binding does nothing, and so does a binding whose tile is unplugged or whose slot is empty. No error is shown.

Zero is never a legend. Zero stops a rumble and leaves every screen unchanged.

Bindings are part of your saved configuration, so press Save when you are happy with them.

Getting them there from a terminal#

Everything above is also a command on the serial channel:

python3 tools/bbctl.py --rumble-list              # what is bound now
python3 tools/bbctl.py --rumble-bind 3 5 0        # code 3 → tile 5, slot 0

Loading a picture is disp <addr> slot <n> begin/data/end, which tools/bb wraps.

Next#

Once the pictures are stored and the codes are bound, the robot can switch between them mid-match — see Changing legends in a match.