INFO: Dieses Forum nutzt Cookies...
Cookies sind für den Betrieb des Forums unverzichtbar. Mit der Nutzung des Forums erklärst Du dich damit einverstanden, dass wir Cookies verwenden.

Es wird in jedem Fall ein Cookie gesetzt um diesen Hinweis nicht mehr zu erhalten. Desweiteren setzen wir Google Adsense und Google Analytics ein.

Antwort schreiben 
 
Themabewertung:
  • 0 Bewertungen - 0 im Durchschnitt
  • 1
  • 2
  • 3
  • 4
  • 5
Encoder: Zahl mit einer Nachkommastelle erzeugen
10.08.2014, 10:51
Beitrag #9
RE: Encoder: Zahl mit einer Nachkommastelle erzeugen
Moin Cray,
Zitat:Wäre es möglich, auf einen Taster umzusteigen? Zwei Taster: einen für die ganzen Temperaturwerte und einen für die Nachkommastelle?
Yup, das ist nicht wirklich das Problem. Du solltest die Taster wie hier http://arduino.cc/en/Tutorial/ButtonStateChange gezeigt verdrahten.
Wenn du dann noch mitteilst an welchen Pins die Buttons hängen, sollte der Code relativ fix fertig sein.
Grüße Ricardo
PS: Du solltest den Rat von Bitklopfer beherzigen und den anderen Thread zum gleichen Thema löschen.

Nüchtern betrachtet...ist besoffen besser Big Grin
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
10.08.2014, 11:02 (Dieser Beitrag wurde zuletzt bearbeitet: 10.08.2014 11:27 von Bitklopfer.)
Beitrag #10
RE: Encoder: Zahl mit einer Nachkommastelle erzeugen
(10.08.2014 10:51)rkuehle schrieb:  ...
Yup, das ist nicht wirklich das Problem. Du solltest die Taster wie hier http://arduino.cc/en/Tutorial/ButtonStateChange gezeigt verdrahten.
...

...warum nicht einfach den Port per Taster gegen GND schalten und den internen Pull-Up Widerstand aktivieren ?

pinMode(Eingangspin, INPUT); // Port als Eingang definieren
digitalWrite(Eingangspin, 1); // Pull Up aktivieren

Idea

1+1 = 10 Angel ...und ich bin hier nicht der Suchmaschinen-Ersatz Dodgy...nur mal so als genereller Tipp..
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
10.08.2014, 12:17
Beitrag #11
RE: Encoder: Zahl mit einer Nachkommastelle erzeugen
(10.08.2014 10:51)rkuehle schrieb:  Moin Cray,
Zitat:Wäre es möglich, auf einen Taster umzusteigen? Zwei Taster: einen für die ganzen Temperaturwerte und einen für die Nachkommastelle?
Yup, das ist nicht wirklich das Problem. Du solltest die Taster wie hier http://arduino.cc/en/Tutorial/ButtonStateChange gezeigt verdrahten.
Wenn du dann noch mitteilst an welchen Pins die Buttons hängen, sollte der Code relativ fix fertig sein.
Grüße Ricardo
PS: Du solltest den Rat von Bitklopfer beherzigen und den anderen Thread zum gleichen Thema löschen.
Danke. Müsste ich für das Herunterregeln von z. B. 50 auf 40 bzw. der Nachkommastelle zwei weitere Taster einbauen?

Gruß
Cray-1
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
10.08.2014, 12:45
Beitrag #12
RE: Encoder: Zahl mit einer Nachkommastelle erzeugen
Ja, natürlich. Habe ich vergessen zu erwähnen. Sorry Huh
Theoretisch würde noch ein Taster fehlen, der die Eingabe der Werte abschließt bzw. bestätigt. Da ist man mit einem LCD-Keypad bald besser dran, weil weniger Kabelkram und gleich noch eine Anzeige.
Grüße Ricardo

Nüchtern betrachtet...ist besoffen besser Big Grin
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
10.08.2014, 16:22
Beitrag #13
RE: Encoder: Zahl mit einer Nachkommastelle erzeugen
(10.08.2014 12:45)rkuehle schrieb:  Ja, natürlich. Habe ich vergessen zu erwähnen. Sorry Huh
Theoretisch würde noch ein Taster fehlen, der die Eingabe der Werte abschließt bzw. bestätigt. Da ist man mit einem LCD-Keypad bald besser dran, weil weniger Kabelkram und gleich noch eine Anzeige.
Grüße Ricardo

