Serial protocol
Serial protocol to control LabBoard from Arduino or external device, like PC.
Command must start with LB prefix, separated by :, ending with new line symbol \n.
Example: Serial.print("LB:OUT:DAC1:1500\n") or Serial.println("LB:OUT:DAC1:1500")
Protocol:
| Command | Description |
|---|---|
LB:<group>:<cmd>:<value> |
Write value to specific command |
LB:<group>:<cmd>:? |
Request to read specific command |
LB:<group>:? |
Request to read all commands in group |
LB:? |
Request to read all LabBoard commands |
LB:<group>:<cmd>:! |
Enable notify for specific command. !0 - disable |
LB:<group>:! |
Enable notify for all commands in group. !0 - disable |
LB:! |
Enable notify for all LabBoard commands. !0 - disable |
Examples:
Calling LB:OUT:DAC1:1500 will change DAC1 output to 1.5 Volts.
Calling LB:OUT:DAC1:? will return current value of DAC1 - LB:OUT:DAC1:1500.
Calling LB:IN:? will return of all 5 "Voltage input" commands with values.
Calling LB:IN:5V:! will stream LB:IN:5V:1000 value on each change.
Voltage input
Read voltage of VIN, ±50V, ±5V, ±0.5V pins and current of SHUNT pin.
| Command | Parameter | Description |
|---|---|---|
LB:IN:VIN: |
6000 - 30000 mV |
VIN pin voltage |
LB:IN:50V: |
-50000 - 50000 mV |
±50V pin voltage |
LB:IN:5V: |
-6150 - 6150 mV |
±5V pin voltage |
LB:IN:05V: |
-700 - 700 mV |
±0.5V pin voltage |
LB:IN:AMP: |
0 - 800 mA |
SHUNT pin current |
LB:IN:50V and LB:IN:05V limits can vary a bit.
Read instructions how to setup current measurement.
-100000 is returned if measurement is invalid or over the limit.
Channel overvoltage may invalidate measurements of other channels also.
Voltage output
Set voltage to VREG, DAC1, DAC2, DAC3 pins.
| Command | Parameter | Description |
|---|---|---|
LB:OUT:VREG: |
3000 - VIN - 1000 mV |
VREG pin voltage |
LB:OUT:DAC1: |
0 - 3250 mV |
DAC1 pin voltage |
LB:OUT:DAC2: |
0 - 3250 mV |
DAC2 pin voltage |
LB:OUT:DAC3: |
0 - 3250 mV |
DAC3 pin voltage |
LB:OUT:VREG maximum voltage depends on VIN voltage, which is 15V with provided DC power supply. In this case, output range is - 3000 - 14000 mV.
Frequency generator
Output configurable Pulse-width modulation to TXD pin.

