Drehgeber mit Thorstens Platine

Hallo zusammen,
da Samoth´s Lösung leider für mich nichts ist und ich Thorstens Platine verwenden will, habe ich für mich folgende Lösung gefunden:

Der Drehgeber (KY-040) ist auf DI5 und DI6 (CLK und Data) angeschlossen.
Zusätzlich müssen noch die Biblotheken “ClickEncoder” und “TimerOne” installiert werden.
Alle 1000ms wird der Status des Drehgebers ausgewertet. Der Wert zählt ohne Prellen sauber hoch bzw. runter. Start/Stopp wird über den integrierten Taster des Drehgebers gemacht.
Die Shortcuts funktionieren auch (gestestet habe ich nur den Start und Vor)

Den Sketch hab ich bei Github hochgeladen.

Gruß Ullergr

Edit: Ich habe mir gerade überlegt, alle 1000ms kann es gar nicht sein. Das wären ja alle Sekunde.
Den Drehgeber kann man schön flott drehen und er zählt ohne Probleme mit. Bei einen sehr starken ruck fehlen ein paar Signale wird aber trotztem lauter oder leider. Das finde ich aber gut. Ich will nicht dass meine Kinder von „Min nach Max“ in einem Ruck drehen können.

5 „Gefällt mir“

Danke, ich werde mit das mal ansehen. Ich hatte schon abgeschrieben, die Platine verwenden zu können, da ich unbedingt einen Drehregler einbauen möchte. Wenn beides zusammen geht, ist es ja umso besser.

Hallo Ullergr,

in welcher Zeile finde den Code, welcher das Verhalten beim Press auf den Impulsgeber regelt? Du hattest was von Start/Stopp geschrieben. Im Code finde ich nur die neue Reglung der Lautstärke 586-608.

Danke Dir und Grüße

Super Sache, ich schau mir das auch mal an.

In einem Kommentar erwähnst du Pololu und Mosfets. Sind außer dem Drehgeber und dem Standardtonuino noch weitere Bauteile nötig?

Die großflächigen Anpassungen machen ein diff leider schwierig. Reichen die Codestellen bzgl. Clickencoder, timer1 und die timerIsr()? Du hast einige zusätzliche delays im Code verteilt, sind diese ebenfalls nötig?

Kann es sein, das du beim Konstruktor vom Encoder den Button-Pin vergessen hast, oder ist STEPS irritierend benannt? Wenn ich dich Doku richtig gelesen habe, ist Parameter 3 der Button und Parameter 4 sind die Steps.

Ist auf jedenfalls eine spannende Alternative!

Hallo Michel,
den Drucktaster des Encoders anstelle des “orginalen” Tasters anschließen.
Die Bibliothek Clickencoder könnte es aber auch. Aber da es ja schon im orginalen vorgesehen ist habe ich dieses genommen.
Gruß Uli

Hallo derda17,
man benötigt keine anderen Bauteile nur den Encoder selbst. Es prellt nichts.
Hab ich was von Pololu und Mosfet geschrieben? Kann mich grad nicht erinnern. Komme aber gar nicht richtig dazu mich um das ganze zu kümmern, da im privaten Umfeld sehr viel los ist. Das ganze geht nebenher. Zudem bin ich nicht der Held im Programmieren.
Ich habe das Beispiel von Clickencoder genommen, den Taster rausgelöscht und so angepasst dass es funktioniert. Es gibt bestimmt noch Sachen die man verbessern bzw. kürzen kann.
Zusätzliche Delays hab ich jetzt nicht reingemacht.
Falls du was optimieren kannst /willst, fühle dich frei.
Gruß Uli

Prima, dann habe ich alle notwendigen Teile da. Mal sehen, ob ich im Laufe der Woche Zeit finde, das auszuprobieren.

Hallo Ullergr,

danke für die schnelle Information.
Nochmal kurz zu deiner Belegung.
Ist das so richtig?
Platine = KY040
D5 = CLK
D6 = Data
A0 = SW (und den alten Pausebutton damit ersetzt)
GRD = GRD
+5V = +

