Arduino LED-Reihe

Da pflichte ich Dir bei. Wie schnell kommt da eine Änderung - eine LED dazu oder bei anderen Anwendungen einfach ein Element. Die Wahrscheinlichkeit alle Vorkommen dieser Zahl zu ändern geht gegen null.

Deshalb lieber eine Konstante vom Kompiler ermitteln lassen und diese ordentlich in Großbuchstaben deklarieren, dann kann man sie finden. Das braucht man aber überhaupt nicht weil sie automatisch vom Kompiler angepasst wird.

Das halte ich auch für die einzig sinnvolle Variante.

Gruß Tommy

Auf alle Fälle ist

for(i=0;i<13;i++)
 {
  ...
   digitalWrite(led[i+1],HIGH);
   ...
   ...
   digitalWrite(led[i+2],HIGH);
   digitalWrite(led[i-1],LOW);
 }

nicht zulässig da hier Index von -1 bis 14 herauskommen, die außerhalb des Arrays liegen. wenn Du solche Berechnungen anstellst mußt Du kontrollieren on der Index im Wertebereich bleibt oder Du vergrößerst das Array mit Dummywerten.

Ich würde auch pin D1 nicht verwenden da dieser von der seriellen Schnittstelle belegt ist. Benutze ein analoges Pin als digitales.

Grüße Uwe

Hi

char led[]={1,2,3,4,5,6,7,8,9,10,11,12,13};
const byte anzahl=sizeof(led/sizeof(led[0]);

Die Abfrage geht dann von 0 bis <anzahl (da ein Array bei 0 anfängt und bei x Elementen das letzte Element den Index x-1 hat).

Du prüfst, ob Du ‘noch zwei Luft’ hast, wenn Du -2 benutzen willst (kann man so durchaus machen)

MfG

Mittlerweile sieht das bei mir eher so aus. (wenn die jeweilige Borddefinition das erlaubt)

Ich finde, fühlt sich besser/schöner an, ist aber im Grunde identisch Beide Varianten werden zur Kompilezeit ausgewertet.

constexpr  size_t arrayCount(auto &array)
{
  return sizeof(array) / sizeof(array[0]);
}


const char led[]={1,2,3,4,5,6,7,8,9,10,11,12,13};
const byte anzahl=arrayCount(led);




void setup() 
{
  Serial.begin(9600);
  Serial.println("Start");

  Serial.println(arrayCount(led));
}

void loop() 
{

}

postmaster-ino: const byte anzahl=sizeof(led/sizeof(led[0]);

Fehlt da nicht eine Klammer? Also

const byte anzahl=sizeof(led)/sizeof(led[0]);

Hi

Ja, natürlich fehlt Da eine Klammer :o Hatte noch nachgeschlagen, ob led[] oder led für das Array, und dann wohl etwas großzügig gelöscht :(

Genau dafür habe ich Euch ja hier Ausrede such ... sollte nur ein Test sein ... :confused:

MfG