Forum: Mikrocontroller und Digitale Elektronik "If" mit mehreren "&&" Verknüpfungen


von F. F. (foldi)


Lesenswert?

Hallo an alle!

Sicher ein Klacks für euch, aber ich hab mir die Zähne ausgebissen (und 
eine weitere Nacht um die Ohren gehauen).

Für die weitere Verwendung eines Codeschalters muss ich die Zustände in 
einer  If Schleife abfragen und will dann einer anderen Variablen einen 
entsprechenden Wert zuweisen (das später, wenn der Code funktioniert).
Das Abfragen klappt mit dem Array, aber sobald ich wissen will, ob Pin 2 
und Pin 5 LOW sind (oder jede andere Schalterstellung) und erst dann die 
If Schleife durchlaufen werden soll, dann klappt das nicht. Also immer, 
wenn mehr als eine "&&" Verknüpfung da sind.
Es ist zwar Arduino, soll aber mit C Ähnlichkeit haben.
Hier der Code:
/* Codeschalter auslesen.*/

int inputPins[] = {2,3,4,5}; //Array für die Eingänge; analog zum Array 
Aufruf


void setup()
{
  for(int index = 0; index < 4; index++)
  {
    pinMode(inputPins[index],INPUT); // Pins als Eingänge deklarieren
    digitalWrite(inputPins[index],HIGH);
    Serial.begin(9600);
  }
}

void loop()
{
  for(int index = 0; index < 4; index++)
  {

    int val = digitalRead(inputPins[index]);
    if ((val == LOW) && (index == 0) && (index == 3)) // LOW => 
Schalter(Pin) ist geschaltet
      {
      Serial.print("Jau! ");
      Serial.print(inputPins[index]); //Was hier steht ist Quatsch, soll
      Serial.println();               //nur helfen den Code zu prüfen.
      Serial.print(index);
      Serial.println();
      delay(500);
     }
   }
// while(1);  // soll später genutzt werden.

}

Vielen Dank schon mal für eure Hilfe!

Lieben Gruß
Frank

von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

Frank O. schrieb:
> if ((val == LOW) && (index == 0) && (index == 3))

Das wird nie wahr, denn index kann nicht gleichzeitig 0 und 3 sein.

Möchtest Du, daß die Bedinung zutrifft, wenn val LOW und index 0 oder 
3 ist?

Dann formuliere das um:

> if ((val == LOW) && ((index == 0) || (index == 3)))


Was ist eine "IF-Schleife"?

von d'oh (Gast)


Lesenswert?

Frank O. schrieb:
> if ((val == LOW) && (index == 0) && (index == 3)) // LOW =>

Wie kann der Index gleichzeitig 0 und 3 sein? Die Bedingung wird niemals 
erfüllt werden.

von geHe (Gast)


Lesenswert?

kann so nicht gehen:
"index" der for Schleife kann nie gleichzeitig 0 und 3 sein!

von F. F. (foldi)


Lesenswert?

Danke!
Ich bin sooo doooof.
Wenn ich das nur mit val == LOW laufen lasse, dann zeigt er mir alle 
Pins nacheinander! (und da war mein Denkfehler) an.

Das muss ich jetzt wohl ganz anders machen?

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.