Arduino Genuino Uno

Arduino Genuino Uno by Arduino

Connection Type
Number of servos
Audio Support
Camera Support

Arduino Uno is a microcontroller board based on the ATmega328P and one of the most popular Arduino models. It has 14 digital input/output pins (of which six can be used as PWM outputs), six analog inputs, a 16 MHz quartz crystal, a USB connection, a power jack, an ICSP header, and a reset button.

The UNO can be programmed with the EZB firmware for various capabilities when connected to ARC. The tutorial to program the EZB firmware can be found HERE. This hardware was added to ARC.

Download Firmware Sourcecode

  • DJ's Standard UNO v1 Firmware Sourcecode (Feb 4, 2019)
  • DJ's UNO Firmware with Wheel Encoder Counter (Feb 8, 2019).... uses THIS skill.
  • Board PWM Pins PWM Frequency

    Uno, Nano, Mini

    3, 5, 6, 9, 10, 11

    490 Hz (pins 5 and 6: 980 Hz)


    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 **


    1000 Hz


    3, 5, 6, 9

    pins 3 and 9: 490 Hz, pins 5 and 6: 980 Hz

  • Tutorial to compile and upload the firmware

Related Tutorials

Related Hack Events

Related Questions


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.


awesome, can we provide better documentation than this:

#2   — Edited


Step 1 for Arduino

Plug in your Arduino - Com ?  check which com you are on

set the baud to 5600 in the COMUSB Connection's tab in ARC

Download this firmware to your Arduino

#3   — Edited

Terry & ezang, I moved your comments to here because you responded in an unrelated thread.

There are tutorial videos above, and ezang has it correct - you press the CONNECT button on ARC to connect it to an Arduino after the firmware has been uploaded. The tutorial videos above would be helpful to you if you have never used an Arduino before.

User-inserted image

In addition, Arduino has a lot of information about their product on their website, including programming syntax, etc.

#4   — Edited

Thanks DJ, however, I am EzAng, not Nomad, my buddy lol


Haha - oops (Fixed). my bad ezang :D


I use Adruino all the time:) What i would like to do is call the sketch functions from EZ (possible)

#7   — Edited

You sure can - extend the EZB command protocol and receive it on the Arduino firmware. There's a live hack where I did that; you'll see it here:

It looks like the meat starts at the 22-minute mark

It does require understanding programming, so you will have to have prior experience. The idea is you add a robot skill that extends the ezb communication protocol with new commands. Then, you execute your methods on the EZB firmware side (i.e., Arduino) when the command is received.


oh, i just thought as well - it doesn't sound like you want the EZB capability of the arduino and instead just want to execute methods you have locally compiled into the arduino. That is a much easier way.

Just connect the Arduino to the PC (via usb) or EZB (via UART).

In your Arduino, have a simple "sketch" like so....

void setup() {

  // initialize the baud rate for the communication to the EZB. This is using the USB port

void loop() {

  while (Serial.available) {

    int val = Serial.readByte();

    if (val == 0) {


    } else (val == 1) {



void myFunc1() {

  // do some stuff

void myFunc2() {

  // do some stuff

then, in ARC you only need to send the command via the COM or EZB UART.

I use JavaScript so the COM commands are here: and the EZB commands are here:


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... :)

#13   — Edited

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.

#14   — Edited

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

#15   — Edited

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 :)


EZAng, I am building a B9... currently I have EZ doing the API calls (stock price, weather, and voice recognition), some servo movements, etc... but on my writs and claws, in the Maestro IDE, you can create animation sequences, with many options to slow or speed up servos, or control how smooth they run... then you save each sequence and call it from Adruino or in my case with B9 just running it on timers and delays... since Maestro has no random built in function... but what I lose is if B9 says, "Oooo I could pinch you" I can't sync that voice call from EZ to the Maestro to call a claw movement... making sense? I love the delays, randoms etc, as it gives some natural random ability as I mix that with some Adruino calls to some of my motors using a motor board... but I want to start syncing all this together with EZ to make it more cohesive :)

I learned all about Maestro in my full size Star Wars Chopper build to move his utility arm, head arms, tools, door panels etc... all being called from a XBox controller :)


Sounds cool! I still recommend doing that in the auto position. You can use the same speed and acceleration and velocity and such. You’re familiar with the maestro but you will be limiting yourself if you don’t learn the Auto Position robot skill.

remember that the maestro animator was influenced by the auto position. That’s why they use the same terminology. The difference is that the Auto Position is integrated with ARC and has a ton more features. Since you’re technical, i know you’d be doing a lot with the Auto Position once you learn it

I just don’t want to see your robot being limited

also if you’re using speech recognition for that stuff - have you used the conversation menu robot skill yet? That’s pretty powerful. It’s much easier than the dialog flow.


not sure i know that skill for the conversation... for now, I know it is in another thread... I use one Voice Rec for a call word, so the robot wakes up, pauses that Voice Rec, supplies it to Bing Voice and AI Chat, stores the variable of what it heard and takes action... the issue here is we are limited to the original actor's voice clips we have...

I will have to look at that auto position... :)

#20   — Edited

Sounds like a great project, good luck ...

I agree with DJ, Auto Position is the ticket

Dave Schulpius is the B9 specialist - First Real Look At My Ez-b Controlled Full Size Lis B9 Robot


Oh right the actors voice. That’s pretty cool though that you have it. I remember seeing a program from adobe that allows modeling custom voices from samples. I don’t know what came of it.

There’s 730 robot skills, so probably a lot that you didn’t know about. There’s a few places to browse for them. The robot skill store on the products page, or in the support section.

I usually use this page to start from:

a few people jump right to the community and ignore the rest of the website - so they miss robot skills, manuals, and all sorts of goodies. The community is really a timeline of updates. So if you’re building your robot based on updated stuff, you’ll miss things that have been there for a while

#22   — Edited

i am looking at that now, going to try it out on of my servos... oh yea I know Dave he is the man for sure when it comes to B9

my builds:


On that link that you supplied, I see may wonderful pictures, which pictures are yours?


All those photos are of my builds, not sure I have any photos of my IG11  :)


So besides robot stuff, you are a photographer?


nah, just documenting my builds :)


You have to copy and paste the URL @EzAng if you click on it Synthiam parses the URL and only sends you to Flickr main page.

Nice Builds @TerryBau I love your B9. Amazing work :)

#28   — Edited

Oh I see Nick, thought I was only to click on the link like all the others links

I tested  - I copied and pasted to my word pad  - clicked ctrl and clicked the link went to his robot

copy and past takes me to his robots

just not off this page

#29   — Edited

Weird that flicker uses the @ character in a url without encoding it.

oh i see the browser is decoding it. well isn't that something...



Can the ARC Arduino Uno support this Arduino Uno Sensor Shield... if so how many servo port can the Uno use?

Thanks in advance.


That is merely a breakout board for the uno so it’ll work. I don’t know how many servos an uno can do. I’m guessing one for every digital port according to documentation - but not all will have hardware accuracy. There’s information at the top of this page about that


Thanks for checking DJ.  Looks like 6 servos or 6 PWMs,  What are the other 6 used for  quoted on the top of this page..."Number of servos 12"  but it does not say which port used for 12 servos.  Unless I read it wrong.

Thank you!


the Pins have numbers next to them. See this screenshot

User-inserted image


I seen that,  Thanks for your time DJ.

#35   — Edited

You can try other pins as well, but I can’t verify they work. Arduino is a bit unstable because there’s so many hardware types and open source has no accountability for quality