logik bei UND ODER falsch oder richtig

Hallo,

irgendwie verstehe ich da was falsch

habe 2 taster und eine LED an einen atmega2560

wenn ich das programm im anhang mache funktioniert es wenn ich ein taster drücken oder den anderen taster drücke leuchtet die LED. setze ich anstelle das && das || (oder) sollte es doch eigentlich so funktionieren
das egal welcher taster ich drücke die LED leuchtet und nicht bei UND.
Bei UND müsste ich doch beide Taster drücken damit die LED leuchtet und nicht bei ODER

beide Taster schalten über 5V in den Eingang. Pulldown mit 10k zur Masse. Ging leider nicht anders weil es was fertiges war. Normal sollte man Taster gegen Masse schalten.

Kann mich da mal jemand aufklären.

void setup()
{
  pinMode(30, OUTPUT);
  pinMode(9, INPUT); 
  pinMode(13, INPUT);
}

void loop()
{  
    if ((digitalRead(9) == 0) && (digitalRead(13) == 0)) {
      digitalWrite(30, HIGH);
  } else {
    digitalWrite(30, LOW);
  }
}

Wenn Deine Taster nach 5V schalten und Du digitalRead(9) == 0 prüfst, dann ist das wahr, wenn Dein Taster nicht betätigt ist.

Gruß Tommy

stefangem:
irgendwie verstehe ich da was falsch
wenn ich das programm im anhang mache funktioniert es wenn ich ein taster drücken oder den anderen taster drücke leuchtet die LED.

Bei UND müsste ich doch beide Taster drücken damit die LED leuchtet und nicht bei ODER

beide Taster schalten über 5V in den Eingang. Pulldown mit 10k zur Masse.

Kann mich da mal jemand aufklären.

void setup()

if ((digitalRead(9) == 0) && (digitalRead(13) == 0)) {
      digitalWrite(30, HIGH);
  } else {
    digitalWrite(30, LOW);

Ganz einfach:
Der Code prüft nicht ob beide Tasten gedrückt sind, sondern ob beide Tasten auf LOW gezogen sind.
Da Du einen PIN mit dem Taster auf HIGH ziehst, ändert sich der Status des OutputPIN denn nur wenn beide TasterPIN LOW sind, ist OutputPIN HIGH.

Hinweis:
Gewöhne Dir an, bei der Auswertung von DigitalInputPin boolche Variablen zu benutzen!