Apologies to Phil but maybe I can save him some time with a basic guide...
The bootloader that is supplied ready installed on any arduino based board that has a built in usb port is there to allow you to program the microprocessor directly from the USB connection. This firmware takes up some of the limited program space and also usually introduces a delay to the uP running its user-installed program. There are a couple of ways of achieving this function - by delay or by jumper. Because the uP needs to know if it should be executing its user-installed program or waiting to accept a new program it has to wait for a set time (can be up to 5 seconds) to see if it is being addressed on its 'data input' pins.. if it is it goes into 'accept data' mode, if it is not then it starts to execute its user-installed program.... hence the delay in starting to function. The other method used by some uP's involve moving a jumper on the uP board to inform the processor that you want to install new firmware, but the arduino boards generally don't use this method.
There is another way of installing new firmware... you can address the uP directly by squirting data into it on its In Circuit Serial Programming pins (ICSP = Sck(clock), MISO(master in slave out), MOSI(Master out slave in), RST(reset) + and - pins. If you search and print out the pinout diagrams (
https://forum.arduino.cc/index.php?topic=147582.0) for the board you are using you should find the pins that are marked with these designations - on a nano they are -
sck - D13
MISO - D12
MOSI - D11
RST - RST
+ - 5v (or 3v3 if you have a 3v3 version)
- - GND
In order to program the Arduino in this way you are going to need a programmer because you cannot use the USB port. I guess the most common programmer you will find will be a USBASP (
https://www.ebay.co.uk/sch/i.html?_from ... p&_sacat=0). These come with a 10 way ribbon cable but it will be easier if you also get the 10 to 6 way adapter... you will see these on ebay and they are marked with the mosi,miso,sck,Rst.gnd & vcc so you will know how to connect it to your arduino.
Next comes the tricky part.. at least if you are ysing windows...linux users don't need to bother with a driver as it is already built in to the kernel, but for windows users you are going to need a driver. download zadig (
http://zadig.akeo.ie), then, with zadig open insert your new usbasp into a serial port, after the 'ding-dong' you should be able to select usbasp from the big window in zadig, then you need to ensure you have WinUSB(v6.1.7600.16385) in the window on the right. Once this is all ok you can press install driver. If this is successful you should find your USBasp under Universal Serial Bus devices....if it is anywhere else I don't think it will work... re-trace your steps..
Next you need to download your 'sketch' and fire up the Arduino IDE, open the sketch (file - open) , make sure that you have selected the correct board for the arduino board you are using (tools - board) and then make the six connections between your arduino and the programmer and then plug your usbasp into your computer usb port - the power led should light on the Arduino. To upload the firmware to the Arduino you DO NOT use the little right arrow in the IDE icon bar... this is for SERIAL upload via the USB port.. instead you have to select tools/programmer/usbasp and then sketch/upload using programmer....et voila!!
The firmware will be uploaded to the Arduino BUT it will most likely (thankfully) overwrite the existing bootloader as the bootloader resides within the program space - which means that once you have uploaded via a programmer in order to use the USB to program in the future you will have to re-install the bootloader..notice under tools you will see 'burn bootloader' clicking on this will re-install the default Arduino bootloader back onto your Arduino ( and screw up your program in the process)
ok.. so hopefully you now have your desired program installed on your Arduino and without the bootloader it should startup pretty quickly after power is applied.