Bonjour,
Pour être un peu pointilleux, passer de "const qqc" à des "#define" peut faire gagner de la place en RAM. Par contre ça reste situationnel, vu que dans l'exemple montré précédemment, le compilateur est suffisamment "intelligent" pour remplacer les "const int" (qui étant des variables devrait résider en RAM) par leur valeur directement dans le programme.
C'est pourquoi dans ce cas, l'utilisation de la RAM ne change pas.
Après il faut savoir qu'un "#define" ne fait pas parti du langage C, tout ce que ça veut dire c'est qu'avant de compiler ton programme, il y a une moulinette qui va faire en gros un "remplacer tout" sur ton code avec le nom du define et par ce que suit ce nom.
Tant que c'est les numéros de PIN etc, ya peu de risque de problème, quand on arrive sur des choses un peu plus complexes, comme il n'y a pas de type défini, on peut avoir des erreurs compliquées à comprendre, pour deux grosses raisons (et yen a d'autres):
- le compilateur sort des erreurs souvent incompréhensibles quand on regarde le code source (ben oui en fait le vrai code source n'est pas celui qu'on voit mais celui où tous les #define ont été remplacés)
- comme il n'y a pas de type, le compilateur essaye d'en mettre un, et suivant le contexte le type d'un même #define peut changer (et la les erreurs sont encore plus complexes, vu que suivant l'endroit le comportement ne sera pas le même).
Bref loin de moi l'idée de dire que le #define c'est pas bien, parce que pour déclarer des PINs et trucs du genre ça reste "sympa", en revanche l(utiliser pour gagner de la RAM n'est pas une bonne utilisation à mon avis.
D'ailleurs toujours sur l'exemple précédant, ce qu'il faut penser en premier c'est qu'un arduino c'est un processeur 8 bits (en majorité) et que donc un int c'est très couteux. Et dans tous les cas, il faut toujours utiliser le type qui soit le plus petit possible (sans overflow), ici on aurait du avoir un "const byte" par exemple.