Das ist wie eine Textersetzung, wo "PIN" durch "6" ersetzt wird. Nachteil: Es findet keine Typprüfung statt.
const byte Pin = 6;
Die Konstante hat einen Typ, der überprüft werden kann. Es wird kein Variablenspeicher verschwendet. Der optimierende Compiler macht eine Textersetzung mit Typprüfung.
Ein Blick in Adafruit_NeoPixel.h zeigt:
Adafruit_NeoPixel(uint16_t n, uint8_t p=6, neoPixelType t=NEO_GRB + NEO_KHZ800);
Die Konstanten dienen der Erläuterung der Werte des Constructors und als Schleifengrenze, sollten daher m. E. nicht weggelassen werden:
for(j=0;j< ledAnzahl;j++) {}
Es geht auch:
const unsigned int ledAnzahl = 16;
const byte ledPin = 5; // 6 ist Standard, daher macht nur ein anderer Pin Sinn
Adafruit_NeoPixel strip1();
...
updateLength(ledAnzahl);
setPin(ledPin);
Das habe ich noch nie ausprobiert, aber darauf könnte sich die Bemerkung von Adafruit beziehen.
Auch ist es äußerst praktisch, wenn Du ALLE Dinge, die der User an dem Code sinnvoll einstellen kann, oberhalb einstellst.
So kannst Du den Code an einem anderen Pin durch einfaches Austauschen EINER Zahl im Kopfbereich anpassen.
Die Datenrate fürs Terminal? Auch hier.
Ob das Terminal für DEBUG-Ausgaben überhaupt benutzt werden soll? Jupp, ab in den Header.
Auch Laufzeiten oder so Kram, Anzahl von irgend welchen Objekten (bei mir gerne das Beispiel Mad_Fly, glaube aus Dot-Matrix-Display - bei mir sind's IMMER mehrere Fliegen ...)
Lauffähig ist der Code auch, wenn in jeder zweiten Zeile eine feste Zahl steht - aber das Anpassen, z.B. vom LED-Pin - Du musst den Pin als OUT einstellen, jeder Zugriff auf diesen Pin erfolgt mit dieser festen Zahl ... Das macht keinen Spaß, wenn Da ein Pin geändert werden muß.
Wenn aber oben 'const byte ledpin=6;' steht, ist Das mit dieser einen Zahl erschlagen, Du musst natürlich im Code dann 'ledpin' für den LED-Pin benutzen - darin sehe ich aber das kleinste Hindernis.