Skip to content
Rodeo

I/O connectors

Tested on a bare Seed

examples/io_connectors has run on a Daisy Seed 2, wired to itself: CV1’s DAC read back on CV2’s ADC within 0.1 % across its range, and a digital output read back as an input. Not yet run on a Rev B motherboard, whose connectors add a 1 kΩ series resistor and the quiet 3V3_A supply.

Every Seed pin the motherboard doesn’t need for something else is a 3-pin JST SH connector: ground, the signal through 1 kΩ, and 3.3 V. It’s the pinout the single-pot board uses, so a pot plugs straight into any analog-capable one.

SilkscreenCan do
D1Digital in or out
A1–A7Digital in or out, or analog in
CV1, CV2CV out (0–3.3 V from the DAC), or analog in

Using them

Say what each connector is for, once:

#include "io.h"
rodeo::Io io;
bool ok = io.Init(rodeo::IoConfig()
.Set(board::kIoA1, rodeo::IoMode::kAnalogIn)
.Set(board::kIoD1, rodeo::IoMode::kDigitalInPullUp)
.Set(board::kIoCv1, rodeo::IoMode::kCvOut));

Then read and write by connector:

float knob = io.Read(board::kIoA1); // 0..1, the latest background scan
bool gate = io.Get(board::kIoD1);
io.Write(board::kIoCv1, 0.5f); // half of 3.3 V

The configuration is checked before any pin is touched. Ask for analog on D1, or CV out on anything but CV1/CV2, and Init() returns false with io.Plan().why saying which connector and why. The ADC scans every analog input in the background on DMA, so Read() never waits. Every name is in the API reference.

Limits worth knowing

  • CV range. The DAC reaches 0–3.3 V. Useful CV ranges need an op-amp stage, which belongs on the jack board. With its output buffer on (the default here) it bottoms out a few tens of millivolts above 0 V.
  • Shared interrupts. A3 and A6 (PB1, PC1) share an interrupt line, and so do A7 and CV1 (PC4, PA4). Interrupt-driven gate inputs aren’t in the API yet; when they come, only one of each pair can have one.
  • No 5 V on these connectors.