Examples

IBUS Basic Example

Atmel AVR

/*!
 * @file ibus_basic.ino
 */
#include <SerialIO.h>

rc_channels_t channelData;

ibus receiver(&Serial);

void setup() { 
  receiver.begin();
}

void loop() {
  receiver.processIncoming();
  receiver.getChannel(&channelData);

  // `channelData` now contains the latest RC channel values
  // You can use them by accessing the channelData e.g. channelData.channel1 to channelData.channel16
}

RP2040

/*!
 * @file ibus_basic.ino
 */
/*

# Sample platformio.ini file:
# ---------------------------
[platformio]
default_envs = ws-rp2040-zero

[env:ws-rp2040-zero]
platform = https://github.com/maxgerhardt/platform-raspberrypi.git
board = waveshare_rp2040_pizero
framework = arduino
board_build.core = earlephilhower
monitor_speed = 115200

lib_deps =
  https://github.com/Witty-Wizard/SerialIO
*/

#include <SerialIO.h>

#define IBUS_TX_PIN 0
#define IBUS_RX_PIN 1

rc_channels_t rcdata;
// On RP2040 or Arduino ESP32 you need to specify the TX and RX pins
ibus receiver(&Serial1, IBUS_RX_PIN, IBUS_TX_PIN,
              true); // RP2040 requires the TX_PIN so to not hang up the mcu

void setup() {
  // setup ibus receiver
  receiver.begin();

  Serial.begin(115200);
}

void loop() {
  static unsigned long last_millis = millis();

  receiver.processIncoming();
  receiver.getChannel(&rcdata);

  if (millis() > last_millis + 100) {
    Serial.printf("RC: %4d %4d %4d %4d %4d %4d %4d %4d %4d %4d %4d %4d %4d %4d",
                  rcdata.channel1, rcdata.channel2, rcdata.channel3,
                  rcdata.channel4, rcdata.channel5, rcdata.channel6,
                  rcdata.channel7, rcdata.channel8, rcdata.channel9,
                  rcdata.channel10, rcdata.channel11, rcdata.channel12,
                  rcdata.channel13, rcdata.channel14);
    Serial.println();
    last_millis = millis();
  }
}

Crossfire Basic Example

Atmel AVR

/*!
 * @file crsf_basic.ino
 */
#include <SerialIO.h>

rc_channels_t channelData;

crsf receiver(&Serial);

void setup() { 
  receiver.begin();
}

void loop() {
  // setup crsf receiver
  receiver.processIncoming();
  receiver.getChannel(&channelData);

  // `channelData` now contains the latest RC channel values
  // You can use them by accessing the channelData e.g. channelData.channel1 to channelData.channel16
}

RP2040

/*!
 * @file crsf_basic.ino
 */
/*

# Sample platformio.ini file:
# ---------------------------
[platformio]
default_envs = ws-rp2040-zero

[env:ws-rp2040-zero]
platform = https://github.com/maxgerhardt/platform-raspberrypi.git
board = waveshare_rp2040_pizero
framework = arduino
board_build.core = earlephilhower
monitor_speed = 115200

lib_deps =
  https://github.com/Witty-Wizard/SerialIO
*/

#include <SerialIO.h>

#define CRSF_TX_PIN 0
#define CRSF_RX_PIN 1

rc_channels_t rcdata;
// On RP2040 or Arduino ESP32 you need to specify the TX and RX pins
crsf receiver(&Serial1, CRSF_RX_PIN, CRSF_TX_PIN,
              true); // RP2040 requires the TX_PIN so to not hang up the mcu

void setup() {
  // setup crsf receiver
  receiver.begin();

  Serial.begin(115200);
}

void loop() {
  static unsigned long last_millis = millis();

  receiver.processIncoming();
  receiver.getChannel(&rcdata);

  if (millis() > last_millis + 100) {
    Serial.printf("RC: %4d %4d %4d %4d %4d %4d %4d %4d %4d %4d %4d %4d %4d %4d",
                  rcdata.channel1, rcdata.channel2, rcdata.channel3,
                  rcdata.channel4, rcdata.channel5, rcdata.channel6,
                  rcdata.channel7, rcdata.channel8, rcdata.channel9,
                  rcdata.channel10, rcdata.channel11, rcdata.channel12,
                  rcdata.channel13, rcdata.channel14);
    Serial.println();
    last_millis = millis();
  }
}

SBUS Basic Example

Atmel AVR

/*!
 * @file sbus_basic.ino
 */
#include <SerialIO.h>

rc_channels_t channelData;

sbus receiver(&Serial);

void setup() { 
  receiver.begin();
}

void loop() {
  // setup sbus receiver
  receiver.processIncoming();
  receiver.getChannel(&channelData);

  // `channelData` now contains the latest RC channel values
  // You can use them by accessing the channelData e.g. channelData.channel1 to channelData.channel16
}

RP2040

/*!
 * @file sbus_basic.ino
 */
/*

# Sample platformio.ini file:
# ---------------------------
[platformio]
default_envs = ws-rp2040-zero

[env:ws-rp2040-zero]
platform = https://github.com/maxgerhardt/platform-raspberrypi.git
board = waveshare_rp2040_pizero
framework = arduino
board_build.core = earlephilhower
monitor_speed = 115200

lib_deps =
  https://github.com/Witty-Wizard/SerialIO
*/

#include <SerialIO.h>

#define SBUS_TX_PIN 0
#define SBUS_RX_PIN 1

rc_channels_t rcdata;
// On RP2040 or Arduino ESP32 you need to specify the TX and RX pins
sbus receiver(&Serial1, SBUS_RX_PIN, SBUS_TX_PIN,
              true); // RP2040 requires the TX_PIN so to not hang up the mcu

void setup() {
  // setup sbus receiver
  receiver.begin();

  Serial.begin(115200);
}

void loop() {
  static unsigned long last_millis = millis();

  receiver.processIncoming();
  receiver.getChannel(&rcdata);

  if (millis() > last_millis + 100) {
    Serial.printf("RC: %4d %4d %4d %4d %4d %4d %4d %4d %4d %4d %4d %4d %4d %4d",
                  rcdata.channel1, rcdata.channel2, rcdata.channel3,
                  rcdata.channel4, rcdata.channel5, rcdata.channel6,
                  rcdata.channel7, rcdata.channel8, rcdata.channel9,
                  rcdata.channel10, rcdata.channel11, rcdata.channel12,
                  rcdata.channel13, rcdata.channel14);
    Serial.println();
    last_millis = millis();
  }
}