Quels langages de programmation utilisez-vous pour Arduino ?
Partagez votre expérience

Le , par Michael Guilloux, Chroniqueur Actualités
Quels langages de programmation utilisez-vous pour Arduino ?
Quels langages de programmation utilisez-vous pour Arduino ? Il y a quelques mois, nous nous sommes intéressés aux langages que vous utilisez pour le développement de systèmes embarqués. Le sondage à choix multiples a montré que les langages les plus utilisés sont respectivement C (46,97 %), C++ (31,82 %) et Assembleur (19,70 %). Arduino, le langage natif pour le microcontrôleur appelé du même nom ne vient qu’à la 8e place avec 4,55 %, en dépit du fait que la carte Arduino est aujourd’hui la base d'un grand nombre de dispositifs de fabrication et de prototypage.

Cela peut s’expliquer par le fait que le développement de systèmes embarqués Arduino n’est pas une exclusivité du langage natif de la plateforme. Il est en effet possible de programmer la carte Arduino en C/C++. En fait, vous le faites déjà dès que vous utilisez le langage Arduino, puisqu'il est simplement un ensemble de fonctions C/C++ qui peuvent être appelées à partir de votre code. Votre sketch (nom donné aux programmes écrits pour Arduino) subit des modifications mineures (par exemple, génération automatique de prototypes de fonctions), puis est transmis directement à un compilateur C/C ++ (avr-g ++).

Pour les programmeurs confirmés, le langage C/C++ qui est traditionnellement utilisé pour programmer les microcontrôleurs peut être la solution la plus performante pour programmer une carte Arduino. Cela dit, on peut également vouloir utiliser un langage de programmation qu'on maitrise déjà pour ne pas avoir à apprendre un nouveau langage pour programmer la carte Arduino.

Si vous ne pouvez pas écrire du C/C++, il est possible d’utiliser un langage interprété soit directement sur la carte, soit sur un autre ordinateur qui communique avec Arduino. Il existe en effet quelques implémentations de langages interprétés pour l'Arduino, y compris plusieurs ports de Forth sur Arduino, un port de Tiny BASIC, PyMite (un sous-ensemble de Python), et un langage dédié appelé Bitlash. Ces langages peuvent être exécutés directement sur Arduino.

Cependant, la plupart des langages de script dynamiques modernes sont trop complexes pour tenir dans la RAM et la mémoire de programme très limitées de l'Arduino. Les langages qui entrent dans cette catégorie sont : Java, PHP, Perl, Batch, Shell, Ruby, JavaScript, TCL, Python. Vous pouvez utiliser ces langues pour communiquer avec Arduino, mais en général, le code dans ces langages ne fonctionnera pas directement sur la carte.

Il faut aussi noter qu'il est possible de convertir les langages interprétés en bytecode qui peuvent fonctionner sur Arduino si vous avez le bon ensemble de compilateurs, éditeurs de liens et de bibliothèques. Mais c'est en général une tâche non triviale avec une utilité limitée. Autrement dit, vous pourrez utiliser un langage que vous maitrisez le plus pour Arduino, mais avec les limitations qui l'accompagnent.

Nous voulons donc à travers ce nouveau sondage à choix multiples savoir si vous avez déjà programmé pour Arduino. Si oui, dans quels langages et pourquoi ? Quels avantages et inconvénients trouvez-vous à ces langages ?

Puis-je exécuter un langage interprété sur l'Arduino ? Je ne peux pas écrire du C ou C++ (Site officiel Arduino)
FAQ Arduino

Et vous ?

Avez-vous déjà programmé une carte Arduino ?
Si oui, quels langages de programmation utilisez-vous (ou avez-vous utilisés) ?
Partagez votre expérience : difficultés, avantages, etc.

Voir aussi :

Forum Arduino sur Developpez.com et rubrique Systèmes embarqués


