Moin Leute,
ich dache ach, dass wird nicht so schwer sein einfach mal einen Drehknopf (Rotary Encoder) per Arduino und VB.net über Serial Com auslesen. Leider wurde ich mal wieder eines besseren belehrt.
Im Prinzip funktioniert alles. Leider springt das ausgelesene Ergebnis zu häufig hin und her.
Wenn ich den Drehknopf (Encoder) in eine Richtung drehe soll der Wert immer um +1 steigen und wenn ich dann in die andere Richtung drehe soll er immer um -1 fallen. Die Summe lass ich mir zu Debbug-Zwecken einmal in einer RichTextBox und einmal im Graph anzeigen.
Da wo im Screenshot der rote Kasten ist sollte eigentlich "normal" weiter hochgezählt werden.
Meine Recherche im Internet führte mich zum "Debouncing from Rotary Encoder" leider haben alle Maßnahmen bei mir noch keinen wirkliche gutes Ergebnis erzeugt.
Ich möchte das bei drehen in eine Richtung nicht auf einmal "falsche" Sprünge erzeugt werden.
Das Bauteil habe ich wir im Datenblatt des Herstellers empfohlen angeschlossen:
Arduino Code habe ich mehrere ausprobiert // der einfachste ->
Spoiler anzeigen
Vb.Net Code um dann alles am PC anzuzeigen :
Spoiler anzeigen
Wo soll ich ansetzen? Danke für Vorschläge
ich dache ach, dass wird nicht so schwer sein einfach mal einen Drehknopf (Rotary Encoder) per Arduino und VB.net über Serial Com auslesen. Leider wurde ich mal wieder eines besseren belehrt.
Im Prinzip funktioniert alles. Leider springt das ausgelesene Ergebnis zu häufig hin und her.
Wenn ich den Drehknopf (Encoder) in eine Richtung drehe soll der Wert immer um +1 steigen und wenn ich dann in die andere Richtung drehe soll er immer um -1 fallen. Die Summe lass ich mir zu Debbug-Zwecken einmal in einer RichTextBox und einmal im Graph anzeigen.
Da wo im Screenshot der rote Kasten ist sollte eigentlich "normal" weiter hochgezählt werden.
Meine Recherche im Internet führte mich zum "Debouncing from Rotary Encoder" leider haben alle Maßnahmen bei mir noch keinen wirkliche gutes Ergebnis erzeugt.
Ich möchte das bei drehen in eine Richtung nicht auf einmal "falsche" Sprünge erzeugt werden.
Das Bauteil habe ich wir im Datenblatt des Herstellers empfohlen angeschlossen:
Arduino Code habe ich mehrere ausprobiert // der einfachste ->
Quellcode
- int messungPin1 = LOW;
- int messungPin1Alt = LOW;
- int encoderWert = 0;
- void setup() {
- pinMode(3, INPUT);
- pinMode(4, INPUT);
- Serial.begin(9600);
- }
- void loop() {
- messungPin1 = digitalRead(3);
- if ((messungPin1 == HIGH) && (messungPin1Alt == LOW)) {
- if (digitalRead(4) == HIGH) {
- encoderWert++;
- } else {
- encoderWert--;
- }
- Serial.print (encoderWert);
- }
- messungPin1Alt = messungPin1;
- }
Vb.Net Code um dann alles am PC anzuzeigen :
VB.NET-Quellcode
- Private Sub Timer1_Tick(sender As Object, e As EventArgs) Handles Timer1.Tick
- Try
- Dim i As Single = SerialPort1.ReadExisting
- LblPotentiometer.Text = "Encoder-Wert : " & i.ToString
- RichTextBox1.Text &= i.ToString & vbNewLine 'Richtext Feld
- Encoder.Series("Encoder").Points.AddY(i.ToString)
- If Encoder.Series(0).Points.Count = 20 Then
- Encoder.Series(0).Points.RemoveAt(0)
- End If
- Encoder.ChartAreas(0).AxisY.Maximum = 300
- Catch ex As Exception
- End Try
- End Sub
Wo soll ich ansetzen? Danke für Vorschläge
codewars.com Rank: 4 kyu