Pandorabots icon Pandorabots Connects ARC to Pandorabots for AI chat, sends text and gets replies (executes [EZ-Script]), integrates with speech recognition and custom bots Try it →
Unknown Country
Asked

PCA9685 I2C Port Selection

Hi Athena,

I'm using the PCA9685 robot skill in ARC with an EZB v4 controller, and the PCA9685 is connected to the EZB v4 via the I2C port. I'm not getting any response from the module. When selecting a port in the PCA9685 Skill, should I choose a Virtual port?

This is all within my ARC project, and the hardware is connected through the EZB v4 (I2C).



Related Hardware (view all EZB hardware)
EZ-B V4 by EZ-Robot
EZ-B v4/2 robot controller: dual Cortex ARM, Wi-Fi, audio/video, 24 servo/digital ports, I2C/UART, camera and Synthiam ARC control for custom robots
Wi-Fi / USB
Servos 24
Camera
Audio
UART 3
I2C
ADC 8
Digital 24

Related Robot Skill (view all robot skills)
PCA9685 Servo Driver by Synthiam Inc
Drive 16 servos over EZB I2C with a PCA9685 PWM controller, using ARC servo commands and hardware-timed outputs.

ARC Pro

Upgrade to ARC Pro

With Synthiam ARC Pro, you're not just programming a robot; you're shaping the future of automation, one innovative idea at a time.

Author Avatar
PRO
Canada
Twitter YouTube GitHub
#1  

Yes - for the PCA9685 servo Driver skill, you should be using virtual servo ports.

What to select

  • PCA9685 channels map to V0 through V15 by default
  • If you add more than one PCA9685 skill instance, you can assign another window like:
    • V16-V31
    • V32-V47, etc.

Important clarification

The I2C connection is between the EZB v4 and the PCA9685 board.
You do not select the PCA9685 as an I2C port inside the skill. Instead:

  • ARC connects to the EZB v4
  • The PCA9685 skill uses the EZB’s I2C bus
  • You command the servos with virtual servo ports

In the PCA9685 skill settings

Open the skill’s kebab/hamburger menu and check:

  1. I2C Address
    • Most boards default to 0x80 in ARC’s 8-bit format
  2. Port Range
    • Leave it at V0 - V15 for one board
  3. Min s / Max s
    • Defaults are usually fine to start

If nothing responds, check these first

  • PCA9685 has its own servo power
    • The servo rail should be powered by a separate 5-6V supply
  • Common ground is connected
    • PCA9685 GND must be tied to EZB GND and servo power GND
  • I2C wiring
    • SDA to SDA
    • SCL to SCL
  • Board address matches the skill
    • If the address jumpers were changed, ARC must match that address
  • You see the init message
    • The skill should initialize on connect, typically something like:
      • Initialized PCA9685 @ 0x80

Best test

Try commanding a single servo on V0 first.

Reference

If you want, I can help you verify the exact I2C address and skill configuration step by step.

I am a customer support AI and still learning. Please verify important answers in our support documentation. For advanced AI features, use the AI Script Agent built into ARC.
Author Avatar
Unknown Country
#2  

DJ, I have tried to use the IC2 port in the EZB V4 for connection to the PCA9865 with no success - NOTE this is not using an ARDUINO. Using an Oscilloscope shows no clock signal on SCL (shows a steady 3.3v) and 0v on SDA. When doing the same tests on an Arduino NANO I get a pulse on both SDA and SCL from 3.3 to 0v repeated. It seems that the IC2 port does not get activated from ARC? One other thing, the message

Initialized PCA9685 @ 0x80 

appears on the skill screen when it's in your project regardless of any physical attachment to a PCA9685 board. This means you don't really know if its really "seeing" the board at 0x80 - i'm pretty sure it's not from the scope results. I had Google AI write some code to try to talk directly from a Python script in the ARC "Script" skill to the PCA9685 but no response either. Any one in the office or the community have a solution?

Author Avatar
PRO
Canada
Twitter YouTube GitHub
#3  

You’re right to question that "Initialized PCA9685 @ 0x80" message - that line indicates the skill initialized its own configuration, not necessarily that it successfully detected a physical PCA9685 on the bus.

A few important points here:

1) The EZB v4 does use its I2C bus through ARC

If the PCA9685 skill is installed and the EZB v4 is connected, ARC should be able to drive I2C traffic. If your scope shows:

  • SCL steady high
  • SDA steady low
  • no pulsing activity

then that suggests one of these:

  • the I2C transaction is not being triggered
  • the board is not connected/configured as expected
  • the skill is not actually issuing bus traffic
  • wiring or pullups are holding the lines in an unexpected state

2) The PCA9685 skill is a servo driver plugin, not a detector

That init message is essentially a startup/status message. It’s not a "board found" confirmation.

A real hardware verification test is better done by:

  • commanding a servo on a virtual port in the selected range
  • or directly testing the I2C bus activity from ARC

3) On EZB v4, I2C lines should only move when the bus is being accessed

If you want to verify whether ARC is generating I2C traffic, try a very small direct I2C test in the Script skill.

JavaScript test

Use the EZB v4 connection index that your controller is on, usually 0:

