Arduino UNO, Encoder durch Tasten ersetzen .

Hallo, aus Platz und ästhetischen Gründen möchte ich ein Encoder durch 2 Drucktasten ersetzen. Der encoder ist so angeschlossen: Pin C > Masse des Arduinos Pin A > Pin A0 Pin B > Pin A1 Die Tasten sollten sich so verhalten: Einmal drücken sollte einen Puls generiert werden, auf oder ab je nach Taste. Länger drücken sollten die Pulse kontinuierlich generiert werden und sich progressiv beschleunigen bis auf z.B. 40 Hz, auch auf oder ab je nach gedrückte Taste. Wie könnte ich es am einfachtesn machen? Mir ist schon klar das ich ausser die Tasten zusätliche Bauteile brauchen werde. Könnte mich jemand helfen? Bedanke mich im Voraus und wünsche euch einen guten Start in die neue Woche.

hi,

je nachdem, ob delays erlaubt sind (also ob während des drückens der taster andere operationen im hintergrund ablaufen müssen), kannst Du eben delays oder "blinkwithoutdelay" (siehe beispiel bei basics in der IDE) verwenden.

das prinzip bleibt das gleiche:

merke dir den anfangswert in einer variablen. beim drücken zählst Du eins hoch (oder runter), wartest eine gewisse zeit, zählst eins hoch, wartest usw.. wenn der unterschied vom anfangswert 5 überschreitet, setzt Du die wartezeit herunter, bei 10 wieder, bei 20 wieder, bis Du die gewünschte endgeschwindigkeit hast. zusätzliche hardware seh' ich da nicht, pullupwiderstände hat der arduino eingebaut...

gruß stefan

Hallo Stefan, vielen dank für deine Hilfe. Also, ich muss noch sagen das ich der absolute Anfänger bin und nicht in der Lage bin große Veränderungen im Code zu machen.

Ganz ehrlich, mit alles was du oben geschrieben hast kann ich nicht viel anfangen. Es geht um ein Makroschlitten für Fotografie das ich gebastelt habe, der Encoder hat folgende Funktionen:

?Im Menü navigieren: ( Schrittweite-Bilderanzahl-Pause für Auslösung-Automatisch Zurück) ?Die verschiedene Werte in die einzelnen Menüs einzustellen (z.B. im Menü "Scrittweite" kann ich durch drehen am encoder einen Wert zwischen 0,0005 mm und 3 Cm einstellen) Also, wenn ich am Encoder drehe werden nicht andere Aufgaben erledigt, zuerst stelle ich alles ein, dann drücke auf eine Start-Taste und ab hier läuft den Schlitten automatisch. Nun möchte ich den encoder ersetzen, weil er zu groß für das Handgehäuse ist und ausserdem sieht sehr klobig aus, alle andere Tasten sind sehr flach. Wäre nicht möglich, mit einen ?C oder andere Bauteile und 2 Tasten das Quadratursignal zu generieren? Löten wäre mir einfacher als programieren :-)

Grüße

Hallo,

arbeite dich durch einen Anfängerkurs. Ein Beispiel wäre: http://funduino.de/index.php/2-hardware-und-software. Es gibt auch sehr schöne Bücher. Was du suchst sind Fingerübungen für Anfänger.

hi, makimoto,

ich dachte, daß der encoder an einem arduino hängt, deshalb diese erklärung. Du willst aber einen encoder durch zwei taster UND einen arduino (bzw. mikrocontroller) ersetzen. tja, da muß ich passen, weil ich nicht mal weiß, welche signale ein encoder ausgibt. aber hier im forum gibt's genug "elektroniker", vielleicht hast Du ja glück...

gruß stefan

Hi Stefan, ich habe mich vielleicht falsch ausgerdückt, der encoder hängt am Arduino und alles funktioniert schon, ich möchte nur den Encoder durch 2 Tasten ersetzen. Also anstatt den Knopf zu haben möchte ich mit 2 Auf/Ab Tasten einbauen, aber der Arduino soll bleiben so wie es ist. Nur Funktion des Encoders durch Drucktasten ersetzen.

Danke dir und Theseus für eure kommentare. LG

der Arduino soll bleiben so wie es ist. Nur Funktion des Encoders durch Drucktasten ersetzen

