Je suis actuellement sur un projet codé en C qui comporte plusieurs dizaines de fichiers. Afin d'améliorer ce code je voudrai ajouter une partie ( comptage des impulsions d'un encodeur). Pour cela j'ai trouvé un composant qui fonctionne sous language "Arduino" j'aimerai donc traduire ce code pour l'ajouter a mon projet (même microcontroleur) qui est en C. Après avoir parcouru le net je ne trouve rien qui puisse m'aider à faire ça.
Il n'y a pas de "language Arduino", il n'y a que du C et du Cpp.
Ce qu'on appelle improprement du langage arduino c'est une bibliothèque de fonctions qui simplifient la vie.
Exemple pour configurer une Entrée/sortie soit en entrée soit en sortie il faut aller modifier la valeur de certains registres, pour savoir lesquels il faut lire une datasheet de 500 pages , la fonction arduino: pinMode(numéro de pin, INPUT ou OUTPUT) le fait "élégament".
La bibliothèque arduino privilégie la simplicité d'usage à l'optimisation, il peut y avoir des surprises désagréables pour quelqu'un habitué à d'autres styles de programmation.
Pour avoir le code de la bibliothèque arduino c'est très simple : tu télécharge l'IDE et tu cherches dans l'arboressence (elle peut varier entre win,linux,mac) et tu trouvera le "core" avec l'ensemble des fichiers c,cpp et h.
Pour avoir la documentation des fonctions c'est encore plus simple : c'est sur ce site : Learning-> Reference.
En faisant un petit peu de recherche sur internet on trouve des tutos pour utiliser la bibliothèque "arduino" avec Eclipse, Code::Blocs et Netbeens
Et pour le "langage arduino" adapté à ton composant c'est boule de cristal puisque tu ne nous dit pas de quoi il s'agit.
Ubuntu c'est du Debian. L'IDE mode arduino est coupée en 2 paquets :
1 paquet IDE seule
1 paquet "core", qui pour toi devrait être le seul indispensable.
J'ai pu réussir à compiler mon ancien programme en ajoutant des fonctions spécifique à arduino en spécifiant simplement le dossier "core" qui se trouve dans le dossier "arduino"
Petit complément : certaines fonctions demandent une configuration préalable, comme celles qui utilisent les timers (exemple non exclusif). Cette configuration se fait par la fonction init() qui se trouve dans wiring.c
Je me suis rendu compte que ma fonction delay(); ne fonctionnait pas. Ca compile maisla led ne blink pas (et rien sur oscilloscope). Comme tu l'as bien indiqué, ça vient d'un problème de timer.
Pour faire fonctionner la librairie j'ai juste défini la valeur de F_CPU (16000000l), je me demande s'il ne faudrait pas configurer d'autres paramétres et comment les integrer (j'utiliser une mega 2560).
Edit : chose curieuse : la fonction delayMicroseconds(); fonctionne.... Je continue à creuser !
Les fonctions millis(); et micros(); ne fonctionnent pas
C'est ce que je viens de t'écrire il faut éxécuter la fonction init() ou plus efficacement regarder dans la fonction init() ce dont tu as réellement besoin.
Edit :
Il existe toujours les fonctions _delay() et consœur de l'avr-libc qui n'utilisent pas les timers mais les subtilités du micro : comme c'est Atmel qui a fait le micro et qui écrit l'avr-libc il sait comment c'est fait à l'intérieur .
Arduino c'est pas mieux que ce que fait Atmel.