Paso 4: Crear un makefile
Suponiendo que ya tienes un Arduino sketch que desea programar en el dispositivo, vaya a la carpeta de dibujo. En mi caso, el proyecto se denomina RGBShades:
cd ~/sketchbook/RGBShades
Crear un archivo Make:
gedit Makefile
El contenido del fichero makefile dependerá de las especificaciones exactas de su procesador, que gestor de arranque que desea instalar, etc.. Sin embargo, si su hardware es funcionalmente idéntico a un tablero Arduino-compatible existente, puede ser simple:
BOARD_TAG = pro5v328ARDUINO_PORT = /dev/ttyUSB*ISP_PROG = avrispmkIIISP_PORT = usbinclude /usr/share/arduino/Arduino.mk
En el caso anterior, el BOARD_TAG seleccionado es de la definición de boards.txt por defecto en el software de Arduino. Corresponde a la Arduino Pro Mini con ATmega328 en 5V y 16MHz. El ARDUINO_PORT será típicamente ttyUSB0 si su dispositivo es el único dispositivo USB-serial conectado en este momento, pero el comodín asterisco permite otro puerto números que a veces aparecerá como otro número. Si tienes otros dispositivos USB-serial, necesitará ver qué puertos se utilizan ya y eligen el que aparece cuando está conectado su dispositivo-a-ser-programado.
El Makefile a continuación es lo que realmente usamos para el proyecto de RGBShades:
ARDUINO_QUIET = 1BOARDS_TXT = ~/sketchbook/hardware/RGBShades/boards.txt BOARD_TAG = RGBShades ARDUINO_PORT = /dev/ttyUSB* AVRDUDE_OPTS = -q ISP_PROG = avrispmkii ISP_PORT = usb include /usr/share/arduino/Arduino.mk
El BOARDS_TXT apunta a un fichero de directorio personalizado que permite seleccionar algunos parámetros alternativos y opciones del gestor de arranque. El archivo de boards.txt alternativa contiene la RGBShades de BOARD_TAG. Se agregan un par de otras opciones para reducir la cantidad de texto desplazamiento por mientras los dispositivos de programación. Bastante importante: el valor por defecto AVRDUDE_OPTS deshabilita la verificación (con la opción -V), por lo que es una buena idea AVRDUDE_OPTS a ti mismo. Esto hará que lea nuevamente el programa subido y asegúrese de que el dispositivo fue programado con éxito. En la práctica, vimos un programa fallido una vez cada 50-100 intentos, por lo que la verificación es siempre una buena protección.
El archivo de board.txt de RGBShades se incluye a continuación para completar:
##############################################################RGBShades.name=RGB ShadesRGBShades.upload.protocol=arduinoRGBShades.upload.maximum_size=32256RGBShades.upload.speed=115200RGBShades.bootloader.low_fuses=0xFFRGBShades.bootloader.high_fuses=0xDERGBShades.bootloader.extended_fuses=0x05RGBShades.bootloader.unlock_bits=0x3FRGBShades.bootloader.lock_bits=0x0FRGBShades.bootloader.path=optibootRGBShades.bootloader.file=optiboot_atmega328.hexRGBShades.build.mcu=atmega328pRGBShades.build.f_cpu=16000000LRGBShades.build.core=arduinoRGBShades.build.variant=eightanaloginputs##############################################################
Puesto que el código de RGBShades también requirió una biblioteca externa (FastLED) este se instaló como de costumbre en la carpeta ~/sketchbook/libraries/.
A continuación, crearemos un script para automatizar el proceso de programación.