Was ist das Problem bei dem Programm?

4 Antworten

Vom Fragesteller als hilfreich ausgezeichnet

Alle drei while-Schleifen sind Endlosschleifen. Wirf sie raus und schreibe stattdessen:

if (lichtl>800 || lichtm>800 || lichtr>800)
    digitalWrite(13, HIGH); // mind. ein Sensor ist an
else
    digitalWrite(13, LOW);  // alle Sensoren sind aus
EchoTech  02.05.2024, 08:48

eher so rum

if (lichtl < 800 || lichtm < 800 || lichtr < 800)
    digitalWrite(13, HIGH); // Mindestens ein Sensor ist getroffen
else
    digitalWrite(13, LOW);  // Kein Sensor ist getroffen
1

Grob gesagt könnte es daran liegen das ihr für jeden Sensor eine Schleife habt (Solange Licht an/Licht auf Sensor).

Problem dabei wäre solange das Licht an Sensor 1 an ist, lasse licht an und bleibe in der Schleife, solange er in dieser Schleife ist, kann er keine anderen sachen machen.

Macht am besten aus den Whiles einfach mal ein if und wenn dann der nächste Schleifendurchlauf kommt, wird die LED einfach wieder ausgeschaltet

Eure while Schleifen sind leider ziemlich unschön. Diese Schleifen halten das Programm in einem Zustand fest, solange die Bedingung wahr ist. Das bedeutet, wenn einer der Sensoren aktiviert wird (Lichtwert unter 800 fällt), tritt das Programm in die entsprechende while Schleife ein und bleibt dort, bis der Wert wieder über 800 steigt. Dadurch können andere Sensoren nicht überprüft werden.

Für euer Vorhaben würde ich definitiv If anstatt while schleifen verwenden.

Ihr könntet die Logik so anpassen, dass die LED leuchtet, wenn irgendein Sensor aktiviert wird. Dies könnt ihr erreichen, indem ihr eine Variable verwendet, die den Status der LED steuert und sie entsprechend den Werten der Sensoren aktualisiert.

So könnt ihr in keine Endlosschleife kommen. Wenn ihr hilfe beim code braucht sagt bescheid

Gruß EchoTech

Woher ich das weiß:Berufserfahrung

kA aber ich schätze lichtl, lichtm, lichtr ändern sich innerhalb der jeweiligen Schleife ja nicht, d.h. sie müssten darin wiederholt abgefragt werden (analogRead). Vielleicht hilft das schon. Mehr hab ich jetzt nicht geschaut.

Woher ich das weiß:Studium / Ausbildung – Datenverarbeitungs-Kfm, Hobby- und Profi-Programmierer
DonkeyShot  01.05.2024, 22:03

Müssten man wohl leicht umstrukturieren

0