Vous avez aimé cette actualité ? Alors partagez-la avec vos amis en cliquant sur les boutons ci-dessous :


 Poster une réponse Signaler un problème

Avatar de f-leb f-leb - Rédacteur/Modérateur https://www.developpez.com
le 13/10/2017 à 20:55
Marrant, je ne savais même pas qu'on pouvait programmer l'Arduino avec tous ces langages...
Si j'ai bien compris, on installe un serveur/firmware sur l'Arduino et un hôte peut communiquer avec l'Arduino par le câble USB et un protocole particulier (firmata).
J'ai quand même l'impression que 99,9% des votes vont tourner autour du C/C++/Arduino et du coup j'aurais plus vu le vieux débat "langage Arduino vs C/C++" qui finit toujours par déraper.

Mais on peut toujours s'arranger pour faire dévier la discussion sur ce duel
Avatar de onilink_ onilink_ - Membre éclairé https://www.developpez.com
le 16/10/2017 à 9:53
Ahah pareil, je savais qu'on pouvait théoriquement utiliser n'importe quel langage compilé capable de target de l'assembleur AVR, mais j'avais jamais vu autre chose que C/C++ utilisé pour arduino.
En tout cas C++ me va très bien, j'utilise ce langage tous les jours alors le retrouver sur arduino ça me simplifie juste la vie. Puis je suis sur qu'il y a moyen de se faire une bibliothèque puissante et efficace spéciale compile-time pour obtenir un asm très optimisé.
Ça me fait beaucoup penser a cela (A Simple Commodore 64 Game in C++17):

C'est assez impressionnant.
Avatar de Sange844 Sange844 - Nouveau membre du Club https://www.developpez.com
le 16/10/2017 à 10:28
Pas touché depuis un moment mais la prochaine fois ça sera du Rust.
Avatar de CaptainDangeax CaptainDangeax - Membre confirmé https://www.developpez.com
le 16/10/2017 à 14:24
Je viens d'acheter mon premier Arduino, je l'ai reçu ce W.E. et je n'ai encore rien fait avec. Par contre, j'ai réalisé plusieurs projets avec des Microchip PIC16F, PIC18F et dsPIC30F que je programme en C et avec un pickit3. J'ai également réalisé plusieurs autres projets avec des Atmel AT89, architecture MCS-51, que je programme en assembleur ; je le préfère 100 fois à l'assembleur des µC microchip. Par contre, je n'ai pas l'équivalent du pickit3, j'ai un programmateur séparé, et ça c'est lourd de débrancher puis de rebrancher la puce à chaque fois. Je verrai ce que je ferai de l'arduino mais je pense commencer par l'assembleur.
Avatar de al1_24 al1_24 - Modérateur https://www.developpez.com
le 16/10/2017 à 16:14
Pour moi, l'Arduino est juste un outil, un peu comme un moteur de Meccano. J'y branche des shields tout prêts (Affichage, lecteur SD), j'ajoute les bibliothèques fournies par le fabricant et je programme les quelques commandes dont j'ai besoin pour faire fonctionner le tout. C'est ce que j'apprécie dans le concept.
Bien sûr, je manipule pour cela du C et du C++ mais je n'ai aucune envie de prendre le temps d'aller fouiller dans les arcanes du microcontrôleur pour développer en natif ce que les fonctions de l'environnement Arduino mettent à ma disposition de manière plus pratique à manipuler. Je sais que ce n'est pas toujours optimal mais mes besoins sont couverts.
Avatar de Vincent PETIT Vincent PETIT - Modérateur https://www.developpez.com
le 16/10/2017 à 17:41
J'ai une carte Arduino UNO mais je ne m'en sers quasiment pas, je l'ai acheté uniquement pour découvrir la philosophie Atmel. Je développe principalement sur MSP430, PIC16 et PIC18 et récemment sur STM32F303 et uniquement en langage C (l'Assembleur j'en ai énormément fait sur Motorola et Microchip mais c'était il y a 18 ans, aujourd'hui et sauf cas très très particulier et qu'on peut contourner, je trouve que les compilateurs C sont redoutablement efficaces)

