The Buttons
On this page:
The state of the buttons and the scrollwheel is communicated via the button UART. (See pinouts.) To initialize the buttons a certain sequence of bytes is sent to the front panel. After that the panel sends bytes which encode the current button and scrollwheel state in regular intervals.
The interface settings are as follows:
baudrate | bits | paritybit | stopbits |
---|---|---|---|
38400 | 8 | even | 1 |
With these parameters it is possible to communicate with the "button part" of the display with an microcontroller or with a PC.
To initialize the "button part" of the front panel a sequence of bytes is sent to the frontpanel via the button UART. The bytes are sent two bytes at a time, so one command seems to consist of two bytes. The panel acknowledges each sent pair with "0x02".
If the buttons are not initialized the state of the buttons is communicated nevertheless but does not include the state of the scrollwheel.
The bytes are as follows:
command nr. | bytes | meaning |
---|---|---|
1 | 0xFE 0xDC | reset UART communication |
2 | 0x02 0x20 | ? |
3 | 0x0E 0xFF | ? |
4 | 0x0F 0xFF | ? |
5 | 0x0D 0x00 | ? |
6 | 0x0C 0x1F | ? |
7 | 0x03 0x01 | ? |
8 | 0x0A 0x19 | ? |
9 | 0x0A 0x11 | Scrollwheel on |
10 | 0x0B 0x05 | Set frequency with which the state of the buttons is sent |
11 | 0x02 0x20 | ? |
12 | 0x0E 0xFF | ? |
The front panel sends two bytes over the button-UART in intervals to communicate the state of the buttons and scrollwheel. Byte 1 expresses the state of the buttons, byte 2 the state of the scrollwheel.
pressed button | byte 1 (hex) |
---|---|
none | 0xC0 |
down | 0xC1 |
left | 0xC2 |
gray "diamond" | 0xC9 |
up | 0xCA |
plus | 0xD1 |
navi | 0xD2 |
minus | 0xD9 |
OK | 0xDA |
gray "diamond" | 0xF1 |
Home | 0xF2 |
screenkey right | 0xF9 |
screenkey left | 0xFA |
right | 0xE9 |
back | 0xEA |
The scrollwheel position seems to use a counter that overflows after 64 steps.
scrollwheel position | byte 2 (hex) |
---|---|
0 | 0x80 |
... | ... |
63 | 0xBF |
As can be seen it can be easily distinguished between byte 1 and 2 ( Byte 1 is always >=0xC0, Byte 2<=0xBF )
Before power off 0x0E 0xFF 0x0A 0x00 0x00 is sent to the front panel.
To use the buttons 3,3 V is connected to the "power" and "reset" pins, surprisingly GND is connected to ground. ;) After that the following byte sequence is sent to the display as explained above:
0xFE 0xDC 0x02 0x20 0x0E 0xFF 0x0F 0xFF 0x0D 0x00 0x0C 0x1F 0x03 0x01 0x0A 0x19 0x0A 0x11 0x0B 0x05 0x02 0x20 0x0E 0xFF
Every pair of bytes is acknowledge with 0x20 via UART. After that the current button and scrollwheel state can be determined using the table above and the bytes that the panel is sending over UART.