Quelles sont les pratiques de programmation à adopter lors du codage des croquis pour Arduino?

Quelles sont les meilleures pratiques de programmation pouvant être adoptées lors du codage d’esquisses pour Arduino, de sorte qu’elle utilise le moins de mémoire possible et que les performances ne souffrent pas d’une panne de mémoire, tout en conservant un code robuste?

From the link: https://www.arduino.cc/en/Products/Compare

J'ai appris que le Uno a 32 Ko de mémoire flash. Le maximum disponible est dans le MEGA avec 256 Ko. Je pense que Uno et Mega sont les plus largement utilisés par les gens.

3
Tout d’abord, je n’utiliserais PAS la bibliothèque Arduino et utiliserais directement la bibliothèque AVR C, car Arduino ajoute beaucoup de code pour simplifier la programmation, mais n’est pas nécessaire une fois que vous connaissez l’AVR MCU. C’est ce que j’essaie d’atteindre dans github.com/jfpoilpret/fast-arduino-lib librairie optimisée
ajouté l'auteur Louis Rhys, source

1 Réponses

Gardez à l'esprit que la RAM est encore moins. 32 Ko est une bonne quantité de code, car C/C ++ est très efficace. "Ne sauvegardez pas **** dans la RAM."

Si vous devez charger des images sur un écran, enregistrez-les sur une carte SD. Et "le diffuser" à l'écran. Vous pouvez lire et transmettre les octets un par un, ou 10 par 10 ou autre.

En outre, si vous avez besoin de longues chaînes, vous pouvez utiliser le "flashStringHelper" pour stocker la chaîne dans la mémoire flash. Par exemple: println (F (”Message d'erreur: Impossible de se connecter au serveur)); . En utilisant F() autour de la chaîne, vous enregistrez des octets précieux.

Ne pas utiliser de code Arduino, mais AVR-C/C ++ pur, peut vous faire économiser un peu aussi. (Sauvera également la mémoire du chargeur de démarrage, si vous programmez directement avec un programmeur.)

Si vous utilisez Arduino, sachez comment cela fonctionne. La bibliothèque série Arduino utilise ~ 256 ou 500 octets (je crois) en tant que tampon. Vous pouvez changer cela si vous en avez besoin pour d'autres applications.

Gardez à l'esprit que votre technique d'économie dépend des ressources faibles. Si vous devez faire beaucoup de choses simultanément, il est préférable d'écrire du code non bloquant.

Mais souvenez-vous aussi: n'optimisez pas sauf si c'est vraiment nécessaire! Ou, si vous définissez des exigences réalistes et mesurables, optimiser quelque chose de manière "aussi rapide que possible" peut prendre un temps infini ... Lancez une recherche Google sur "l'optimisation prématurée", comme l'appellent les personnes âgées du domaine.

2
ajouté
@Ciastopiekarz C'est un non-sens, j'ai peur. Citation erronée d'un extrait partiel d'une citation parfaite. Une bonne conception logicielle inclut un certain niveau d'optimisation dès le début. Ce qui est "mal", c'est passer de nombreuses heures à faire de la micro-optimisation inutile de petits morceaux de code. Lorsque cette déclaration a été citée pour la première fois, le terme "optimisation" signifiait quelque chose de complètement différent de ce qu’il fait aujourd’hui, mais c’est toujours une raison erronée de ne pas chercher à optimiser l’optimisation, et vous vous retrouvez avec des applications Windows.
ajouté l'auteur Majenko, source
Je suis d'accord avec une partie de l'optimisation prématurée est la mère de tous les maux, je l'ai déjà lu mais le point de départ de la recherche de l'optimisation vient lorsque vous commencez à voir un avertissement de mémoire insuffisante lors du téléchargement sur Arduino.
ajouté l'auteur Ciasto piekarz, source