PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Variablen über Tasten System einstellen



Rudi 19
18.12.2017, 20:29
Hallo miteinander,

ich habe aktuell einen Code indem ich drei Variablen über ein LCD Display einstellen kann. Im Moment habe ich 2 Tasten um die Variablen durch zu wechseln, 2 Tasten um +1/-1 zu addieren/subtrahieren und eine Taste um nach dem einstellen der Variablen das gewünschte zu starten. Ich wäre mit dem ganzen auch schon total zufrieden, wenn ich bei zwei Variablen nicht Werte von 1-10000 gerne eingeben würde. Dies dauert aktuell mit +/- sehr lange, da man den Knopf jedes mal aufs neue Drücken muss. ,
Ich suche jetzt eine sinnvolle und einfache Lösung das zu verbessern. Noch mehr Tasten für +-10, +- 100, +- 1000, wären eine Idee, allerdings finde ich das keine wirklich schöne Lösung, da ich nicht alle Pins mit x Tasten besetzen möchte. Das man den Knopf gedrückt halten kann und der Arduino "ohne Wartezeit" hochzählt, ist wahrscheinlich auch nicht sinnvoll, da dann ein genaues einstellen unmöglich wird.
Andere Ideen habe ich im Moment noch nicht. Wäre das ganze mit einem Joystick schöner umzusetzen? Hätte ich auch noch rum liegen. Ich hoffe ihr habt ein paar Ideen, bin noch am Anfang meiner Arduino Karriere.

oberallgeier
18.12.2017, 23:54
Hi Rudi!


