Arduino, Frequenz mittels Encoder einstellen und ausgeben.

  • Hallo Kai,

    ich habe die Frequenz gemessen. Eingestellte z.B.12 Hz sind gemessen etwas schwankend 12,12 bis12,20 Hz.

    Mit dem Tone Sketch ist die Frequenz nicht schwankend und genau. Ich habe das noch einmal getestet. Hier wird die Frequenz aus dem seriellen Monitor gelesen. (Siehe Sketch in #1 unten)

    Danke für deine Hilfe.

    Ich habe versucht beide Sketche zu verbinden, kriege das aber nicht hin.


    Grüße, Franz

  • Folgender Code lässt es Blinken:



    Ist aber nicht besonders genau. Ein Frequenzgenerator ist das nicht ;). Aber so ungefähr geht es ...

  • Zitat

    Mir ist aufgefallen, dass in der Simulation der Taster an Pin 5 verdrahtet ist.

    Nee, ist er nicht. Der Kontrast zwischen „Kabel“ und Controller ist etwas schwach. Die Verbindung macht an Pin 5 einen Knick und ist an Pin 4 angeschlossen.

  • Jetzt muss nur noch die LED am Ausgang 13 mit der eingestellten Frequenz blinken.

    Mir ist aufgefallen, dass in der Simulation der Taster an Pin 5 verdrahtet ist.


    Danke für deinen Code. Diesen Expertencode muss ich versuchen zu verstehen.


    002.JPG

  • Ist doch schön, dass das so schon mal klappt.


    Du kannst Dir die Bibliothek auch von Github https://github.com/DoImant/Button_SL herunter laden (grüner Button -> ZIP File). Die Datei kannst Du dann in der Arduino IDE über Sketch -> Bibliothek einbinden -> .ZIP Bibliothek hinzufügen einbinden.

    Arduino-IDE-Bibliothek-Einbinden.png



    Anschließend kann der Import über das gleiche Menü (herunterscrollen) kontrolliert werden:

    Arduino-IDE-Bibliothek-Einbinden2.png


    Ein Klick auf den Eintrag fügt die Headerdatei gleich in den Quellcode ein.


    Die ganze Bibliothek so einzufügen hat den Vorteil, dass die Anweisungen in der IDE farblich hervorgehoben werden.


    Ich habe das Programm auf WokWi etwas erweitert. Eine LCD Anzeige eingebaut. Hier wird die Hertzzahl angezeigt. Wird sie durch den Tasterdruck bestätigt, läuft etwas los (durch die Ausgabe von Punkten in der Konsole angezeigt). Sobald der Encoder wieder gedreht wird, hört die Ausgabe auf.


    Vielleicht hilft Dir Das Prinzip ja, Dein Programm fertig zu programmieren.

  • Versuch:

    Ich habe im Verzeichnis Libraries einen Ordner Button angelegt und die Datei Button.hpp reinkopiert. Funktioniert. Den Code für Button.hpp habe ich aus dem Simulationsprogramm kopiert.

    Dein Code funktioniert sehr gut. Egal welche Richtung ich den Encoder drehe, er zeigt die Ziffern 0 bis 15 und mit dem Taster "Hertz übernommen".

  • Hallo Kai, danke für die Hilfe. Dein Code- Gerüst hilft mir sicher weiter. Zum Testen fehlt mir die Button.hpp Datei.

    Wo finde ich im Netz Button.hpp. Im Simulator- Link finde ich den Code. Wie wird eine .hpp Datei eingebunden? Das kenne ich noch nicht.

    Dann muss ich noch den Generator in deinem Sketch einbinden. Hoffentlich gelingt mir das. Ich werde es aber versuchen. Evtl. hast du ja noch ein paar Tipps.


    Grüße, Franz

  • Hier ist ein Gerüst, dass Dir vielleicht weiter hilft:



    Das mit den statischen Variablen in askEncoder() ist nicht schön, aber solange nur einer verwendet wird, geht das. Ist halt schnell gemacht so.

    Die Tasterabfrage wurde mit einer extra Bibliotheksfunktion erledigt, die ich mir mal geschrieben habe. Ist einfacher...


    Hier ist das Beispiel zum Ausprobieren: https://wokwi.com/projects/337005229743538772

  • Hallo Kai, das Encoder -Skript habe ich wieder gelöscht, weil ich die zwei Skripte nicht verbinden kann.

    Hier das Skript mit dem ich den Encoder getestet habe. Ich möchte mit dem Encoder einen Wert (Frequenzen), von 5 bis 15 (Hz), einstellen. Auf dem LCD Display anzeigen und mit dem Taster am Encoder übergeben. Mit Tone kann man so kleine Frequenzen erzeugen, wenn man eine Kleine Anpassung in der LIB macht. Der Ausgang Pin 13 soll mit der eingestellten Frequenz blinken. Hier wird bei meinem kleinen Projekt später ein Leistungstransistor angeschlossen.

    Das unten gelistete Skript funktioniert aber nur mit dem seriellen Monitor. In diesem kann ich z.B. 12 Hz eintragen und auf senden klicken. Die an Pin 13 angeschlossene LED blinkt dann mit 12 Hz. Diese werden auch auf dem Display angezeigt.

    Evtl. gibt es ja noch eine viel einfachere Lösung und ich denke wieder zu kompliziert. Ich, dass ich mich verständlich ausgedrückt habe.


  • Hallo,

    ich möchte eine Frequenz von 5-15Hz mittels Encoder(KY040) einstellen und per Taste vom Encoder übergeben. Pin 13 soll mit der eingelesenen Frequenz blinken. Der unten stehende Testcode Funktioniert über den seriellen Monitor. In diesem kann ich eine Frequenz eintragen und mit senden übergeben. Der Testcode für den Encoder KY-040 funzt ebenfalls.

    Das übertragen der eingestellten Frequenz am Encoder bekomme ich nicht hin. Evtl. kann mir einer helfen.

    Der unten stehende Code für die Erzeugung der Frequenz ist von Carlos Siles und wurde von mir angepasst. (Ergänzt) Die Frequenz wird auf einem LCD 16 x 2 Display angezeigt.

    Grüße, Franz