1. Livres & vidéos
  2. Arduino
  3. Programmation de l'Arduino
Extrait - Arduino Apprivoisez l'électronique et le codage avec les langages Arduino et MicroPython (4e édition)
Extraits du livre
Arduino Apprivoisez l'électronique et le codage avec les langages Arduino et MicroPython (4e édition) Revenir à la page d'achat du livre

Programmation de l'Arduino

L’IDE Arduino

L’IDE (Integrated Development Environment)  Arduino, que l’on pourrait traduire par Environnement de développement intégré est né en même temps que l’Arduino. C’est une évolution de Wiring et de Processing (d’autres langages écrits sous licences libres avant la création de l’Arduino). 

Le langage Arduino est un langage compilé (très proche des langages C et C++). Le code source écrit par l’utilisateur (dans un langage compréhensible par les humains) doit être traduit en code binaire (le langage du microcontrôleur de l’Arduino) avant d’être téléversé.

images/05LF01.png

Compilation et téléversement du code dans l’Arduino

Le code binaire est très performant puisqu’il parle le même langage que le microcontrôleur. Il est très rapide et nécessite peu de ressources. Il est donc parfaitement adapté aux microcontrôleurs peu puissants (comme par exemple l’ATmega328P qui équipe l’Arduino Uno R3 et qui fonctionne à seulement 16 MHz).

Mais le code dans sa version binaire est incompréhensible pour l’utilisateur humain. Il est donc impossible de le corriger. Pour modifier le programme, il faut absolument éditer le code source, le recompiler et le téléverser à nouveau.

En l’absence du code source, toute modification est impossible et cela pose des questions de sécurité puisqu’il est impossible de vérifier que le programme ne collecte pas vos données personnelles pour les envoyer (à votre insu) à un serveur distant.

Il existe d’autres solutions, comme par exemple le MicroPython (qui est également présenté dans ce chapitre et qui est bien sûr détaillé dans le chapitre MicroPython). C’est un langage interprété...

Programmation par blocs

Au lieu d’apprendre un langage avec une syntaxe exigeante (afin d’écrire des lignes de code), vous déplacez des gros blocs de code colorés avec la souris. En réalité, il ne s’agit pas vraiment d’un autre langage, c’est une interface qui génère le texte du code source (en langage Arduino) à la place de l’utilisateur.

Le principe de la programmation par blocs repose sur la transcription d’un organigramme de programmation (logigramme). Cette approche (popularisée par Scratch) est très intuitive. Elle s’adresse plutôt aux enfants et aux débutants parce qu’elle fournit rapidement des résultats encourageants. Ce type de langage est donc beaucoup utilisé en milieu scolaire.

images/05LF11.png

L’organigramme de programmation et le code du site Vittascience

1. Scratch

Scratch n’a pas été conçu pour programmer directement l’Arduino. Cependant, il est quand même possible d’ajouter des extensions pour piloter en temps réel un Arduino (en lui envoyant des instructions par le câble USB).

Pour cela, il faut au préalable téléverser un sketch spécifique dans la mémoire de l’Arduino avec l’IDE (cette opération n’est à réaliser qu’une seule fois). Ensuite, vous devez lancer un programme spécifique...

MicroPython

Si vous connaissez déjà le langage Python, vous ne serez pas dépaysé puisque le MicroPython en conserve la structure et les instructions. Du point de vue de l’utilisateur, il semble que le Python a simplement été un peu adapté pour fonctionner sur nos microcontrôleurs, mais en réalité, le MicroPython a complètement été réécrit pour être parfaitement optimisé.

Contrairement au langage Arduino qui nécessite une phase de compilation avant le téléversement, le MicroPython est un langage interprété. C’est le microcontrôleur qui se charge de la traduction en temps réel du code source (texte écrit dans un langage compréhensible par les humains) en langage machine (constitué seulement de 0 et de 1).

images/05LF17.png

L’Arduino interprète directement le code source

Il est parfaitement adapté pour l’apprentissage parce qu’il est concis et que les modifications du code source sont instantanément prises en compte (il n’y a plus besoin de le recompiler).

Mais le MicroPython est moins performant que langage Arduino, puisqu’une partie des ressources sont affectées à interprétation du code. Seules quelques cartes Arduino sont équipées d’un microcontrôleur suffisamment puissant (et avec assez de mémoire)...

Déboguer mon programme

Un bug (ou bogue en français) désigne un problème dans le fonctionnement normal d’un programme. Il est apparu en même temps que l’informatique.

Les premiers ordinateurs étaient très gros. Ils pesaient plusieurs tonnes, consommaient énormément d’électricité et chauffaient beaucoup. Les composants étaient donc à l’air libre pour un meilleur refroidissement. La légende dit que parfois, des insectes (bugs en anglais) attirés par la chaleur s’approchaient. Cela pouvait causer des courts-circuits et provoquer des dysfonctionnements. Par la suite, les informaticiens auraient (pour plaisanter) continué à attribuer les erreurs dans les programmes informatiques à des insectes virtuels qui viendraient perturber le fonctionnement normal.

Beaucoup de bugs sont causés par la différence de fonctionnement entre le cerveau humain et l’ordinateur (ou l’Arduino dans notre cas).

Par exemple, le langage de programmation de l’Arduino (basé sur le C et le C++) oblige à terminer chaque instruction par un point-virgule. Si vous en oubliez un dans le programme, l’humain qui relit le programme peut s’adapter, car il comprend les instructions (peut-être qu’il ne remarque même pas l’erreur), mais la machine est incapable d’interpréter...

L’optimisation du code

En programmation, il y a souvent plusieurs façons d’arriver au même résultat. Votre code est aussi personnel que n’importe quel texte écrit. Il reflète votre façon de penser. Il est important de se l’approprier. C’est votre Arduino, c’est votre code. Mais dans tous les langages, il y a des règles à respecter. Et les personnes qui les maîtrisent sont plus performantes.

L’optimisation du code, c’est la recherche d’un code plus efficace.

D’après certaines définitions, le meilleur code est le plus concis, celui qui permet d’arriver au même résultat avec moins de lignes de code.

Mais il faut aussi éviter au microcontrôleur les traitements inutiles.

Pensez également à économiser la faible mémoire vive sur les microcontrôleurs les plus anciens (comme par exemple l’ATmega328P de l’Arduino Uno R3) en privilégiant les variables locales aux variables globales et utilisez des constantes si la variable ne change jamais.

Ne négligez pas non plus la lisibilité du code, pour cela n’hésitez pas à :

  • sauter une ligne entre deux parties pour créer des paragraphes ;

  • commenter très souvent le code (les personnes qui reliront le programme apprécieront beaucoup cet effort) ;

  • choisir des noms...