Vieleicht kann mir jemand helfen bei meinem Projekt.
Ich möchte einen Boxautomaten bauen mit einer LM393 Lichtschranke und einem kleinen display.
Das mit dem Display sollte ich selber hinbekommen.
Nur ich bräuchte hilfe bei der programmierung für die Messung.
Es soll am Ende eine Zahl angezeigt werden von 0 - 999 wie stark der Schlag war, nur davor muss die Lichtschranke irgendwie die Zeit messen wie viele ms die Lichtschranke hier wie im GIF gezeigt hindurch kommt. Diese ms sollten dann irgendwie als Zahl von 0 - 999 angezeigt werden.
z.b. das 60ms ein schneller schlag war mit 987...
Im englischen Teil des Forum müssen die Beiträge und Diskussionen in englischer Sprache verfasst werden. Deswegen wurde diese Diskussion in den deutschen Teil des Forums verschoben.
Wobei jetzt in #1 die Anforderung mit dem Hölzchen kam...
Was für einen Pegel bekommst Du, wenn die Lichtschranke unterbrochen ist, als das Holz den Strahl unterbricht?
Vermutlich, weil der SerMon falsch eingestellt ist.
Ich benutze standard 115200.
Entweder änderst Du das bei Dir im Sketch oder unten rechts im Seriellen Monitor.
Die beiden Größen müssen gleich sein.
Reine Gewöhnungssache
Im Übrigen bin ich nicht ganz sicher, ob ich die Anforderung richtig verstanden hatte - eigentlich hieß es ja das zwei gleiche Ereignisse auslösen sollten.
Bei Dir lösen aber zwei unterschiedliche Flanken aus.
Einmal wenn die LS nicht mehr unterbrochen und dann wieder, wenn unterbrochen.
Da ist das mit PulseIn schon richtig.
Die Zeit, die dort ausgegeben wird ist in microsekunden.
Um das in millisekunden umzurechen, wäre dann /1000.
Das ist dann nicht so kompliziert
Ich möchte halt eine Art Boxautomaten bauen wo dann die Stärke des Schlages von 0 - 999 angezeigt wird. Jetzt ist halt die Frage ob es möglich ist die Werte so anzeigen zu lassen sodass wenn man jetzt gegen die Boxbirne schlägt und durch das oben gezeigte Teil mit dem schlitz jetzt zum Beispiel nur 60ms gemessen werden, das es dann eine Zahl von 940 z.b. angezeigt wird.
dann wäre es aber wesentlich einfacher wenn du nur eine Öffnung hast für die du die Zeit misst wie lange diese sichtbar ist und die restliche Zeit soll die Lichtschranke unterbrochen sein.
Ok, jetzt hab ich das verstanden, was Du vor hast
Dann mal gleich vorab eine Logikfrage:
Wenn Du eine Zeit von 60ms auf eine Ausgabe von 999 mappen willst, dürfte nicht 0 auf 0 gemappt werden.
Die Ausgabe 1 erfolgt dann bei welcher Zeit? Also mal ein Ansatz wäre dann 500ms. Alles was darüber liegt, gibt 0 aus.
Womit wir wieder bei pulsein() sind.
Dort kannst Du ein "timeout" mit übergeben. Also einen Zeitwert, der dann zum Abbruch der Messung führt und 0 ausgibt.
Jeder andere Wert wird dann mit map() umgerechnet.
Codeansatz zur Berechnung:
? Ich noch nicht.
Je kürzer die Zeit, desto schneller (und härter) der Schlag, desto mehr Punkte.
Da gibt es prinzipiell mindestens zwei Möglichkeiten: max - x oder max / x
(Aber auch andere nichtlineare Kennlinien)