Tu a beaucoup de marge avec 32Kb.
Il faut pensé en mode compilé. Ce que tu écrit est un source, dans un langage dit de haut niveau (C, C++, Basic). Le compilateur va traduire en langage machine (disparition des commentaires, transformation en un .hex). Un .hex ressemble à ceci:
C'est ce dernier fichier qui ne dois pas dépassé 32Kb. On appelle cela la chaîne croisé de compilation.
Pour info, mon système de radio, au niveau de son émetteur fais plus de 800 lignes de codes avec les commentaires et ne représente qu'un bon quart de la capacité maximale.
Les opérations se font en suivant:
PC : source (C, C++, Basic) -> PC : compilation (Transformation en .hex) -> UC : USB (Transfert en bus série du .hex) -> Mémoire Arduino : (.hex reçu et interprété par la carte).
Lorsque tu aura créer des fonctions, essaie de les regroupé ensemble. Tu pourra ainsi simplifier ton code et surtout le nombre de lignes en créant des fonctions puis enfin des classes. La méthode de création des fonctions et des classes permet de facilement s'y retrouvé.
Cas 1/ Dans mon programme j'ai plusieurs choses qui s'écrivent pareil et qui sont reprise plus de 2 fois -> création d'une fonction.
Cas 2/ Dans mes montages, j'utilise toujours les mêmes fonctions -> création d'une classe.
Ainsi quand je veux géré un afficheur LCD et que j'ai plusieurs fois Bonjour dans mon code, je crée une fonction bonjour().
Comme je crée plusieurs montages, que chacun utilise un afficheur LCD, je crée une classe qui permet de gérer l'affichage et les caractères.
Ainsi, je ne code qu'une fois quelque-chose qui sera repris plusieurs fois. De la même façon ça simplifie ton code et tu gagne au final un peu en octet.
Dans l'immédiat, tu n'a pas de souci à te faire avec ta led, tes leds. Pense juste en fonction.
Code : Tout sélectionner
void setup() {
pinMode(13, OUTPUT);
}
void loop() {
led(true);
delay(500);
led(false);
delay(500);
}
void led(boolean varLed) {
if(varLed) {
digitalWrite(led, HIGH);
}
else {
digitalWrite(led, LOW);
}
Ce code ne te fais rien gagner car tu utilise déjà une fonction "digitalWrite(pin, mode)". Mais il te montre comment tu peux simplifier ton code loop.
Bon, si tu bloque sur un détail de mes explication, n'hésite pas.
Et puis tiens-nous au courant pour tes essais avec le CD4067, je suis currieux sur ce coup