On Arduino Board

What are the six small pins on the far right of the board and what do they do? (on a Duemilanove) :-?

That's called the ICSP (In Circuit Serial Programming) header. It can be used to program the chip directly, via special programmer hardware. Doing so bypasses the bootloader, allowing access to the extra 2K taken up by the bootloader. Consequently, after programming the Arduino in this manner, you would have to reload the bootloader to use that again (via the same ICSP process, which is how the bootloader is put on the chip in the first place), but from what I understand, since the Arduino IDE can be easily configured to allow the use of ICSP programmer hardware, making it as transparent to use as the bootloader, there really isn't any need for the bootloader once you are used to it. So why does the bootloader exist at all? Mainly, I think, to make it easy to get "up and running" for a newbie. Since you are asking this question at all, it seems like you are at the beginning of your learning curve. So, for now, don't worry about it, just know what it is and what it is for. If you find yourself running out of memory at a later date, keep it in mind as an "out"...

:slight_smile:

[edit]Something else I wanted to add - first off, sometimes you will see ICSP and ISP used interchangeably. While technically they don't mean the same thing, semantically they do (ISP stands for "In System Programming") - ICSP is an implementation of ISP, essentially. :wink:

As far as the hardware needed, there are many options, from custom programmers that use a parallel port on the PC, to USB programmers, to even an Arduino running the "ArduinoISP" sketch, which is included in the examples. It is also even possible to use the FTDI chip on the Arduino in a "bit banger" mode (along with some custom wiring) to program via the interface (but this is really a hack; if you ever plan on doing this process for real in the future, I suggest you purchase a real USB programmer, such as an AVRISP MKII, which I have heard is the least hassle to use - while I have no doubt that a hack like this works, it could leave you pulling out your hair or worse your first time out - I'd save it for future experimentation after I was experienced with the process).[/edit]

Thank you very much! ;D

If you had the ICSP programmer to program the Arduino directly then you wouldn't need to use the USB interface. ( in fact you might not even be using the Arduino then at all)

The beauty of the Arduino is that it makes it easy to use nothing but a standard to USB port to program the microcontroller, as opposed to having to buy these expensive ICSP adapters. And these adapter are sometimes a bit complicated to use.