Arduino or ARM

I was wondering if I wanted to make a complex robot, what would be some pros and cons of using ARM over Arduino?

Much higher performance, more I/Os, more peripherals, debugger, and more memory.

If you are building a spider type robot, a bunch of ARMS won't be very useful.

I think an ARM would be better although it depends on how complex your robot will be. That said most current robots seem to do well with an AVR chip.

If you're willing to wait you can have both, an Arduino and an ARM if th eDue gets released.


A brief list of pros/cons

Cons vs AVR

  • larger code (but you tend to have more flash available)
  • often higher cost
  • 3v vs 5v outputs
  • lower current outputs
  • many existing libraries won't work
  • less knowledge base on using "arduino" environment on non AVR chips.

Pros vs AVR

  • 32 bit
  • MUCH faster
  • more RAM
  • No more harvard architecture worries and having to deal with things like progmem etc...

If you want to use an Arduino environment you can use the Chipkit (MIPS processor)
or Maple (ARM) now rather than wait on the DUE.
The nice thing about the Chipkit development environment (mpide) is that it is designed to support
multiple processors.
So you can use both the AVR processors and the MIPS processors with the same single environment
and IDE.

The Maple uses its own IDE that is only for the Maple.

While not all the libraries work on the Chipkit or Maple as some of them are hard coded for AVR
(the DUE will have the same issues) it is available today vs ????? for the DUE.

--- bill

It also depends on how efficiently you can make use of the available resources. Your programming skills are a strong deciding factor as to what is suitable. If you still have a learning curve to get through ( c++, electronics, transport ( spi, i2c ) ) you will benefit yourself by using the easier system to use. A more complex system requires a greater background knowledge to use properly, by jumping in the deep end assumptions will start to creep into your design and may eventually ruin or degrade your original idea.

If I was to throw a party, what would be better: a big cake or some cookies? Apples or oranges?

Without more details on what "complex" means, answering the question is an exercise in futility. The Arduino is based on a Microcontroller. It is good at controlling things. Processors with an ARM-core (ARM doesn't sell silicon), are generally Microprocessors. They are good at processing data.

Just as with my party question you first decide what you want the party to be first, then you decide what to get for it.

ARM designs both MPUs and MCUs. The NXP 28-pin LPC1114 is a typical MCU:

ARM didn't design the LPC1114, it just uses a licenced ARM core, a Cortex-M0.

I love the fact the the LPCs are available in small packs, using a wide 28-pin is a little strange but at least it's a DIP.


It is strange, given that they will be producing a SOIC version. The 0.3" DIP28 package that Microchip uses for the PIC32 is much nicer.

That version of the LPC1114 isn't generally available yet, I got some samples from a contact at NXP.

ARM didn't design the LPC1114, it just uses a licenced ARM core, a Cortex-M0.

I didn't say that ARM designed the LPC1114!

Sorry, you're right, you didn't.

I just picked up on this topic and had a related question - if you don't mind -

Can you program PICs and ARM etc. using the Arduino language or do you use pure C++ or even Assembly?


using the Arduino language or do you use pure C++

The Arduino language is C++


That's fightin' talk in these parts, stranger.

You can use C/C++ on PIC and ARMs, the "Arduino language" is just C/C++ with some libraries so if someone has ported the libraries to an ARM or PIC platform then yes you can use Arduino code. If not then you can't unless you are willing to port the libraries yourself.

There are some ARM and PIC platforms that are supposed to support the Arduino and do so with varying degrees of compatibility.


I would imagine it depends on what you want to do. You probably should step back, and think what you want your robot to do first. Off the top of my head, the things to consider include:

  • What do you want your robot to do at a high level?
  • How many servos and motors will you need?
  • Are you going to want to incorporate vision/camera/video to your robot?
  • What is your budget?
  • How much local processing are you going to need on your robot?
  • What is your programming experience?
  • Is your robot going to be tethered to a wall socket, or if battery powered, have you done a back of the envelope calculation of the power needed?

Basically, the ARM is more powerful than the ATmegas that are in Arduinos, but on the other hand it is likely more expensive to get started. If you've never programmed before, the Arduino is likely easier to start with, because of sites like this. I suspect you might want to start with an Arduino, and if it meets your needs great, but if you run into the limits, upgrade, reusing all of the parts of the robot except for the central processor.

Yet another option, the Netduino. That's an ARM board that runs the .NET micro framework (NETMF). You program it in C# instead of C/C++ like an Arduino. The advantages of this is that its easy to code and also debug, since there is a source level debugger.

The downside is that .NET is really not a real time system, so if your robot is in a critical role like manufacturing it is probably not suitable. But if you're building a robot for a FIRST competition or just for fun, it should be fine.