Le plus gros points faible des Arduino équipés de ATMegaxxxx est l'absence du débugger intégré et ça c'est vraiment dommage !
Il faut acheter une sonde comme Atmel ICE si on veut l'équivalent du Pickit/ICD. Sur des cartes Nucléo (STM32) ou LaunchPad (MSP430) il y a le débugger intégré ce qui vous donne l'impression, depuis Eclipse, d'être exactement comme sur votre PC. Vous pouvez faire ce que vous voulez avec le microcontrôleur, mettre des points d'arrêts, faire défiler le programme pas à pas, voir ce qui ce passe en RAM ou l'état des registres etc...

De mon point de vu, un microcontrôleur se choisi comme on choisie un langage informatique, mais en prenant en compte le prix/encombrement/fonctionnalités/outils de développement/consommation etc, il y a énormément d'autres choix et certains peuvent être beaucoup plus intéressants et compétitifs, il faut voir au cas par cas. Pour pouvoir faire cet exercice, il n'y a malheureusement pas d'autre choix que d'aller regarder dans le microcontrôleur, la bonne surprise étant que les micro se ressemblent tous très fort.

Le plus gros avantage est décrit par Alain et c'est indéniable, celui qui veut faire un proto sans pour autant devenir ingénieur en système embarqué y trouvera son bonheur.
Avatar de Kannagi Kannagi - Expert éminent https://www.developpez.com
le 21/10/2017 à 14:10
Pour ma part je n'ai pas d’Arduino , mais j'aurais sûrement programmé en assembleur , vu que je ne le fait pas pour un coté 'utilitaire' mais juste pour connaître une machine de A à Z :p

Pour le commodore64 et le c++ cela ne m'étonne pas mais sur des processeurs comme le 6502 et le z80 les compilateurs sont très mauvais sur ces architectures (ce sont des processeurs du siècle dernier aussi , tout les processeur récent sont pensé pour être écrit par un compilateur et non par un humain).
Avatar de f-leb f-leb - Rédacteur/Modérateur https://www.developpez.com
le 25/10/2017 à 20:39
Je sais qu'on peut aussi "programmer" l'Arduino avec Matlab+Simulink :


Démo blink de la led 13
https://fr.mathworks.com/videos/programming-arduino-uno-with-simulink-86316.html

Il me semble qu'un serveur doit être téléversé dans l'Arduino pour la communication.
Avatar de candide02 candide02 - Membre habitué https://www.developpez.com
le 26/12/2017 à 17:05
J'utilise le compilateur Basic Bascom pour les arduino 8bits, malheureusement il n'est pas disponible pour les autres arduino

l’intérêt du Basic par rapport au speudoC Arduino est qu'il appelle un chat un chat, je m'explique:
- les noms des ports du microcontrôleur sont les noms utilisés par AVR exemple pinc.0 est l'entrée 0 du port C est non A0 comme indiqué chez Arduino qui voudrait que les ports analogiques soient réservés à l'ADC
alors que les AVR sont très versatiles, toutes les broches peuvent être I/O binaires.
- les bibliothèques sont écrites en assembleur donc très rapide par rapport aux bibliothèques Arduino écrites en C
-la compilation donne des fichier .bin ou .hex les "point bin" sont beaucoup plus compact.
- l'IDE Bascom parle de programme et pas de sketch, on ne fait pas du théatre ! On voudrait nous faire croire que la programmation d'Arduino est un jeu, sans connaissance des bases de l’électronique ce qui est une grosse co...rie !
les includes sont très pratiques en plus des lib

l'IDE permet de transférer directement le programme compilé dans le µC sans utiliser Dude ni les studio AVR (usine à gaz monstrueuse)
Enfin j'ai fait un tuto en français avec exemple etc..
JP
Contacter le responsable de la rubrique Accueil