Viele Grüße und auf das der Stress bei dir weniger wird. (-:

Ich muss zu meiner Schande gestehen, dass ich deine Änderungen mit dem Tonuino-Master verglichen habe, nicht mit dem DEV-Branch im Tonuino-git. Da sind die Änderungen auch wesentlich übersichtlicher und eindeutiger.

Ja das passt so.
Falls die Drehrichtung falsch ist drehst du einfach die CLK mit DATA.
Gruß Uli

Hallo,
kann mir jemand sagen wie ich die ClickEncoder Bibo einbinde?

Nutze Arduino 1.8.8
Dort unter Werkzeuge → Bibliotheken Verwalten
Typ: Alle Thema: Alle
Suche nach ClickEncoder

Das ergibt keine Treffer.
Hat jemand eine Idee?

Manuell einbinden war die Lösung…

Moin @Ullergr,

vielen Dank für deine Inspiration. Ich habe schon einen Fehlschlag mit einer Encoder-Lib integrieren in den TonUINO Code hinter mir.

Also habe ich mir einmal deinen Code aus GitHub gecloned und versucht zu bauen.


Wie man sieht hat das nicht funktioniert … Vermutlich passt die Version der Bibliothek DFPlayer_Mini_Mp3_by_Makuna nicht mehr.

So schnell gebe ich nicht auf. :slight_smile: Ich habe den Code also mit der aktuellen „DEV“ Branch ge"merged", gebaut, auf meinem Uno getestet und dir das als Pull Request eingestellt:

Danke nochmal für die Idee den ClickEncoder zu nehmen, der hat nicht die Interupt Probleme wie der RotationEncoder

cheers, bye
Marco(MetalMonkey)

1 „Gefällt mir“

Könnte von euch nochmal jemand übersichtlich schreiben, wie ich das Poti genau in Thorsten Platine integrieren kann, und welche Codezeilen ich ergänzen muss?
Danke

Hallo zusammen,

ich finde die Lösung mit einem ClickEncoder zur Lautstärke-Anpassung auch sehr reizvoll. Allerdings komme ich genauso wie Marco(MetalMonkey) nicht weiter.
Ich habe de Drehgeber wie folgt angeschlossen:
D5 = CLK
D6 = Data
A0 = SW (und den alten Pausebutton damit ersetzt)
GRD = GRD
+5V = +

Zusätzlich habe ich die Bibliothek „TimerOne“ installiert. Bei der Bibliothek „ClickEncoder“ bin ich auf das gleiche Problem gestoßen, wie Michel. Habe dann im Internet ein wenig gesucht und folgende Bibliothek (Link) manuell in das Verzeichnis „C:\Users\David\Documents\Arduino\libraries“ kopiert. War das richtig so? Habe ich die richtige „ClickEncoder“-Bib verwendet?

Beim Kompilieren der von Ullergr bereitgestellten tonuino.ino https://github.com/Ullergr/TonUINO_KY040/blob/master/Tonuino.ino erscheint dann aber folgende Fehlermeldung beim Kompilieren:

Hat jemand eine Idee, wie ich weiterkommen kann? Bin für jeden Hinweis dankbar :slight_smile:
Viele Grüße,
David

Die Lösung steht im Post von MetalMonkey. Sein Request wurde aber bisher nicht angenommen. Vielleicht kann er seinen Sketch direkt zum Download anbieten? Man kommt zwar per Copy & Paste auch so ran, aber wäre sicher schöner und einfacher.

1 „Gefällt mir“

Vielen Dank - per copy&paste aus MetalMonkeys GitHub funktioniert’s nun auch bei mir :slight_smile:

1 „Gefällt mir“

Erst einmal vielen Dank für den Code.
ich konnte ihn erfolgreich einbinden, mit folgender Bibliothek

mir ist auch aufgefallen, das der KY-040 Encoder recht empfindlich reagiert und bei jeder Stellung den Wert um 2-3 erhöht.
Das hat zur Folge, das aus den 30 möglichen Lautstärkestufen, plötzlich 10 werden.
Deshalb hab ich den Code im „void loop ()“ wie folgt angepsst:

 encPos += encoder.getValue();
    
    if ((encPos >= oldEncPos +2) || (encPos <= oldEncPos -2))  {
      if (encPos >= oldEncPos +2) {
        
        encPos = encPos -1;
        oldEncPos = encPos;
      }
      else if(encPos <= oldEncPos -2){
        
        encPos = encPos +1;
        oldEncPos = encPos;
      }      
      
      if (encPos > (mySettings.maxVolume)) {
        volume  = mySettings.maxVolume;
        encPos  = mySettings.maxVolume;

      }
      else if (encPos < (mySettings.minVolume)) {
        volume  = mySettings.minVolume;
        encPos  = mySettings.minVolume;

      }
      else   {
        
        volume = encPos;

      }
      mp3.setVolume(volume);
      #ifdef DEBUG
      Serial.println(volume);
      #endif
    }

Jetzt bekommt man so gut wie mit jeder Stellung am Encoder eine Lautstärke Stufenänderung hin.

Ich such mir gerade einen Wolf und finde keinen passenden Drehknkopf für die D Achse des KY-040
Hat mir jemand eine Quelle für einen schönen? Die meisten sind für gerädelte Achsen.