.. mehr Tasten für +-10, +- 100, +- 1000 .. keine wirklich schöne Lösung .. "ohne Wartezeit" .. ist wahrscheinlich auch nicht sinnvoll ..In einem ähnlichen Fall - aber ohne arduino - hatte ich ein ähnliches Problem für mich ziemlich zufriedenstellend (https://www.roboternetz.de/community/threads/62904-Servomesstester-%28Servotester-und-%C2%96messaufbau%29?p=585511&viewfull=1#post585511) gelöst. Ich hatte bei anhaltendem Druck die Werte nur mit Delay hochgetickert. Erster bis zehnter Wert hohes Delay, elfter bis zwanzigster Wert kleineres Delay, ab fünfzig winziges und ab hundert gar kein Delay. Wer bei - sagen wir - siebzig aufhören will muss also sinnvollerweise vor fünfzig mal den Bleifinger runternehmen - nur als Beispiel. Kurz gesagt: einmal unterbrochen wird das Delay sofort zurückgesetzt auf lang. Bei Deiner ± - Aufgabe könnte dazukommen: rechte Taste tickert hoch, links tickert runter. Ansonsten - die Finger-on-Taste-time steuert das delay.

Wär das was ?

Rabenauge
19.12.2017, 00:29
Die Variante mit dem Joystick würde auch funktionieren, indem du die Werte (ich gehe von nem analogen Stick aus) quasi mit dem Ausschlag voreinstellst.
Aber: genaue Werte kannst du so nahezu unmöglich eingeben.
Ich hatte seinerzeit mal drei Buttons an _einem_ Analogeingang, die mittels Widerständen unterscheidbar waren.
Das geht auch und sieht ungefähr so (https://i.stack.imgur.com/3kJmy.jpg) aus.
Dort sind es noch mehr-irgendwann aber wird das einlesen ungenau. Mit dreien funktioniert es ganz problemlos.
Trotzdem isses Bauaufwand- die Variante, die Joe vorschlägt, ist nur bisschen Programmiererei.
Mit den "Delays" (echtes delay(irgendwas) würd ich nicht machen, aber prinzipiell läufts so) muss man bisschen herumprobieren, welche Zeitspannen sinnvoll sind-man muss ja auch noch Zeit zum reagieren haben.

HaWe
19.12.2017, 09:42
Hi Rudi!

In einem ähnlichen Fall - aber ohne arduino - hatte ich ein ähnliches Problem für mich ziemlich zufriedenstellend (https://www.roboternetz.de/community/threads/62904-Servomesstester-%28Servotester-und-%C2%96messaufbau%29?p=585511&viewfull=1#post585511) gelöst. Ich hatte bei anhaltendem Druck die Werte nur mit Delay hochgetickert. Erster bis zehnter Wert hohes Delay, elfter bis zwanzigster Wert kleineres Delay, ab fünfzig winziges und ab hundert gar kein Delay. Wer bei - sagen wir - siebzig aufhören will muss also sinnvollerweise vor fünfzig mal den Bleifinger runternehmen - nur als Beispiel. Kurz gesagt: einmal unterbrochen wird das Delay sofort zurückgesetzt auf lang. Bei Deiner ± - Aufgabe könnte dazukommen: rechte Taste tickert hoch, links tickert runter. Ansonsten - die Finger-on-Taste-time steuert das delay.

dieser Vorschlag funktioniert tatsächlich wirklich gut, so habe ich es auch bereits einmal gelöst.

oberallgeier
19.12.2017, 09:46
.. muss man bisschen herumprobieren, welche Zeitspannen sinnvoll sind-man muss ja auch noch Zeit zum reagieren haben.Das Ausmessen von Zeitspannen habe ich mit ner handelsüblichen IR-Fernsteuerung von (m)einem alten Fernseher bzw. mit verschiedenen Fernsehern gemacht. Die haben ja ein bestimmtes Timing beim Einstellen dreistelliger Werte wie z.B. zur Senderanwahl : "123" - UND warten nicht unbegrenzt lange, bis der nächste Wert eingestellt wird sondern gehen nach ner WEile von selbst auf "Ur"zustand. >> UND << an genau dieses Timing haben wir uns bei unseren Fernsteuerungen (oder Tastensteuerungen an Smartphones, Tablets und solchem Zeugs) ziemlich gewöhnt.

Deshalb versteht der TV die Eingabe "1-Pause" als 001, "11-Pause" als 11 und ohne Pause geht das "111" glatt durch als hundertelftes Programm WENN die entsprechenden Tasten schnell genug betätigt werden. Die Zeiten hatte ich gemessen und dieses Timing war für mich Richtlinie bei den Tasten des Servotesters, aber auch beim RC-5-3-Code für Archie (https://www.roboternetz.de/community/threads/61379-Kopfsache-und-ein-m1284-etliche-Servos-viel-Alu?p=600400&viewfull=1#post600400) (ab 0:47 und 1:36, beachte auch LED-Anzeige) und meinen MiniD0 (https://www.roboternetz.de/community/threads/36121-Autonom-in-kleinen-Dosen-R2_D03-Nachfolger-R3D01?p=495507&viewfull=1#post495507). RC-5-3 nenne ich es, wenn über RC-5-Code eine dreistellige Zahl eingegeben wird. Allerdings werte ich bei Archie NUR Zahleneingaben aus die auch wirklich dreistellig sind, die Codes zwischen "1" und "99" bleiben unbenutzt. Zusätzlich wird natürlich das ganze Tastenfeld der Fernsteuerung, für verschiedene andere Tasks benutzt. Praktisch immer nur eine Taste für einen bestimmten Task, z.B.: (0/1) für Motorstop, Pfeil-auf/Pfeil-ab für Speedänderung schneller/langsamer, Pfeil-links/Pfeil-re für Kurvenfahrten, SWAP für Umschalten vorwärts/rückwärts, OK für Umschalten von Kurvenfahrt auf geradeaus usw usf.

Das bringt ne nächste Einstellmöglichkeit in meine Projektchen: IR-Code. Auch das könnte für Rudi ne mögliche Lösung sein. Ne alte Fernsteuerung (bei mir NUR RC-5-Code - weil ich zu faul bin nen andern auszumessen und zu programmieren) und im Target ein PCINTxx - geht natürlich auch INT0 oder ~1 - für RC-5, der über ein 36kHz-IR-Empfänger-IC eingelesen wird - bei mir ein SFH5110 (https://de.rs-online.com/web/p/ir-empfanger/6548952/). Und so eine Fernsteuerung hat ja auch praktisch immer einige Tasten mit "Pfeil auf" / "Pfeil ab".