| Command | Parameter | Description |
|---|---|---|
LB:TXD:RUN: |
0 - stop 1 - start TXD 2 - start TXD burst |
Generator control |
LB:TXD:FHZ: |
1 - 1000000 Hz |
Frequency in hertz |
LB:TXD:FUS: |
1 - 1000000 μs |
Frequency in microseconds |
LB:TXD:DUS: |
0 - 1000000 μs |
Duty cycle in microseconds |
LB:TXD:DPCT: |
0 - 1000 % |
Duty cycle percentage (% * 10) |
LB:TXD:CNT: |
0 - 65535 |
Pulses count in burst mode |
LB:TXD:FHZ is tied to LB:TXD:FUS. Both control output frequency but with different units.
LB:TXD:DUS is tied to LB:TXD:DPCT. Both control output duty cycle but with different units.
LB:TXD:DUS maximum value is limited by LB:TXD:FUS. Pulse width can't be longer than Period.
LB:TXD:DPCT is percentage multiplied by 10 for more precision.
LB:TXD:CNT is a number of pulses to generate when calling command LB:TXD:RUN:2.
Frequency monitor
Measure frequency with DIG1 pin.
| Command | Parameter | Description |
|---|---|---|
LB:RXD:RUN: |
0 - disable RXD 1 - enable RXD |
Monitor control |
LB:RXD:EDGE: |
0 - LOW edge 1 - HIGH edge |
Sample (detect) edge. Default: HIGH |
LB:RXD:CNT: |
write: 0 - reset to 0 read: pulses count |
Number of pulses |
LB:RXD:FHZ: |
read: 0 - 23000000 hertz |
Measured frequency |
Digital inputs
Read state of digital DIG1 and DIG2 pins.
| Command | Parameter | Description |
|---|---|---|
LB:DIG1: |
0 - LOW 1 - HIGH |
Digital pin state |
LB:DIG2: |
0 - LOW 1 - HIGH |
Digital pin state |
Display control
| Command | Parameter | Description |
|---|---|---|
LB:DISP:TXT:<text> |
string | Put text on display (align left) |
LB:DISP:TXT:<seg>:<text> |
<seg> : 0 - 8 <text> : string |
Put text on display (offset from left) |
LB:DISP:DIM: |
0 - 15 |
Display brightness |
LB:DISP:BLI:<rate> |
<rate> : milliseconds |
Display blink rate |
LB:DISP:BLI:<hex>:<rate> |
<hex> : HEX value 0 - 1FF<rate> : milliseconds |
Display segment blink rate |
LB:DISP:MON: |
0 - disabled 1 - enabled |
Serial monitor mode Default: enabled |
<text> is a string of 9 characters. Symbols . , will use dot segment. Example: DISP 4.567.
<hex> is map of segments that will be affected. There are 9 segments, starting at from left.
<rate> is blinking frequency in milliseconds. Setting 0 will disable blinking.
LB:DISP:MON is a feature to print Serial.println() content to display in 4. SERIAL mode.
Key press
Read currently pressed LabBoard keys.
| Command | Parameter | Description |
|---|---|---|
LB:KEY:<hex> |
<hex>: HEX value 0 - 1F |
Binary map of pressed keys |
<hex>:
B00001 - SET-
B00010 - SET+
B00100 - Right SELECT
B01000 - Middle SELECT
B10000 - Left SELECT
LB:KEY returns HEXdecimal value. Example: LB:KEY:C converts to B01100. This means that keys Right SELECT and Middle SELECT are currently pressed.
LED control
Control individual LabBoard LED.
| Command | Parameter | Description |
|---|---|---|
LB:LED:<hex> |
<hex>: HEX value 0 - 7FF |
Binary map of LED state |
LB:LED:<num>:<state> |
<num>: LED number 1 - 11 <state>: 0 - off, 1 - on |
State of specific LED |
LED names
| Number | Name on board | Binary map |
|---|---|---|
| 0 | All | B00000000000 |
| 1 | DIG1 | B00000000001 |
| 2 | DIG2 | B00000000010 |
| 3 | ±50V | B00000000100 |
| 4 | ±5V | B00000001000 |
| 5 | ±0.5V | B00000010000 |
| 6 | DAC1 | B00000100000 |
| 7 | DAC2 | B00001000000 |
| 8 | DAC3 | B00010000000 |
| 9 | VIN | B00100000000 |
| 10 | VREG | B01000000000 |
| 11 | mAmp | B10000000000 |
<hex> is binary map on turned on LEDs.
<num> is number of LED in a list from DIG1 to mAmp. Starting at digit 1 to 11. 0 - all.
<state> is state of LED. 0 - lit off, 1 - lit on.
Example: command LB:LED:2C will turn on ±50V, ±5V and DAC1. All other - off.
Example: command LB:LED:10:1 will turn on mAmp. Does not change other LED.
Configuration
Control LabBoard settings.
| Command | Parameter | Description |
|---|---|---|
LB:CFG:REV: |
22 23 |
Revision number |
LB:CFG:VER: |
200 |
Firmware version |
LB:CFG:SBAUD: |
57600 |
Default serial baud rate |
LB:CFG:SMODE: |
0 - PC 1 - Arduino |
Default serial mode Default: Arduino |
LB:CFG:SON: |
0 - off 1 - on |
Background serial mode Default: off |
LB:CFG:DISP: |
7 |
Display brightness |
LB:CFG:VREG: |
0 |
Calibration offset |
LB:CFG:DAC1: |
0 |
Calibration offset |
LB:CFG:DAC2: |
0 |
Calibration offset |
LB:CFG:DAC3: |
0 |
Calibration offset |
LB:CFG:VIN: |
0 |
Calibration offset |
LB:CFG:50V: |
0 |
Calibration offset |
LB:CFG:5V: |
0 |
Calibration offset |
LB:CFG:05V: |
0 |
Calibration offset |
LB:CFG:RST: |
1 |
Reset all configuration Restart required after. |
LB:CFG:REV is board revision number. v.2.1 and v.2.2 both returns 22.
LB:CFG:VER is firmware version number. 250 converts to 2.50.
LB:CFG:DISP is default display brightness. Value between 0 and 15.
Calibration offset is a drift from correct measurement in mV. Can be negative.
System control
| Command | Parameter | Description |
|---|---|---|
LB:BOOT: |
1 |
Restart in boot mode |
LB:RST: |
1 |
Restart LabBoard |
Boot mode is used during firmware update.