IO Port Types

Every Synthiam ARC-powered robot relies on ports to sense and interact with the world. Ports are the physical connection points on any Synthiam ARC EZB controller/firmware where hardware devices plug in, such as servos, sensors, LEDs, buttons, cameras, and motor controllers. Without ports, your robot would have no way to move, detect objects, respond to input, or communicate with other electronics.

In simple terms, a port is how information and power flow between your robot’s brain (the EZ-B) and the real world. When ARC sends a command, it travels through a port to a device. When a sensor detects something, the information is returned to ARC via a port. Understanding ports is one of the most essential fundamentals of robotics, because every action your robot performs depends on them.

Ports are often described using the term I/O, which stands for Input / Output. Input means data flowing into the EZ-B (such as a sensor reading or button press). Output means data or power flowing out of the EZ-B (such as moving a servo, turning on an LED, or sending data to another device). Some ports can do both input and output, while others are designed for only one direction.

Different devices require different types of signals. Some devices require only an on/off signal, while others require precise voltage measurements or high-speed digital communication. Because of this, the EZ-B provides several port types, each optimized for a specific task. ARC makes working with these ports easy by abstracting the low-level electronics, letting you focus on your robot’s behavior rather than the raw wiring details.

The sections below explain each port type in detail: what they are used for, how they behave electrically, and the types of devices commonly connected to them. If you are new to robotics, read this carefully—understanding ports will make everything else in ARC much easier to learn.

Digital

Digital ports work with signals that are either True (On) or False (Off). There is no in-between value. A True value indicates a voltage above approximately 1V, while a False value indicates a ground connection (GND). ARC digital ports are labelled D0 through D23.

Output: When a digital port is set to True, it outputs +3.3V. When set to False, it outputs GND. This makes digital ports ideal for controlling devices that only need on/off control.

Input: When reading a digital port, ARC reports True if the voltage is above GND (and below +5V). A short to GND is read as False.

Standard devices connected to digital ports include switches, buttons, servos, ultrasonic distance sensors, LEDs, and simple logic-level peripherals.

ADC (Analog Input)

ADC stands for Analog-to-Digital Converter. These ports are input-only and measure varying voltages rather than simple on/off states. In ARC, ADC ports are labelled ADC0 through ADC7.

Reading relative voltage: ADC values can be returned as numeric ranges. In 8-bit mode, values range from 0 to 255. In 12-bit mode, values range from 0 to 4095. These numbers represent a voltage range of 0–5V. For example (8-bit): 0 = 0V, 127 ≈ 2.5V, 255 = 5V.

Reading absolute voltage: ARC can also return the actual measured voltage value in volts, making it easy to monitor sensor output without manual calculations.

Typical analog devices include Sharp GP2 distance sensors, pressure sensors, light sensors, sound sensors, color sensors, potentiometers, and general-purpose voltage monitoring.

Serial (TX Only)

Most digital ports on the EZ-B can transmit serial data. Serial communication sends data one bit at a time, allowing more complex information to be transmitted than simple on/off signals. Some EZB models also include dedicated high-speed UART ports for buffered communication.

Both the transmitting and receiving devices must be configured to the same baud rate (communication speed). Standard baud rates include 300, 4800, 9600, 19200, 38400, 57600, and 115200 bits per second (bps).

Serial output is commonly used to control devices such as LCDs and motor or servo controllers, and to communicate with microcontrollers like Arduino boards or robots such as the iRobot Roomba.

UART Serial (Bi-Directional)

UART ports provide bidirectional, accurate serial communication, enabling data to be sent and received. These ports connect to TTL-level serial devices and include a 5,000-byte input buffer for incoming data. UART communication is handled using the UARTInit(), UARTWrite(), UARTRead(), and UARTAvailable() commands in ARC.

UART baud rates can be set to any integer value between 1 and 3,750,000 bps, making them suitable for both slow sensors and high-speed data devices.

I2C

I2C, also known as the Two-Wire Interface, uses two shared signal lines: Serial Data Line (SDA) and Serial Clock Line (SCL). Multiple devices can be connected to the same I2C bus, and each device has a unique address.

I2C is commonly used for compact, low-pin-count devices such as LCD screens, I2C-enabled servos, BlinkM multicolor LEDs, sensors, and other innovative peripherals.

Click here for more information on understanding I2C addressing.