Le multithreading dans un seul Arduino, est-ce possible ?
Ce matin, je me suis réveillé avec un e-mail d’un client me demandant si le multithreading au sein d’un seul Arduino était possible.
Cela signifie que pouvez-vous faire plusieurs choses en même temps exactement dans un seul Arduino.
C’est une question vraiment intéressante car à première vue, on pourrait penser que cela est possible.
Après tout, une seule esquisse peut avoir une tonne de fonctions ou de « choses » à réaliser.
Lorsque vous exécutez le code, il peut même sembler que tout se passe en même temps MAIS ce n’est qu’une illusion.
Un tour de passe-passe si vous préférez. Laisse-moi expliquer.
Pour les besoins de ce blog, nous parlerons des deux Arduino les plus courants jamais réalisés.
L’Arduino Uno (1) et l’Arduino Nano (2).
(Crédit image arduino.cc)
Ils utilisent tous deux la même puce en son centre, l’Atmega328P (appelée micropuce ou MCU), l’une est simplement physiquement plus petite que l’autre, ce qui la rend idéale pour réaliser des projets où l’espace est limité.
Celui-ci est un MCU de 8 bits jusqu’à 20 MHz, jetez un œil à ses spécifications.
(Fiche technique source microchip.com)
Comparés à ce qu’il y a à l’intérieur de votre ordinateur, ceux-ci peuvent sembler lents, mais pour la plupart des projets Arduino, c’est ultra-rapide.
ET… c’est exactement là qu’intervient le tour de passe-passe.
Si vous vous en souvenez, tous les croquis Arduino sont constitués de deux sections.
La configuration et la boucle, où la configuration n’est exécutée qu’une seule fois au démarrage et la boucle est ce qui fonctionne en continu tant que l’alimentation est appliquée.
Jetez un œil à ce morceau de code ci-dessous.
Une fois que le programme a terminé d’exécuter tout ce qui se trouve à l’intérieur de Setup(), il entre ensuite dans loop().
Le Loop() dans ce code contient 3 fonctions qui s’exécuteront séquentiellement pour toujours.
Ainsi, function1() s’exécute en premier, puis function2(), funciton3() et lorsqu’elle est terminée avec funciton3(), elle revient à function1(). Ainsi de suite, pour toujours !
Le fait est que tout cela se produit à la vitesse de l’éclair et, à l’œil humain, il peut sembler que tout se passe en même temps.
Mais la réalité est qu’une seule chose se produit à la fois !
Maintenant… disons que vous deviez arrêter tout ce que faisait le MCU alors qu’il est en train d’exécuter quelque chose à l’intérieur de function2().
Vous pouvez absolument le faire en utilisant quelque chose appelé ISR (interruption de service routine), et cela pourrait également donner l’impression que plus d’une chose se produit en même temps.
Mais encore une fois, ce n’est qu’une illusion.
Ce que fait le MCU est ce qu’on appelle « traiter l’interruption », ce qui signifie que le code cesse d’exécuter ce qu’il fait actuellement et s’occupe de tout le code qui se trouve à l’intérieur de l’ISR.
Mais en fin de compte, on ne fait qu’une chose à la fois, ça se passe si vite, c’est imperceptible.
Eh bien, pour cela, vous auriez besoin de plusieurs Arduino qui agissent indépendamment. En fonction de ce que vous faites, vous devrez peut-être vous informer mutuellement via, par exemple, le port série.
Ou vous pouvez modifier complètement votre architecture et utiliser ce qu’on appelle un FPGA, car ceux-ci peuvent faire plusieurs choses à la fois. Mais c’est une histoire complètement différente pour une autre fois.
Pour moi, je n’ai pas encore trouvé le besoin d’utiliser plus d’un Arduino Uno ou Nano dans aucune de mes conceptions.
Mais cela dépend en fin de compte de ce que vous faites et de la puissance dont vous avez besoin. Je trouve que je peux faire à peu près n’importe quoi avec un seul Uno ou Nano.
Eh bien… c’est tout, j’espère que cela répond à votre question si un MCU de type Arduino peut faire plusieurs choses à la fois !
Si vous souhaitez débuter avec Arduino OU êtes un pro chevronné et avez besoin d’une plateforme de développement fiable et facile à utiliser, j’aimerais vous inviter à venir découvrir toute notre gamme de boucliers basés sur Arduino Uno et Nano.
Si vous avez une certaine expérience en électronique, Dr.Duino Explorer est le choix qu’il vous faut. Cliquez simplement sur la photo ci-dessous pour en savoir plus.
Si vous êtes nouveau sur Arduino et l’électronique, alors le Version Dr Duino Pioneer est le meilleur choix. Cliquez sur la photo ci-dessous pour en savoir plus.
Lequel choisirez-vous, cliquez ici pour en savoir plus sur le Explorateur ou ici pour en savoir plus sur Pionnier!