Arrays und size of

Hallo zusammen,

kurze Frage: Könnt Ihr mir sagen warum im beigefügtem Bild nach previousMillis "[groups]" geschrieben wurde?

Groups enthält die 3. Zu welchen Zweck wurde das dem previousMills angefügt?

Gruß

Weil previousMillis ein Schrank ist, in dem [Anzahl] Schubfächer sind.
Wobei Anzahl == groups.
Und wenn Du Dein Bild gegen richtigen Code tauscht, wird das auch richtig erklärt.
Siehe:
CodeProbleme

Gut. Dachte das geht für das bisschen.
Werde es ab jetzt beherzigen.

Also muss das einmal so initialisiert werden, damit die Anzahl der Schubladen bekannt ist?
Es wird doch weiter unten eh über die Variable "i" hoch- runtergezählt. Ist das also nötig?

Gruß

Weil das jemand für richtig gehalten hat!

Die Wirkung?
Jedes C++ Grundlagen Buch könnte dir das sagen.

Wozu gibt es dann Plattformen wie diese?
Ich bin keiner der immer alles gut aus einem Buch lernen kann.

Hast Du es versucht ohne?
Ja? Nein? Vielleicht? - bitte nicht beides ankreuzen.

Ok - das ist dasTotschlagargument.
Ich bin raus.

Ich lerne mich gerade in diese Thematik ein und werde das wahrscheinlich morgen probieren.

Ich werde dich jetzt auf meine Ignorierliste setzen!
Denn du macht auf mich den Eindruck einen Fasses ohne Boden.

Das ist nicht böse gemeint.
Aber ich habe echt keine Lust mit jedem *** einen individual Lehrgang in Sachen Programmierung durchzuziehen. Für Lau.

Schick mir eine PM, wenn du wach geworden bist und Initiative zeigen willst.

Ich verstehe nicht was euer Problem ist. Ich lerne sehr wohl - daraus ergeben sich eben Fragen, die ich hier stelle.

Dein Post ist #10

Meines ist #2

Denk drüber nach.

Das hat in dem Sinne nichts miteinander zu tun. Du musst dem Compiler erst mal sagen dass es überhaupt ein Array ist und nicht eine einzelne Variable. Ohne das Array kannst du auch nicht mit einem Index darauf zugreifen.

Und ja, die Größe von statischen Arrays muss zur Compile-Zeit bekannt sein. In den ersten zwei Fällen geschieht das durch den Inhalt der geschweiften Klammern. Im dritten Fall ist der Inhalt aber erst zur Laufzeit bekannt.

Wobei das auch wieder mal so ein Fall ist, wo ein Array aus Strukturen die bessere Lösung ist

1 Like

Und das muss oben bei buttonpin und outputpin nicht passieren, da die Anzahl in den geschweiften Klammern steht?!

Vielen Dank!

sketch_oct05a.zip (483 Bytes)

Drücke einfach den </> Knopf und Kopiere den Code dazwischen. Anhänge braucht man nur bei umfangreichen Projekten mit mehreren Dateien

Ja. Das hatte ich danach noch hinzugefügt

Den Unsinn entfernt, kommt heraus:

const byte buttonPin[] {A0, A1, A2}; 
const byte outputPin[] {2, 3, 4};    
const byte groups = sizeof(buttonPin);  

void tickButtonLed()
{
  static uint32_t previousMillis[groups];  
  for (byte i = 0; i < groups; i++)
  {
    if (digitalRead(buttonPin[i]) == LOW) {
      digitalWrite(outputPin[i], HIGH);
      previousMillis[i] = millis();   
    }
    if (millis() - previousMillis[i] > 3 * 1000UL && digitalRead(outputPin[i]) == HIGH) 
    {
      digitalWrite(outputPin[i], LOW);
    }
  }
}

void setup() {
  for (byte i = 0; i < groups; i++)
  {
    pinMode(buttonPin[i], INPUT_PULLUP);
    pinMode(outputPin[i], OUTPUT);
  }
}

void loop() {
  tickButtonLed();
}

Davon abgesehen, das ich Code bemängel...
... wenn zwei arrays Bezug nehmen und nicht festgesetzt sind.

Welchen Unsinn?

Ok.

Ja. Wie kommst Du denn auf die Idee das in ein Archiv zu packen? Ich hab Dir doch schon die Vorlage gegeben, wie das geht.

Und da Du den Wink mit dem Zaunpfahl nicht verstanden hast:

Wir helfen Dir zwar bei Fragen aber mit Dir ein Buch durchzukauen weil Du nicht lesen willst tun wir nicht.
Wenn Du Probleme hast aus einem Buch zu lernen dann versuchs mit einem Tutorial.

Zu Deinem Sketch
Jedes Pin braucht siene Variable um millis() zwischenzuspeichern. Am einfachsten ist es wenn mehrere Sachen immer gleich gemacht werden dies mittels eines Arrays zu machen. Damit die anzahl der Pins nicht in viele orten geändert werden muß wird die Anzahl der Pins mittels sizeof(9 ermittelt und dann durchgehend benutzt.
Wenn Du jetzt nicht weißt was sizeof(9 macht oder was ein Array ist dann bitte lies es nach. Wenn Du etwas in der Erklährung nicht verstehst darfst Du nachfragen aber nur wenn Du Deine Haltung (siehe Zitat) änderst.

Grüße Uwe

1 Like