Arduino e Emacs? Nessun problema!


Se non si è troppo convinti del limitante (pur utilissimo) IDE di Arduino, una valida alternativa per scrivere codice .pde o .ino utilizzando Emacs:

Una rapida guida alla configurazione e alla compilazione.

1) Scaricare arduino-mode.el da:
https://github.com/bookest/arduino-mode
2) Copiare il file arduino-mode.el nella cartella di sistema di Emacs:
$ cp arduino-mode.el ~/.emacs.d/
3) Modificare il file ~/.emacs aggiungendo le seguenti righe:
(add-to-list 'load-path "~/.emacs.d/")
(load "arduino-mode.el")

4) Scaricare il makefile e il parse delle boards e copiarli rispettivamente nella directory che contiene i progetti di arduino (o nella directory dove è installato l'IDE di Arduino) e nei bin di sistema:
$ wget http://mjo.tc/atelier/2009/02/acli/arduino-mk_0.8.tar.gz
$ tar xzvf arduino-mk_0.8.tar.gz
$ cp arduino-mk-0.8/Arduino.mk /path/arduino/stuff/Arduino.mk
$ cp arduino-mk-0.8/ard-parse-boards /usr/local/bin
5) Modificare il file Arduino.mk sostituendo la riga:
do $$STTYF /dev/tty >/dev/null 2>/dev/null && break ; \
con
do $$STTYF $(ARD_PORT) >/dev/null 2>/dev/null && break ; \

6) Creare un Makefile nella cartella contenente i file .ino da compilare contenente le seguenti righe:
ARDUINO_DIR = /path/installazione/arduino
PARSE_BOARD = /usr/local/bin/ard-parse-boards
BOARD_TAG = uno
ARDUINO_PORT = /dev/ttyACM0
ARDUINO_LIBS =
AVR_TOOLS_PATH = /usr/bin
AVRDUDE_CONF = /etc/avrdude.conf
include ~/path/arduino/stuff/Arduino.mk

Modificare le variabili in base al proprio sistema (in particolare la ARDUINO_PORT).

Infine, per compilare utilizzare il comando make (da shell o da Emacs):
$ make arduino_project.ino
per trasferire il codice compilato sulla board Arduino:
$ make upload

Per inviare input alla porta seriale (in questo esempio la /dev/ttyACM0) attraverso la shell:
$ echo valore > /dev/ttyACM0

Per leggere dalla porta seriale:
$ tail -f /dev/ttyACM0


[Fonti: http://emacswiki.org/emacs/ArduinoSupport
           http://mjo.tc/atelier/2009/02/arduino-cli.html
           http://arduino.cc/playground/Linux/Udev]