Pages: [1]   Go Down
Author Topic: Encoder-Funktion erweitern um +100 / -100  (Read 476 times)
0 Members and 1 Guest are viewing this topic.
Traunstein, Germany
Offline Offline
Full Member
***
Karma: 0
Posts: 111
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Hallo und guten Morgen zusammen,
ich habe ein Problem mit einem Encoder und wäre über einen Ansatz dankbar.
Hier erstmal der vorhandene Code:
Code:
void encoderReadShots(){
  // ENCODER
  state = (digitalRead(PIN_HIGHBIT) << 1) | digitalRead(PIN_LOWBIT);
  count += encoderStates[prevState][state];
  if (state != prevState) {
    encoder = count/2;
  }
  prevState = state;
}
Das funktioniert auch schon sehr gut, drehe ich an meinem Encoder, wird der Wert 'encoder' verändert.
Nun habe ich aber einen Wunsch. Ich möchte eine Funktion haben, die den Wert encoder um sagen wir mal 100 erhöht. Wenn ich es einfach dazu zähle, wird beim nächsten Encoder drehen wieder da weiter gemacht wo ich war und das will ich nicht.

Hat hier jemand einen Tip?

Viele Grüße,
Stefan
Logged

Weinsberg, Germany
Offline Offline
God Member
*****
Karma: 2
Posts: 770
A Coder's Tale
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Das hab ich jetzt nicht ganz verstanden, was genau hast Du vor?

Hast Du uns mal Deinen kompletten Code?
Logged

Traunstein, Germany
Offline Offline
Full Member
***
Karma: 0
Posts: 111
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Das ist schon der komplette relevante code.

Ich habe einen encoder mit 2 Ausgängen. Mit dem Code lese ich den Wert aus. wenn ich dran drehe, wird der Wert "encoder" um eins erhöht oder verniedrigt (das ist nicht das richtige Wort, aber ihr wisst was ich meine)

Nun habe ich einen Taster und der soll mit den Wert um 100 erhöhen. Das ist auch kein Problem (encoder += 100), aber wenn ich dann wieder am Encoder drehe, funktioniert das natürlich nicht mehr.

Logged

Offline Offline
Sr. Member
****
Karma: 2
Posts: 347
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

So ganz klar ist es mir nicht.
Aber ich denke eine zusätzliche Variable einfügen.
In der kann man dann beide Werte addieren?

Logged

NRW
Offline Offline
Sr. Member
****
Karma: 1
Posts: 372
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Ich glaube ich weiss was er meint.
Er möchte halt nicht ne stunde drehen um den Wert um 100 zu erhöhen.
Also will er einen Taster haben der direkt um 100 nach oben springt.
Und für die Feineinstellung will er wieder drehen.

Ich verstehe leider nicht was genau sein Code macht.
Aber das kann so wohl nicht gehen.
Weil er macht ja beim Taster:
encode +100
nur wenn er dann wieder dreht passiert ja folgendes:
encoder = count/2;
Und da count ja nicht mit geändert wurde wird encoder wieder auf count/2 gesetzt.
Oder sehe ich das falsch.
Logged

Traunstein, Germany
Offline Offline
Full Member
***
Karma: 0
Posts: 111
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Vielen Dank für den Tip mit der zusätzlichen Variablen. Das ist spitze, genau das habe ich gebraucht. Läuft :-)

Manchmal sind es die einfachen Sachen, die einem einfach nicht in den Sinn kommen...
Logged

Germany
Offline Offline
Edison Member
*
Karma: 44
Posts: 2261
Arduino rocks
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Brauchst du die 100 Schritte nur in eine Richtung oder in beide, demnach +/-100? In dem Fall könntest du dir überlegen, diese Taste als eine Art Shift-Taste zu nutzen, d.h. wenn sie gedrückt ist und nach rechts gedreht wird +100, wenn sie gedrückt wird und der encoder nach links gedreht wird somit -100.
Logged

Mein Arduino-Blog: http://www.sth77.de/ - letzte Einträge: Teensy 3.0 - Teensyduino unter Window 7 - Teensyduino unter Windows 8

Traunstein, Germany
Offline Offline
Full Member
***
Karma: 0
Posts: 111
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Das ist eine schöne Idee, aber ich habe hier noch ein Display mit 'related buttons' drunter, demnach ist ein +100 und ein -100 - Button vorhanden
Logged

Pages: [1]   Go Up
Jump to: