Bluetooth Serial Connect Docs
Component catalog

Pick controls for input and readouts for output

Each component has one job, one channel, one wire message, and one Arduino method pattern. Channels run 0-19 per component type, so Button 0 and Slider 0 can both exist.

5 components

Controls

Control

Button

App → Arduino

Momentary, latching, or repeating button presses.

Wire message B0:D / B0:U / B0:R
Arduino method wasButtonPressed(0)

Best foractions: fire, save, start, stop, step, or mode select.

Arduino example
if (serialConnect.wasButtonPressed(0)) {
  serialConnect.sendAlert("Pressed");
}
Control

Joystick

App → Arduino

A two-axis control that streams angle and distance from center.

Wire message J0:90,0.500
Arduino method getJoystick(0)

Best fordrive direction, pan/tilt rigs, servos, and motion speed.

Arduino example
if (serialConnect.isJoystickUpdated(0)) {
  BluetoothSerialConnectJoystick joy = serialConnect.getJoystick(0);
  int left = joy.getY() * 255 + joy.getX() * 120;
}
Control

Slider

App → Arduino

A one-axis value within the min, max, and step you set in the app.

Wire message S0:127
Arduino method getSlider(0)

Best forPWM, speed, brightness, volume, thresholds, and setpoints.

Arduino example
if (serialConnect.isSliderUpdated(0)) {
  analogWrite(9, (int)serialConnect.getSlider(0));
}
Control

Toggle

App → Arduino

A switch that holds on or off until the user taps it again.

Wire message T0:1 / T0:0
Arduino method isToggleOn(0)

Best forrelays, arming states, enable flags, and persistent modes.

Arduino example
if (serialConnect.wasToggleUpdated(0)) {
  digitalWrite(2, serialConnect.isToggleOn(0) ? HIGH : LOW);
}
Control

D-Pad

App → Arduino

Four directional buttons with down/up lifecycle events and optional repeat while held.

Wire message P0:U,D / P0:U,U
Arduino method wasDpadPressed(0, BluetoothSerialConnectDpadUp)

Best formenus, stepper movement, cursor control, and simple vehicles.

Arduino example
if (serialConnect.wasDpadPressed(0, BluetoothSerialConnectDpadUp)) {
  Serial.println("up");
}
4 components

Readouts

Readout

Text Display

Arduino → App

An LCD-style text area for changing status or sensor text.

Wire message D0:Ready
Arduino method setDisplay("Ready", 0)

Best forlogs, labels with values, counters, and short multi-line output.

Arduino example
serialConnect.setDisplay(String("Temp: ") + tempC + " C", 0);
Readout

Label

Arduino → App

Plain text that your sketch can replace at runtime.

Wire message L0:Online
Arduino method setLabel("Online", 0)

Best forconnection state, selected mode, names, and simple messages.

Arduino example
serialConnect.setLabel(isRunning ? "Running" : "Idle", 0);
Readout

Indicator

Arduino → App

A visual on/off light controlled by the device.

Wire message I0:1 / I0:0
Arduino method setIndicator(true, 0)

Best formotor state, limit switches, relay status, and warnings.

Arduino example
serialConnect.setIndicator(digitalRead(7) == HIGH, 0);
Readout

Gauge

Arduino → App

A numeric meter that fills within the range configured in the app.

Wire message G0:73.5
Arduino method setGauge(value, 0)

Best forbattery, temperature, distance, pressure, and percentage values.

Arduino example
double volts = analogRead(A0) * (5.0 / 1023.0);
serialConnect.setGauge(volts, 0, 2);
1 option

Console and alerts

Console

Console + Alert

Both ways

Free text from the app console, plus pop-up messages from Arduino.

Wire message C:start / A:Done
Arduino method getMessage() / sendAlert()

Best forcommands, diagnostics, calibration, and one-shot notices.

Arduino example
if (serialConnect.hasMessage()) {
  String command = serialConnect.getMessage();
}

serialConnect.sendAlert("Saved");
Read controls in loop()
void loop() {
  serialConnect.readSerial();

  // Toggle T0 -> a relay, mirrored to indicator I0.
  if (serialConnect.wasToggleUpdated(0)) {
    bool on = serialConnect.isToggleOn(0);
    digitalWrite(2, on ? HIGH : LOW);
    serialConnect.setIndicator(on, 0);
  }

  // Slider S0 (its configured range) -> PWM.
  if (serialConnect.isSliderUpdated(0)) {
    analogWrite(9, (int)serialConnect.getSlider(0));
  }

  // D-Pad P0 directions.
  if (serialConnect.wasDpadPressed(0, BluetoothSerialConnectDpadUp)) {
    Serial.println("Up");
  }
}
Update readouts in loop()
void loop() {
  serialConnect.readSerial();

  // Device -> app readouts (channels match the board's components).
  serialConnect.setGauge(analogRead(A0) * (5.0 / 1023.0), 0, 2); // gauge G0, 2 decimals
  serialConnect.setLabel("Online", 0);                            // label L0
  serialConnect.setIndicator(digitalRead(7), 0);                  // indicator I0
  serialConnect.setDisplay("Ready", 0);                           // text display D0
}