Deine Frage ist also: wie kann ich durch Elektronik aus zwei Tasstern etwas machen, das sich hinterher genau wie ein Encoder verhält? Weil ich den Arduino, an dem der Encoder hängt, nicht verändern möchte, sondern lieber löte ?

Dann fällt also der Vorschlag, "nimm also einen zweiten Arduino ( könnte auch ein attiny sein, da es nur um 4 digitalpins geht )" auch flach ? Na dann viel Glück, und vielleicht hilft ein reines Elektronik - Forum eher.

( Ich würde anstelle der Encoder-Logik deine Taster-Logik in den vorhandenen Arduino einbauen. )

Hallo,

also dann dürfte das einfachste sein, zwei Tasten statt des Drehencoders an den Arduino anzuschließen und entweder programmierst du selber oder du bittest den Programmierer des Programms um Modifikation.

Die nächste Möglichkeit wäre der Einsatz eines kleineren Drehencoders.. Dieser ist kaum größer als ein Mikrotaster.

Mit wenig Programmieraufwand ginge ein zweiter Arduino. Noch eleganter wäre der Einsatz eines Attiny, der sich mit Modifikationen auch über die Arduino-IDE programieren lässt..

Hallo, vielen Dank an euch allen für eure Unterstützung. Kleinere anpassungen habe ich schon gemacht, aber die Struktur so zu ändern das ich den encoder durch die Tasten ersetzen kann, ist mir recht kompliziert, obwohl ich schon viel gelesen habe reichen meine Kentnisse dafür nicht. Den Vorschlag mit Attiny finde ich auch gut, nur den Code kann ich leider nicht selber schreiben, wäre einer von euch bereit mich zu helfen? Danke nochmals. Viele Grüße

Den Code selbst kannst/darfst/willst du hier nicht reinstellen, dass wir für beide Varianten mal das Für und Wider abschätzen können?

Hallo,

das Programm ist gut kommentiert, deshalb kann jemand das modifizieren. Aber ich glaube, damit es hinterher wie gewünscht funktioniert, muss man den Fokusschlitten da haben und testen können. Auch dürfte man da mindestens einen ganzen Abend mit beschäftigt sein, was man nicht so einfach mal so macht.

Ich persönlich würde wohl einen Miniaturdrehencoder, wie ich ihn verlinkt hatte, nehmen. Mit Drehencodern kann man ja sehr schnell und präzise was einstellen. So stelle ich den Wecker am Herd, wegen des Drehknopfs wesentlich lieber, als den Küchentimer mit Knopf Hoch und Runter. .

Hi Theseus, danke für die Mühe. Kann mir schon vorstellen das nicht einfach ist, deswegen wäre mir die Option mit ein Attiny das Signal zu generieren lieber. Ich möchte den encoder nur ersetzen weil das Gehäuse wirklich sehr flach ist und ich eine Folientastatur schon habe, es sind die vier Pfeiltasten mit "OK" in der Mitte, das würde wunderbar passen. Könnte man mit ein Attiny überhaupt das Rechtecksignal mit 90 Grad verschiebung generieren? So habe ich mir die Sache vorgestellt: Die 2 Tasten am Attiny hängen und 2 Augänge von Attiny mit A0 und A1 des Arduinos verbinden, allerings bin ich nicht sicher ob es funktionieren würde, weil der Pin C des Encoders ist mit Masse verbunden unt der Attiny würde positive Pulse generieren, oder bin ich da total falsch? Sorry wegen der fragerei, bin leider kein Spezialist, deswegen habe ich mich an euch gewendet. Wenns keine Möglichkeit gibt werde ich den Encoder bei Conrad bestellen und schauen wie ich das Problem löse. Danke an alle nochmals.

Die Signalerzeugung sollte kein Problem sein. In dem Kurs, den ich verlinkt hatte, entspricht das Knopfdruck auswerten und LEDs blinken lassen. Im Endeffekt musst du zwei Ausgänge mit etwas Zeitversatz ein und ausschalten. Dafür sollte sogar Delay reichen. Dein Prozessor ist mit GND verbunden. Also kein Problem.

Zur Attiny-Programmierung: http://highlowtech.org/?p=1695 oder Trinket: http://learn.adafruit.com/introducing-trinket/introduction

Oder natürlich ein Arduino. Besonders Kompakt sind die Pro Micro (leonardo)