-
-
Neuer Benutzer
Öfters hier
ADC und Lichtschranken
Hallo!
Ich (absoluter Neuling) will eine Spielstandsanzeige für ein Brettspiel erstellen.
Um Spielscheiben zu erfassen benutze ich Lichtschranken, die über die ADC Ports ausgelesen werden.
Mein Problem:
Wenn eine Spielscheibe in der Lichtschranke liegen bleibt zählt der Zähler hoch. Die Spielscheibe, darf jedoch nur einmal gezählt werden.
Gibt es eine Software-Lösung?
Ich dachte da an Merker oder so!? (R-S-Flip-Flop)????
-
Erfahrener Benutzer
Roboter Genie
Die ADC Ports von was?!
Was für Spielsteine?
Was für Lichtschranken?
Wo und was wird hochgezählt?
...
-
Neuer Benutzer
Öfters hier
Die ADC Ports (ADC1-ADC7)vom AT Mega 16
Das Spiel nennt sich Jakkolo (www.jakkolo.de)!
Man muss Holzscheiben über ein Brett in Fächer schieben.
Die Lichtschranken sind Infrarotdiode und Fotodiode.
Über ein Spannungsteiler messe ich die Spannung an z.B ADC 7. Es funktioniert auch alles.
NUr wenn eine Scheibe in der Lichtschranke liegen bleibt kommt dauernd ein Impuls und lässt den Spielstand hochschnellen, wobei die Scheibe nur einmal gewertet werden darf!
Ich dachte an ein R-S-Flip-Flop.
Habe halt nur keine Ahnung ob diese Möglichkeit beim Prozessor existiert, oder ob ich mit einem RC-Glied mit Flanken arbeite.
-
Erfahrener Benutzer
Roboter Genie
Du hast nen Mikrocontroller und willst mit FlipFlop bzw. RC Glied arbeiten...
Du must doch einfach nur warten bis die Lichtschranke nicht mehr unterbrochen ist und erst dann wieder hochzählen.
-
Erfahrener Benutzer
Robotik Visionär
Das Problem wird man am besten in Software lösen können. Wenn der Stein nicht gerade halb unter der Lichtschranke stehen bleibt, müßte da schon ein grober Fehler in der Software sein, wenn die weiterzählt.
Die seltenen Grenzfälle, dass der Stein gerade halb unter der Lichtschranke ist, könnte man z.B. mit einer gewisse Hysterese (in Software) lösen.
-
Neuer Benutzer
Öfters hier
Das Programm lautet:
Schranke2 = Getadc (7)
If schranke2 < 500 then
x= x + 2
Das Problem hierbei:
Bleibt eine Scheibe in der Lichtschranke liegen zählt mein Zähler immer weiter, weil die Spannung < 500 ist. (In diesem Fall 0.3V)
Kann ich es programmieren, dass nur ein Impuls weitergegeben wird ?
Gibt es da eine Möglichkeit?
-
Erfahrener Benutzer
Roboter Genie
Lege eine Merkervariable an die gesetzt wird, wenn ein Spielstein in der Lichtschranke ist. Erst wenn die Variable wieder zurückgesetzt wird (=> Stein ist durchgefallen) wird der Punktestand erhöht.
Natürlich kannst du dieses Schema auch umgekehrt machen, sprich den Zähler erhöhen wenn der Stein in die Lichtschranke eintritt.
Momentan arbeitest du pegelgesteuert und reagierst auf "Dunkel", du musst aber flankengesteuert entweder das Ereignis "Dunkel->Hell" (Stein ist rausgefallen) oder "Hell->Dunkel" (Stein ist reingefallen) detektieren!
mfG
Markus
-
Neuer Benutzer
Öfters hier
Also geht es mit Merker!!!
Danke!
-
Erfahrener Benutzer
Roboter Genie
Wenn Du die Ports für die Lichtschranke unbedingt als ADC konfigurieren willst, vermute ich, dass Du Fremdlicht eliminieren willst, oder? Die Ports lassen sich jedoch auch als Komperatoren einsetzen, dann hat man die gewünschte Triggerfunktion. VG Micha
-
Neuer Benutzer
Öfters hier
Die Lichtschranken funktionieren mittlerweile!
Die Lichtschranke sperrt wenn eine Scheibe gezählt wird und wird wieder frei gegeben, wenn die Spannung wieder einen bestimmten Wert erreicht hat!
Wie kann ich denn Fremdlicht eliminieren!?
Berechtigungen
- Neue Themen erstellen: Nein
- Themen beantworten: Nein
- Anhänge hochladen: Nein
- Beiträge bearbeiten: Nein
-
Foren-Regeln
Lesezeichen