Arduino Genuino Uno by Arduino
Firmware
EZ Wheel Encoder firmware for Arduino UNO integrates with Synthiam ARC Wheel Encoder Counter for interrupt-driven encoder tracking and EZB commands.
Convert an Arduino Uno into an EZ-B with DJ's firmware to control servos, read digital ports and PWM.
The Arduino / Genuino Uno is a small microcontroller board based on the ATmega328P. A microcontroller is like a tiny computer that can read sensors, turn outputs on/off, and control motors and LEDs. The Uno is one of the most common Arduino boards, which makes it a great choice for beginners because there are lots of examples and community support.
The Uno includes:
- 14 digital pins (labeled D0–D13) for on/off input and output
- 6 analog input pins (labeled A0–A5) for reading changing voltages from sensors
- 6 PWM-capable pins (a special type of digital output used for dimming LEDs or controlling motor speed)
- USB port for connecting to your computer (programming + often power)
- Barrel power jack for an external power supply
- Reset button to restart the program on the board
- ICSP header (advanced programming/pin access; most beginners won’t need this)
When used with Synthiam ARC, the Uno can be loaded (flashed) with EZB firmware. This firmware lets ARC communicate with the Uno so ARC can control the pins (read sensors, set digital outputs, use PWM, etc.) from your ARC project.
Follow the step-by-step tutorial here: Tutorial to compile and upload the firmware
Understanding PWM (for beginners)
PWM stands for Pulse Width Modulation. PWM pins turn ON and OFF very quickly. By changing how long the signal stays ON vs OFF, the Arduino can simulate “partial power.”
- Common uses: dim an LED, control DC motor speed, control some types of buzzers
- Not the same as Servo control: servos use a different style of pulse timing (ARC handles servo signaling depending on your setup/controller)
- PWM frequency is how fast the ON/OFF switching happens. Different boards/pins have different default PWM frequencies.
| Board | PWM Pins | Default PWM Frequency |
|---|---|---|
| Uno, Nano, Mini | 3, 5, 6, 9, 10, 11 | 490 Hz (pins 5 and 6: 980 Hz) |
| Mega | 2 - 13, 44 - 46 | 490 Hz (pins 4 and 13: 980 Hz) |
| Leonardo, Micro, Yún | 3, 5, 6, 9, 10, 11, 13 | 490 Hz (pins 3 and 11: 980 Hz) |
| Uno WiFi Rev2, Nano Every | 3, 5, 6, 9, 10 | 976 Hz |
| MKR boards * | 0 - 8, 10, A3, A4 | 732 Hz |
| MKR1000 WiFi * | 0 - 8, 10, 11, A3, A4 | 732 Hz |
| Zero * | 3 - 13, A0, A1 | 732 Hz |
| Nano 33 IoT * | 2, 3, 5, 6, 9 - 12, A2, A3, A5 | 732 Hz |
| Nano 33 BLE/BLE Sense | 1 - 13, A0 - A7 | 500 Hz |
| Due ** | 2 - 13 | 1000 Hz |
| 101 | 3, 5, 6, 9 | pins 3 and 9: 490 Hz, pins 5 and 6: 980 Hz |
Quick start checklist
- Connect the Arduino Uno to your computer using a USB cable.
- Use the firmware tutorial to compile and upload the EZB firmware: HERE.
- Open ARC and connect to the Uno using the appropriate ARC connection method for your firmware/controller setup.
- Test a simple function first (example: toggle a digital pin with an LED, or read a sensor value) before wiring motors or more complex electronics.

yes that is what i want to do
what is the wiring connection from the Adruino Uno (in this case) to the EZ
What kind of ezb are you using? But the wiring would be from the arduino uart to the ezb uart. The tx to rx. Rx to tx. And a common gnd. You can look at the data sheet for the ezb that you’re using to find the uart ports. They’re all different based on the manufacturer.
ahhh so same way to hook up a adruino to a maestro.. that makes sense... then in the script in the EZ, I can call an adruino function...
Not really. In the script in ARC you send a value. And on the ardunio the value gets read and calls a method.
electronics is like playdoh, and there’s no standard across companies or products. So it’s always a bit of research to get the info necessary to connect things together. In this case, you’ll be having an arduino be a slave to an ezb over a uart.
The arduino sits and waits for a value (command) to be sent over the uart. Then, the arduino calls the appropriate method by the value.
there really isn’t an easier way to do it.
if you’re wanting to connect a maestro to an ezb via uart, the same thing would apply. Connect the wires and send uart commands from arc.
TerryBau, using the Maestro servo Controller, Arduino, EzB, code, you got my curiosity, what are you building?
I use the ARC , Auto Position - Arduino and PCA 9685 for 16 servos
Like from ARC you send a value of 0 over the uart, the arduino will receive it and execute the myFunc1() method. Thats the example I posted above
you can’t call myFunc1() from ARC into the ardunio. That’s because once you compile the code, the myFunc1() is just a memory address and doesn’t exist anymore. It could even be multiple memory addresses if the compiler is smart enough to in-line. You can’t call a method by it’s name after it’s compiled to machine code. So you add IF conditions to call the method from a value.
ahhh that is even eaiser DJ