L’Arduino non va d’accordo con l’ultima versione 11.10 di Ubuntu e Kubuntu/Xubuntu. Esistono 2 problemi: un errore in compilazione e la generazione di codice non perfettamente funzionante.
Andiamo per gradi.
Errore in compilazione.
Con le nuove versioni di avr-gcc si ottiene un errore compilando qualunque sketch per Arduino. Esaminando l’errore viene segnalato un problema con la libreria math.h Questo errore deriva dal fatto che nella libreria in oggetto è stata definita la funzione round che però è anche definita nel core di Arduino. Ovviamente le 2 definizioni vanno in conflitto. Per ovviare a questo problema basta editare il file /hardware/arduino/cores/wiring.h e commentare la riga n° 79 che deve diventare così:
//#define round(x) ((x)>=0?(long)((x)+0.5):(long)((x)-0.5))
Ancora non ho capito se dipende dal nuovo kernel 3.0 (lo stesso identico problema l’ho riscontrato infatti anche su Arch Linux) oppure da qualche file del compilatore con un nuovo bug, fatto sta che allo stato attuale consiglio di NON aggiornare ad Ubuntu 11.10 se utilizzate l’Arduino come ISP.