Mehere OUTPUTS als Array definieren

Hallo,

ich würde gerne mehrere OUTPUT's als Array definieren um Programmcode einzusparen,sprich 2 LED's gleichzeitig einschalten.Habe mir das mal einfach zusammen getippt aber es funktioniert nicht richtig,es leuchten zwar beide auf aber nicht in voller Leuchtstärke,warum?

int led[2] = {7,8};

void setup() {

pinMode(led[2],OUTPUT);
}

void loop() {

digitalWrite(led[2],HIGH);
}

Indizes fangen bei 0 an! Ein Array der Größe 2 hat 0 und 1

Und ein Array aus byte reicht. Muss nicht int sein

hmm? muß ich jetzt int durch byte ersetzen?

Müssen nicht. Der eigentliche Fehler ist der Pufferüberlauf, da du mit [2] nicht auf das Array zugreifst sondern auf Speicher danach

wenn ich ne 1 eingebe in die Klammern dann kommt die Fehlermeldung :

exit status 1
too many initializers for 'int [1]'

jetzt check ich gar nichts mehr :o

Arduama:
hmm? muß ich jetzt int durch byte ersetzen?

Müssen mußt Du nicht, würde aber Speicher sparen. Wichtiger ist led[0] oder led[1] zu verwenden. led [2] gibt es nicht (gültig).

Hier habe ich das gemacht: Anleitung: Endlicher Automat mit millis()

int led[2] = {7,8};  // hier sagt die "2", es sind zwei Elemente.

void setup() {
pinMode(led[1],OUTPUT);  // led[1] == 8;  led[0] == 7
}

void loop() {
digitalWrite(led[1],HIGH);
}

aaah ok,jetzt hat's meine Wasserbirne kapiert !! vielen herzlichen Dank für deine Hilfe und Aufklärung.

Ein großes Lob an alle hier die bemüht sind Hilfestellung zu geben.

hi,

ich hab' zwar nicht geholfen, weil ich's erst später gesehen hab'.
aber falls Dich das tröstet: jeder hier hatte schon mal 'ne wasserbirne.

willkommen im forum und gruß,

stefan

Posts #1 und #3 treffen den Kern -> Serenifly

Noch besser weil leichter lesbar wäre const byte led = {7, 8} weil damit deutlich wird, daß Du die Pins nicht während des Programmlaufs verändern willst. Das wird natürlich erst bei längeren Programmen relevant, sollte man sich aber gleich angewöhnen, wenn mal mehr machen will.

EDIT: Korrigiert, Danke für den Hinweis!

agmue:
Noch besser weil leichter lesbar wäre const byte = {7, 8} weil damit deutlich wird,

Ich würde es lieber so machen: :wink:

const byte Led[] = {7, 8}