// Try a simple I2C write to the PCA9685 default address
// 0x80 is the 8-bit form commonly used with ARC I2C commands
I2C.write(0x80, [0x00, 0x00], 0);
print("I2C write sent");

If ARC accepted the command, but you still see no bus activity, then we need to confirm:

  • the EZB connection index
  • whether the I2C port on the EZB is enabled and wired correctly
  • whether the hardware requires pull-up resistors
  • whether the scope probe point is correct

Even better: read a byte back

var data = I2C.read(0x80, 1, 0);
print("Read done: " + data);

4) PCA9685 boards often need proper power and shared ground

This is the most common cause of "nothing happens":

  • VCC: logic supply
  • V+: servo power supply
  • GND: common ground between EZB, PCA9685, and servo supply

Without shared ground, the signals can look wrong on a scope and the board won’t respond.

5) Your scope observation on the Arduino NANO is a useful comparison

Since the NANO produces activity, that suggests:

  • the PCA9685 board itself may be fine
  • the issue may be specific to the EZB v4 wiring, bus access, or ARC configuration

6) Next thing to check

Please tell me:

  1. Which exact EZB v4 firmware / hardware setup you are using
  2. How the PCA9685 is powered
    • separate 5V supply?
    • powered from EZB?
  3. How SDA/SCL are wired
  4. Whether the EZB v4 is connected in ARC on connection index 0
  5. Whether you have a single PCA9685 board or more than one
  6. If you can, post a screenshot of the PCA9685 skill settings

7) Helpful references

If you want, I can help you build a minimal ARC test project that bypasses the PCA9685 skill entirely and directly confirms whether the EZB v4 is generating I2C traffic on SDA/SCL.

I am a customer support AI and still learning. Please verify important answers in our support documentation. For advanced AI features, use the AI Script Agent built into ARC.
#4  

The ezrobot ezb v4 has an annoyance with the i2c port. And we are surprised you have not encountered this as to why you don’t see activity. The ezb v4 will disconnect if it cannot "talk" to an i2c device. You will notice it disconnect in the ARC log, and the connection button will change from "connected" to "disconnected" state.

Lastly, you can identify when this happens because the red led on the ezb stays illuminated and the ezb requires a reboot.

The way to resolve this is to ensure the i2c device is properly connected before applying power and connecting to the ezb v4.

This is a hardware limitation of the ezrobot ezb v4 and not Synthiam ARC or robot skills.

Author Avatar
PRO
Canada
Twitter YouTube GitHub
#5  

That behavior is consistent with an I2C wiring/handshake problem on the EZ-B v4. If the EZ-B sees the bus held in a bad state or cannot complete the I2C transaction, it can stall and the red LED staying on is a strong clue.

What to do

1) Power everything down first

  • Disconnect power from the EZ-B v4
  • Disconnect the PCA9685
  • Reconnect wiring carefully
  • Then apply power again

This matters because I2C devices should be in a valid state before the EZ-B boots and ARC connects.

2) Verify the wiring

Make sure these are correct:

  • EZ-B SDA PCA9685 SDA
  • EZ-B SCL PCA9685 SCL
  • EZ-B GND PCA9685 GND
  • Servo power ground must also share the same ground

If SDA or SCL is swapped, the bus can appear dead or lock up.

3) Check power to the PCA9685

The PCA9685 board usually has:

  • VCC for logic
  • V+ for servo power

These are not the same thing.

For testing, use a proper external servo supply on V+ and make sure GND is common with the EZ-B.

4) Test with only one I2C device

Remove any other I2C devices from the bus while testing the PCA9685. A shorted or miswired I2C device can hold the bus down and prevent any traffic.

5) Confirm the skill config

In the PCA9685 skill settings, open the kebab/menu and verify:

  • I2C Address = correct address for your board
  • Port Range = V0 - V15 for the first board
  • Leave Min/Max pulse defaults for now

6) Understand the red LED symptom

If the EZ-B red LED stays on and ARC disconnects, that’s usually a sign the EZ-B is hung due to the I2C bus or another hardware issue on the bus. In that case:

  • fix wiring/power
  • power cycle the EZ-B
  • reconnect in ARC

A good isolation test

To determine whether the PCA9685 board is the cause or the EZ-B bus is the issue:

  1. Disconnect the PCA9685 from the EZ-B
  2. Power the EZ-B alone
  3. Confirm ARC connects normally
  4. Reconnect the PCA9685 with power off
  5. Then power the system back on

If the problem returns only when the PCA9685 is connected, then the board, wiring, pullups, or power arrangement is the likely cause.

One important note

The claim that "this is a hardware limitation of the EZ-B v4" is partly true in the sense that I2C bus faults can stall the EZ-B, but it’s not a reason to expect normal bus traffic to be absent. Under correct wiring and power, the PCA9685 should work with ARC through the EZ-B v4.

References

If you want, I can help you build a minimal direct I2C test in ARC JavaScript to verify whether the bus is alive before involving the PCA9685 skill.

I am a customer support AI and still learning. Please verify important answers in our support documentation. For advanced AI features, use the AI Script Agent built into ARC.