J'ai entendu dire que des nouvelles versions de carte Arduino supporterait d'être programmée en python (en plus du C/C++ actuel) : je n'ai rien lu à ce sujet donc je viens me renseigner auprès de gens plus au fait des dernières nouveautés.
Merci
ça ne m'a convaincu: même miniaturisé, python (et ses librairies) prennent de la place ... en reste-t-il pour ce que vous voulez faire (je veux bien convenir que les librairies de python ont peut être tout ce dont vous avez besoin).
L'inconvenient de python, c'est que ça vous "oblige" à apprendre 2 langages (c++ pour les petits arduini.... python pour les gros.) alors que, très souvent, c++ est à peine plus gourmand / moins concis en ligne que python (ex: dans un tout autre ordre d'idées, https://www.learnopencv.com/ donne des exemples commentés et pédagogiques en python et en C++ pour une bibliothèque très bien écrite.)
Dans mon cas (enseignement), la demande était pour éviter d'avoir à utiliser 2 langages de programmation : C/C++ (arduino), python (traitement des données).
Compte tenu des faibles besoins, les cartes UNO sont largement suffisantes. : on se débrouillera donc avec les 2 langages.
Au contraire le recours à un interpréteur (et la présence de celui-ci dans la puce cible comme dans les cas évoqués ci dessus) peuvent donner une perte d'efficacité.
Par contre certains programmeurs 'font mieux' avec ces cartes en micropython qu'avec C++
C'est juste une autre façon de faire, façon qui convient à certains, qui se sentent plus omme c'est le cas performants...
Mon intervention dans ce fil n'a qu'un objectif : dire que ça existe, en réponse à la question posée.
Je n'ai 'rien à vendre'..... et d'ailleurs je n'utilise pas micropython à ce jour... en particulier parce que la plupart de mes montrages utilisent une puce en 'sommeil profond' et qu'en micropython "ça le ne fait pas".....
Est ce que les cartes avec micropython font mieux que les cartes avec C++ (à matériel égal?)
Beaucoup de développeurs PYTHON profitent de la puissance du langage pour ajouter des couches logicielles, des plugins, beaucoup de paramétrage. Tout ceci alourdit beaucoup le logiciel.
Exemple : les derniers horodateurs Parkeon / FlowBird / ex-Schlumberger qui ont besoin d'un processeur Exynos Samsung (proc de téléphone mobile) pour tourner correctement.
Par contre ce type de produit est censé s'adapter à un nombre de clients infini, avec un paramétrage très complexe afin de gérer de multiples configs matérielles aussi bien que logicielles.
Je pense qu'en C++ ce serait réalisable mais forcément plus complexe et plus cher (en temps de dev).
Pour les bricoleurs je pense que PYTHON est hyper-adapté pour faire du dev sur PC ou RASPBERRY PI.
La portabilité LINUX-WINDOWS est excellente.
Les librairies sont très nombreuses.
J'ai développé un gros serveur HTTP à base de Python + CherryPy. Première remarque de la part des gens du Data Center : très très fiable. Ils sont ravis de ne pas avoir à s'en occuper.
Voir aussi pyserial qui permet de communiquer par ligne série avec un ARDUINO. Le développeur qui a écrit ce module connaît aussi bien les lignes séries sous LINUX que sous WINDOWS. Du grand art !
Sous Windows, je ne connais personne qui ait écrit un module série qui fonctionne sur n'importe quel PC et sur n'importe quelle version de Windows.
Rien que le fait de changer de modèle de PC portable peut engendrer des problèmes.
Un jour on met tout ça à la poubelle et l'adoption de pyserial fait oublier les problèmes.
Et j'en ai bouffé pendant des dizaines d'années, du côté embarqué, des protocoles série !
J'ai été très satisfait de pyserial (me permet de mettre à l'heure mon nanoPo avec une RTC et un Arduino; couplé à matplotlib -émule les superbes graphiques de matlab-, j'ai pu faire il y a 3 ans un osciilloscope très lent avec un avr arduino, le gros écran de mes xxpi -s- étant particulièrement confortable)... et je crois que je vais le rester.
Un autre avantage de python :
il oblige à indenter (pour un débutant, ce n'est pas nuisible; certes, l'IDE Arduino a un bouton pour indenter, mais un débutant n'y pense pas -et saute des horreurs évidentes, une fois indenté -ou passé dans astyle/indent-)
Un autre avantage (mais je ne sais pas si ça s'étend à micropython):
comme tout langage interprété, il est assez facile de tester ligne après ligne (le C++ ,d'arduino n'a pas de déboggueur et il faut consacrer une ligne série à ça).
Par contre, si une bibliothèque est bien écrite -cas d'opencv- , la complexité d'un programme python ou celle d'un programme C++ faisant appel à cette bibliothèque sont équivalentes (10% de lignes en plus en C++ pour des déclarations)... C'est pour ces raisons que je préfère C++ sur RPi: j'ai plus de facilités à bidouiller sur avr-arduino
Il y a quelques années j'ai développé un logiciel de test en PYTHON qui permettait de dérouler des tests automatisés sur un périphérique à travers une ligne série, et de lui envoyer des commandes.
Je l'ai développé sous LINUX, jamais testé sous Windows.
Un jour mon chef m'a demandé de le lui installer sur son portable Windows.
J'ai remplacé /dev/ttyUSBX par COMX et le soft a fonctionné du premier coup !
dbrion06:
Un autre avantage (mais je ne sais pas si ça s'étend à micropython):
comme tout langage interprété, il est assez facile de tester ligne après ligne (le C++ ,d'arduino n'a pas de déboggueur et il faut consacrer une ligne série à ça).
Avec microPython, il n'est pas nécessaire d'utiliser un IDE on branche la carte et on ouvre une console, on peut entrer du code directement. Lorsqu'on ouvre la console on a un accès à un interpréteur interactif REPL (read-eval-print-loop).
La seule contrainte c'est d'avoir un processeur avec pas mal de RAM sinon la taille du code est assez limitée.