Arduino vs standalone microcotroller programming


I am quite new in the field. I hope my question does not bother you all. Arduino is great to program and use. But if i need to produce standalone micro-controller(e.g in the case of manufacturing a device) i guess i need to know pic programming, C language, programmer kit ect.

1) Arduino is not using C. 2) Using Arduino board i can not program any PIC microcontrollers or ect.

My question is that if i make a device and can not use Arduino for the ultimate goal, it means i also have to learn pic programming and many other aspects? Is Arduino just for testing your ideas rather than implementing them for standalone use.


Arduino is not using C.

Yes it is, C or C++, absolutely bog standard.

Using Arduino board i can not program any PIC microcontrollers or ect.

PIC programming has nothing to do with Arduino as it uses AVR chips. Totally different product line, PIC are made by Microchip, AVRs by Atmel. All official Arduinos use AVR chips.

You can easily use an "Arduino" without using the whole board, the simplest method is just remove the chip (if it's a DIP) after programming and plug it into your PCB. But you can use AVR Studio to program any AVR and you can (AFAIK) also just burn the HEX file produced by the Arduino AVR using a ISP programmer. Certainly I've burnt bootloaders that way.

Search for "standalone Arduino" there are 100s of examples.


For a standalone device (not using the Arduino PCB) you can use a 328P that has the bootloader and program that chip in the Arduino board and remove the chip and install it on your own board. Or you can use the ArduinoISP program and load a program directly to an AVR chip directly.

Or you could go through the same process with a number of other microcontrollers which will all do about the same job, they just use a different set of tools and have other options.

The 328P used on Arduinos comes in 2 forms. One is referred to as a DIP (dual inline package) and has 2 rows of 14 pins (pins are 0.1 inches apart and the 2 rows are 0.3 inches apart) and a version that is a small, square surface mount package. The DIP version is easier to work with for most off-board prototyping. I have a DIP version that is mounted on a breadboard and also has a MAX232 connected so I can program it. I use it just like and Arduino board, just use RS232 instead of USB to program and communicate.

If you have the surface mount type Arduino board you can use it as an ISP to program the bootloader in the DIP type 328P on the breadboard.

"The 328P used on Arduinos comes in 2 forms."

Well, 3 actually, the third is an even small surface mount package, with no leads. 28 pin DIP ATMega328P-PU typically used (and often confused with ATMega328-PU, which has different "signature byte") 32 pin TQFP ATMega328P-AU used on many small boards like the ProMini, Nano, Fio 32 pin 'leadless' part, ATMega328P-MU Not often seen on boards

Cut a long story short -

There is an awful lot you can do with Arduino The community support is excellent There are lots of off the shelf libraries, break out boards and shields that can get you deep into your chosen project fast

Its easy to build your own standalone and cheap - less than 10 USD.

Its a very good feeling the first few times you build a standalone Arduino for a project, I have two on my desk now, one in an Audino Synthesizer that took a day to build and one in a RC Car/Go Kart Lap Timer, both build from just the chip and supporting components, not a ready built Arduino.

Duane B

You really need to consider "Arduino" as two parts...

First, the official development board. It's nothing but a life-support system for an AVR microprocessor. Take the chip off the board, provide your own power, crystal, and serial I/O, and you still have an Arduino. As posted above, that's Arduino on a Breadboard, and is documented very thoroughly all over the place.

Second... there's the software. The IDE is just that -- a text editor and build environment. Nothing special about it at all, except it shortcuts the learning curve considerably. No need to worry about getting your toolchain set up, having the right versions of everything ... it just works, out of the box. However, it's not required that you use the IDE.

You can take the Arduino libraries and import them into AVR Studio, take your .INO (or .PDE) files and import them as .cpp and .h files (after adding the necessary includes and function prototypes that you get for free from the IDE build scripts), and there you go.

The libraries are just convenient wrappers to all the AVR-specific code. You can replace all your calls to "digitalWrite" and "shiftOut", etc., with your own functions or loops, then drop the Arduino includes entirely. As mentioned above, Arduino code is C/C++.

So, you see, if you want to go "standalone", you can -- to any degree that you wish. There's a very direct, and fairly painless, upgrade path to any level of independence that you want. It's just a booster for rapid development, not really anything unique.