LOCODUINO

Forum de discussion
Dépôt GIT Locoduino
Flux RSS

vendredi 28 avril 2017

7 visiteurs en ce moment

Le monde des objets (1)

L’arduino est-il un objet ?

. Par : Thierry

Des objets dans l’Arduino ?

L’environnement de programmation de l’Arduino, l’IDE, permet de créer des programmes pour les processeurs Atmel qui équipent presque toute la famille Arduino [1]. Ces programmes sont écrits en C, mais peuvent aussi l’être en C++ que l’IDE accepte également. Et s’il l’accepte, c’est parce que ce n’est pas l’IDE qui compile, c’est à dire qui transforme le texte que vous avez tapé dans l’IDE, simple éditeur de texte, en programme exécutable pour un Arduino. Le vrai compilateur est caché derrière : il s’appelle Gcc. C’est un compilateur C++ bien connu, Open Source comme l’Arduino, c’est à dire conçu et maintenu par une communauté libre et indépendante.

Un peu d’histoire

Le C est un vieux langage des années 1970 qui a évolué lentement dans sa syntaxe et ses possibilités. Au départ, proche du matériel qu’il est chargé de faire fonctionner, son adaptabilité le propage très vite au delà de son rôle initial d’écriture de systèmes d’exploitation comme Unix. Dans les années 80, les bases du C++ sont créées. La première règle : vous ne payez pas pour ce que vous n’utilisez pas. C’est à dire que les programmes C créés jusqu’alors doivent fonctionner sans changement ni pénalité de temps d’exécution. C’est pourquoi le C++ est juste un sur-ensemble du C. Quelques mot-clés supplémentaires, de nouveaux concepts, mais rien (ou presque, hein…) qui rentre en conflit avec les milliers d’anciens programmes. Le C, et plus encore le C++ sont encore largement utilisés aujourd’hui, bien que leur rôle ait diminué avec l’apparition de nouveaux langages qui ont gommé leurs plus criants défauts : Java et surtout C#, le successeur officiel de la famille (si on regarde plus attentivement le #, on voit bien que ce sont deux ’++’ superposés !).

Comme Mr Jourdain…

L’essentiel des programmes et bibliothèques Arduino que l’on trouve partout utilisent principalement le C. Mais par moment, un œil averti décèle des bizarreries dans la syntaxe :

  1. Serial.begin(9600);
  2. Serial.print("Bonjour, je suis un Arduino");

Typiquement, la syntaxe nom.fonction() n’existe pas en C pur. C’est du C++. Serial est un objet, et pour lequel le source montré ici appelle deux fonctions membres [2] : begin et print.
Un autre exemple très connu :

  1. Servo monservo;
  2. monservo.attach(10);
  3. monservo.write(90);

La bibliothèque servo utilise un code C++ pour fonctionner. Servo monservo; crée un objet nommé monservo de type Servo, comme on écrirait int i; . Puis on demande à cet objet de se relier à la pin 10 de l’Arduino avec attach(), et ensuite de se déplacer avec write() à 90 degrés. Notez qu’on le demande à monservo, et pas à un autre…

En fait, le monde Arduino se sert du C++ sans le savoir !

Mais qu’apporte le C++ ?

Comme on vient de le voir, la nouveauté du C++, c’est le modèle objet. Le monde réel est constitué d’objets et d’éléments que l’on pourrait considérer comme tels. Le C++ tente de mimer la réalité en créant des modèles de ces objets : les classes. Chaque objet transporte les données dont il a besoin pour exister et les comportements pour les gérer. Le programme principal n’a plus à s’occuper de la tripaille, mais seulement des grandes lignes : lorsque le bouton bout1 est pressé, cela bouge le servo monservo ! Et c’est monservo qui sait comment provoquer le mouvement, et ne pas bouger s’il est déjà en place…

On peut voir un objet comme une boite, qui contient les données qui le caractérise (le numéro de pin ou la position courante pour le servo) : monservo a un numéro de pin mais monautreservo a un autre numéro de pin ! C’est ce que l’on appelle l’encapsulation (premier mot compliqué du jargon objet !). Par contre, tous les deux savent s’initialiser grâce à attach() et se déplacer avec write(). Ce sont les méthodes de la classe, qui peuvent s’exécuter indifféremment sur tous les objets de type Servo.

Je vous laisse digérer ces concepts. La suite dans le prochain article.

Et merci à Jean-Luc et Guillaume pour l’aide apportée par la relecture et les propositions de structuration de l’article et de ses suivants !

[1Mais c’est également vrai pour les micro-contrôleurs ARM qui équipent l’Arduino Due et bientôt le Zero.

[2Membre parce que faisant partie de l’objet.

2 Messages

Réagissez à « Le monde des objets (1) »

Qui êtes-vous ?
Votre message

Pour créer des paragraphes, laissez simplement des lignes vides.

Lien hypertexte

(Si votre message se réfère à un article publié sur le Web, ou à une page fournissant plus d’informations, vous pouvez indiquer ci-après le titre de la page et son adresse.)

Rubrique « Programmation »

Comment gérer le temps dans un programme ?

La programmation, qu’est ce que c’est

Types, constantes et variables

Installation de l’IDE Arduino

Répéter des instructions : les boucles

Les interruptions (1)

Instructions conditionnelles : le if … else

Instructions conditionnelles : le switch … case

Comment gérer l’aléatoire ?

Calculer avec l’Arduino (1)

Calculer avec l’Arduino (2)

Les structures

Systèmes de numération

Les fonctions

Trois façons de déclarer des constantes

Transcription d’un programme simple en programmation objet

Les chaînes de caractères

Trucs, astuces et choses à ne pas faire !

Les pointeurs (1)

Les pointeurs (2)

Les Timers (I)

Les Timers (II)

Les Timers (III)

Les Timers (IV)

Les Timers (V)

Bien utiliser l’IDE d’Arduino (1)

Bien utiliser l’IDE d’Arduino (2)

Les derniers articles

Bien utiliser l’IDE d’Arduino (2)


Thierry

Bien utiliser l’IDE d’Arduino (1)


Christian Bézanger, Dominique, Jean-Luc, Thierry

Les Timers (V)


Christian Bézanger

Trucs, astuces et choses à ne pas faire !


Dominique

Le monde des objets (4)


Thierry

Les pointeurs (2)


Thierry

Les chaînes de caractères


Thierry

Transcription d’un programme simple en programmation objet


Dominique, Guillaume, Jean-Luc

Les pointeurs (1)


Thierry

Comment gérer l’aléatoire ?


Dominique, Guillaume, Jean-Luc

Les articles les plus lus

Les interruptions (1)

Les Timers (I)

Les Timers (II)

Comment gérer le temps dans un programme ?

Calculer avec l’Arduino (1)

Les Timers (IV)

Répéter des instructions : les boucles

Les chaînes de caractères

Les Timers (III)

Instructions conditionnelles : le if … else