Re: ports.adc Kategorie: Programmierung (von ChristianK - 8.11.2004 11:11) | ||
Als Antwort auf Re: ports.adc von ChristianK - 8.11.2004 10:12 | ||
| ||
> > > ok, fangen wir noch mal von vorn an. > > > > > > man nehme: > > > > > > 1. einen Thread, welcher Dir ständig so im etwa 250ms Takt den Wert vom > > > AD Eingang einliest und am Display ausgibt. > > > > > > 2. einen Widerstand ( etwa 220k ) zwischen AD und +5V. > > > Damit ziehen wir den AD im Ruhezustand hoch. > > > > > > 3. an der Masse abgreifen und zu deinem Doppeltaster gehen. > > > > > > 4. nach deinem Doppeltaster einmal Widerstand ( etwa 3k ) und am anderen Ausgang > > > so etwa ( 5k ) anlegen. Beide Widerstände zum AD Eingang. > > > > > > probiers mal und poste das Ergebniss. > > > Du kannst auch den 220k gegen Masse ziehen, und die Spannung der Tasterwiderstände > > > holst Du dir von den +5V. Sollte auch gehen. > > > > > > Rene > > > > > > > Moin, > > > > fürs erste würde ich mal direkt, über 10k- schutzwiderstand an die Bezugspotentiale gehen und > > mir die Me�werte ansehen, die da wären 0 für Masse und 1023 für +5V. > > Wenn die stabil sind, wovon ich ausgehe, würde ich an Deinem Spannungsteiler die Taster mal durch > > Drahtbrücken ersetzen. Deine Tasten sind möglicherweise nicht sehr Kontaktsicher. > > > > mfg > > krassos > > Hallo Rene und krassos > > ich habe jetzt mal folgendes ausprobiert: > > for i=1...4 > { > for n=0...12 step 6 > { > hdt.OkTaste1 = ports.adc(2); > rblcd.goto(i,n); > rblcd.zahl5(hdt.OkTaste1); > sleep 10; > } > } > > Dann bekomme ich z. B. folgende Anzeige bei der Stop-Taste: > (der erste Wert schwankt von 400 bis 800) > > 476 901 902 > 903 902 902 > 903 902 902 > 903 451 451 > > Die Anzahl der Werte mit dem Sollwert für die entsprechende Taste hängen natürlich > davon ab, wie lange die entsprechende Taste gedrückt wurde. Bei extrem kurzen > Antippen der Taste erhalte ich nur 3mal den Sollwert. > Ich habe verschiedene Tasten ausprobiert, bei der schlechtesten erhalte ich nur 1mal > den Sollwert. (Hinweis von krassos ist richtig) > Das Beste wären Tasten, die eine definierte Ein-Zeit hätten, also nicht schleifende Kontakte, > sondern mit einer "Schapp"-Charakteristik, wie man sie bei MIcro-Switches hat. > Weder bei Reichelt noch bei Conrad finde ich ausreichende Spezifikationen um zu > erkennen, welche Charakteristik die Tasten haben. > > Es sieht also so aus, das ich wohl mit meiner Abfrage zu schnell bin und so bei einer > einzigen Abfrage des AD-Portes zu einem Zeitpunkt abfrage, wo sich der Wert noch nicht stabilisiert > hat. Ob es mit einem definierten sleep funktioniert oder ob ich doch eine math.max...-Schleife > benutze, die ich bei sinkendem Wert verlasse, werde ich ausprobieren, > es sei denn, jemand hat eine bessere Idee > > Danke für die Tipps. > > MfG > ChristianK. > > > Ergebnis: Ich habe zwischen dem wait (Abfrrage, ob Taste gedrückt wurde) und dem Zuweisen des Variablenwertes ein sleep 25 eingefügt. Jetzt scheint es zu funktionieren! MfG ChristianK | ||
Antwort schreiben Antworten: |