Zwei grundsätzliche Frage zum Encoder: 1) Ist es nicht möglich, statt ganze Zahlen die Zahl "0,1" zu verwenden. Wenn vorher 1, 2, 3 usw. anläuft, warum kann man das nicht zu 0.1, 0.2 usw. ändern?
2) Ist die Auflösung einstellbar, dies meint, wenn ich den Encoder um einen "Einrast-Punkt verdrehe nur eine Zahl weitergegengen wird statt wie momentan gleich vier Zahlen?

Gruß
Cray-1
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
10.08.2014, 17:40
Beitrag #14
RE: Encoder: Zahl mit einer Nachkommastelle erzeugen
Hallo Cray,
die Encoder bringen keine Zahlen raus, nur Signale. (Sagte ja Bitklopfer auch schon). Je nach Bewegung sind die Signale verschieden. Die "Zahlen" (also Positionswerte) werden über die Encoder Lib aus den Bewegungssignalen generiert. Die Lib setzt das 4xCounting um, steht ja auch in der Beschreibung.
Alternativ kannst du ja mal folgenden Code testen, der ohne Lib arbeitet:
Code:
// hier die Arduino-Pins für den Encoder eintragen
#define ENC_A 14
#define ENC_B 15
// Wenn Encoder an 8 und 9, dann ENC_PORT PINB
// Wenn Encoder an 0 und1, dann  ENC_PORT PIND
#define ENC_PORT PINC
void setup()
{
  /* Setup Encoder pins als Input */
  pinMode(ENC_A, INPUT);
  digitalWrite(ENC_A, HIGH);
  pinMode(ENC_B, INPUT);
  digitalWrite(ENC_B, HIGH);
  Serial.begin (115200);
  Serial.println("Start");
}

void loop()
{
static uint16_t counter = 0;      
int8_t tmpdata;
  tmpdata = read_encoder();
  if( tmpdata ) {
    Serial.print("Counter Wert: ");
    Serial.println(counter, DEC);
    counter += tmpdata;
    counter=counter/4;
  }
}
/* Gibt Änderung im Encoderstatus zurück (-1,0,1) */
int8_t read_encoder()
{
  static int8_t enc_states[] = {0,-1,1,0,1,0,0,-1,-1,0,0,1,0,1,-1,0};
  static uint8_t old_AB = 0;
  old_AB <<= 2;                   //vorherigen Status merken
  old_AB |= ( ENC_PORT & 0x03 );  //aktuellen Status addieren
  return ( enc_states[( old_AB & 0x0f )]);
}
Du siehst auch diese Routine gibt ganze Zahlen als Ergebnis der Positionsänderung zurück. Wie soll es auch anders sein? Woher soll die Routine wissen ob du gerade eine ganze Zahl oder nur ein Zehntel ändern möchtest.
Was man sicher machen könnte,wäre jede Counter-Änderung als ein Zehntel zu bewerten und nach zehn Zehnteln (also Bewegungen in die gleiche Richtung) dann halt die gabze Zahl um eins erhöhen. Das ist aber reine Programmlogik nach Ausgabe des Counter.
Grüße Ricardo

Nüchtern betrachtet...ist besoffen besser Big Grin
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
10.08.2014, 19:00
Beitrag #15
RE: Encoder: Zahl mit einer Nachkommastelle erzeugen
(10.08.2014 17:40)rkuehle schrieb:  Hallo Cray,
die Encoder bringen keine Zahlen raus, nur Signale. (Sagte ja Bitklopfer auch schon). Je nach Bewegung sind die Signale verschieden. Die "Zahlen" (also Positionswerte) werden über die Encoder Lib aus den Bewegungssignalen generiert. Die Lib setzt das 4xCounting um, steht ja auch in der Beschreibung.
Alternativ kannst du ja mal folgenden Code testen, der ohne Lib arbeitet:
Code:
// hier die Arduino-Pins für den Encoder eintragen
#define ENC_A 14
#define ENC_B 15
// Wenn Encoder an 8 und 9, dann ENC_PORT PINB
// Wenn Encoder an 0 und1, dann  ENC_PORT PIND
#define ENC_PORT PINC
void setup()
{
  /* Setup Encoder pins als Input */
  pinMode(ENC_A, INPUT);
  digitalWrite(ENC_A, HIGH);
  pinMode(ENC_B, INPUT);
  digitalWrite(ENC_B, HIGH);
  Serial.begin (115200);
  Serial.println("Start");
}

