Go Down

Topic: Arduino et POO (Read 1 time) previous topic - next topic

Manu404

Je consultait des turoriaux sur l'arduino concernant la gestion de servo-moteur. Le librairie est servo.h. Dans l'utilisation il faut instanciè un objet de la classe Servo... Instancié un objet en C ????
Ma question est donc : l'arduino peut-être programmé en utilisant un une apporche POO et est donc programmé en C++ et non en C ?

Si c'est le cas, les classes sont aussi envoyé sur l'arduino (pour pouvoir créé les objets lors de l'execution) alors que la POO est très gourmande en ressource ?

Merci d'avance

Inform@tiquement
Manu404
" Je n'ai jamais rencontré d'homme si ignorant qu'il n'eut quelque chose à m'apprendre " - Galilée - 1635

Luj06

#1
May 24, 2009, 09:33 pm Last Edit: May 24, 2009, 09:35 pm by julien@pobot.org Reason: 1
Oui c'est du C++. Mais ça eut pu être du C structuré pour faire comme de l'objet (http://chgi.developpez.com/c/objet/)

Regarde simplement ton répertoire Arduino et en particulier : arduino-00xx\hardware\libraries\Servo et tu verras des fichiers cpp, ce qui peut répondre à ta question (sauf si les développeurs sont des pervers qui utilisent une extension cpp pour du code C, on en a déjà vu...)

Non pour la seconde partie de ta question. Le code est compilé et ça ne veut rien dire "les classes sont envoyées (conjugaison !) sur l'Arduino". C'est pas une JVM non plus (même si ça existe, voir la KVM ou kilobyte virtual machine) mais le compilo va simplement retrouver les fonctions appelées et les considérer comme des appels de fonction standards.

Par contre ta question est légitime : attention à ta conception, car il y a une pile d'appels de fonction limitée (configurable mais oublie cette possibilité) qu'il faut prendre en compte, en évitant les appels de fonction imbriqués.

Par exemple, perdez l'habitude de faire des fonctions pour tout, genre "afficheValeur(50);" avec une fonction afficheValeur(int val) qui va simplement faire un Serial.print(val); --> écrivez Serial.print partout et puis marre.


Manu404

Désolé, je me suis mal exprimé, je voulais dire que les classes pouvaient être "compilé" (en plus des objets) pour l'allocation dynamique de la mémoire (et donc la création dynamique d'objet) et j'imaginais déjà les possibilités de l'arduino décuplées par 1000. Concernant les sources, tu vas rire mais... Je n'ai pas encore mon arduino (il arrivera courant de la semaine) et le compilateur n'est pas encore installé. Je ne fait que lire de cours/tutoriel dessus ainsi que l'électronique en générale, pour le moment je me documente sur les CI logiques (rien de bien compliqué en somme quand on fait déja de la programmation).
Donc je n'ai pu vérifier dans le .h si c'était une class ou un struct...


Quote
Par exemple, perdez l'habitude de faire des fonctions pour tout, genre "afficheValeur(50);" avec une fonction afficheValeur(int val) qui va simplement faire un Serial.print(val); --> écrivez Serial.print partout et puis marre.


Après plusieurs années de POO pur et dure ou ce genre de fonctions font foison sa vas être dur... (c'est presque devenu une habitude) Mais je prend note.

Merci pour ta réponse

Inform@tiquement
Manu404

" Je n'ai jamais rencontré d'homme si ignorant qu'il n'eut quelque chose à m'apprendre " - Galilée - 1635

Go Up