Hi
In wie fern muß die Lichtschranke gemessen UND ausgegeben werden?
Das PWM-Signal macht der µC von alleine, Das läuft in Hardware.
Somit hast Du 'alle Zeit der Welt', um die Lichtschranke auszulesen.
Wenn ich Deinen Code recht verstehe, wird der PWM-Wert eh nur über BT angepasst, ist also von der Messung abgelöst.
Oha - Du sendest das PWM-Signal selber in Software - DAS ist natürlich - äh - unglücklich.
Sorry, ging davon aus, daß Du das PWM-Signal von der PWM-Hardware vom µC generieren lässt - oder klöppelst Du Dir Morgens auch erst ein Vehikel zusammen, bevor Du Dein Auto anschaust?
Klar, wenn Du die ganze Zeit dafür brauchst, um Dein PWM-Signal abzuwarten (Das ginge auch nicht-blockierend per millis()/micros() ) und hast somit Aussetzer, wenn Du per PulsIn auf den externen Impuls der Lichtschranke wartest.
Versuche, Dein Programm so umzustrukturieren, daß in JEDEM Durchgang überprüft wird, ob der PWM 'umgeschaltet' werden muß - wenn nicht, dann eben nicht!
Schaue Dir dazu das Beispiel in der IDE 'blink_without_delay' an - Das greift auf millis() zurück und blockiert so den µC nicht - macht halt auch Nichts, außer im Kreis rennen, wenn Nichts gemacht werden soll.
Es hat sich als äußerst hilfreich erwiesen, den Programmablauf 'auf Papier' zu bringen, also, WAS, WANN gemacht werden muß.
Der Nachtwächter Klick zeigt Dir, wie mit millis() an die Sache heran gegangen wird.
MfG