void loop()
{
static uint16_t counter = 0;      
int8_t tmpdata;
  tmpdata = read_encoder();
  if( tmpdata ) {
    Serial.print("Counter Wert: ");
    Serial.println(counter, DEC);
    counter += tmpdata;
    counter=counter/4;
  }
}
/* Gibt Änderung im Encoderstatus zurück (-1,0,1) */
int8_t read_encoder()
{
  static int8_t enc_states[] = {0,-1,1,0,1,0,0,-1,-1,0,0,1,0,1,-1,0};
  static uint8_t old_AB = 0;
  old_AB <<= 2;                   //vorherigen Status merken
  old_AB |= ( ENC_PORT & 0x03 );  //aktuellen Status addieren
  return ( enc_states[( old_AB & 0x0f )]);
}
Du siehst auch diese Routine gibt ganze Zahlen als Ergebnis der Positionsänderung zurück. Wie soll es auch anders sein? Woher soll die Routine wissen ob du gerade eine ganze Zahl oder nur ein Zehntel ändern möchtest.
Was man sicher machen könnte,wäre jede Counter-Änderung als ein Zehntel zu bewerten und nach zehn Zehnteln (also Bewegungen in die gleiche Richtung) dann halt die gabze Zahl um eins erhöhen. Das ist aber reine Programmlogik nach Ausgabe des Counter.
Grüße Ricardo

Ok, danke. Aber wie kann ich die "Empfindlichkeit" des Encoders verändern, sodass per "Einrastung" auch nur eine Zahl/Impuls gezählt wird?

Gruß
Cray-1
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
10.08.2014, 19:09
Beitrag #16
RE: Encoder: Zahl mit einer Nachkommastelle erzeugen
Hallo Cray,
Zitat:Aber wie kann ich die "Empfindlichkeit" des Encoders verändern, sodass per "Einrastung" auch nur eine Zahl/Impuls gezählt wird?
Kannst du nicht. Die Dinger zählen halt in 4er-Schritten. Deshalb steht bei dem Codebeispiel die Zeile
Code:
counter=counter/4;
drin . Die rechnet den ausgegebenen Wert halt runter
Grüße RK

Nüchtern betrachtet...ist besoffen besser Big Grin
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
Antwort schreiben 


Möglicherweise verwandte Themen...
Thema: Verfasser Antworten: Ansichten: Letzter Beitrag
  Ausschaltverzögerung bei einer PV Heizung Hans_Maulwurf 27 736 29.11.2016 23:38
Letzter Beitrag: georg01
  Mehrstellige Zahl aus Keypad StB 7 229 23.11.2016 03:47
Letzter Beitrag: StB
  Zahl von SD-Card Modul einlesen und Var. zuweisen Nafetz 13 298 28.10.2016 10:12
Letzter Beitrag: hotsystems
  encoder clemens5555 17 393 20.10.2016 15:48
Letzter Beitrag: hotsystems
  Innenwiderstand einer Batterie (Rundzelle 1,5V) Einsteiger94 2 206 24.07.2016 11:42
Letzter Beitrag: SkobyMobil
  LCD Menue mit u8glib und Encoder stefanch 1 362 04.06.2016 21:02
Letzter Beitrag: hotsystems
  Brauche etwas Hilfe bei der Umsetzung einer Idee raspido 3 535 23.04.2016 10:26
Letzter Beitrag: rkuehle
  I2C Ansteuerung einer MSM3 (elv mp3 Box) Voreifel 2 315 09.04.2016 17:56
Letzter Beitrag: Voreifel
  Problem: SDFat - Das Ende einer Datei finden und Schleife beenden MartinK 4 490 01.04.2016 05:49
Letzter Beitrag: MartinK
  Problem: RFID code mit Inhalt einer Textdatei auf einer SD Karte vergleichen MartinK 6 514 29.03.2016 16:45
Letzter Beitrag: MartinK

Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste