Hi,
in einem Projekt soll ein LED-Wechselblinker realisiert werden, wobei die Helligkeit einer LED verstellt werden soll.
Zwei LEDs blinken also abwechselnd, mindestens eine wird per PWM angesteuert.
Erstes Problem: Wenn zu dem Blinken noch die Helligkeit eingestellt werden soll, wird das Blinken unsauber bei höheren Frequenzen (~20 Hz). Eigentlich sollte man bei diesen Frequenzen das Blinken kaum mehr wahrnehmen können, die LEDs (bzw. mindestens eine) flackern jedoch unschön. Schließt man einen Piezo Buzzer statt LED an, hört man auch deutlich ein "wah-wah".
Lasse ich beide LEDs mit maximaler Helligkeit wechselblinken, ist alles einwandfrei sauber.
Kommt es bei solchen (ich denke für den Arduino eher geringen) Frequenzen schon zu Schwebungs-Erscheinungen? Kann man diese ausbügeln?
Der Effekt tritt sowohl bei delay basierten Blinken als auch per Millis auf.
Zweites Problem: [Erledigt] Ein Drehencoder mit Drehknopf soll eingesetzt werden, um Werte zu verstellen. Wir haben einen STEC16B01 Inkrementalgeber von Alps mit 24 Impulsen/U.
Sämtlicher Beispielcode, den ich bisher getestet habe, um mit dem Encoder primitiv vorwärts oder rückwärts zu zählen und das Ergebnis anzuzeigen, scheitert darin, dass der Encoder nur in eine Richtung zählt. Ich kann auch Pin A und B vertauschen, es geht nur nach oben. Beim Rückwärts drehen springt der Wert dann nur immer zwischen zwei Zahlen hin und her, bleibt aber im Endeffekt gleich, etwa: 1, 2, 3, 4, 5, 6, 5, 6, 5, 6, 5, 6, ....
Getestet mit Codes von hier:
https://www.pjrc.com/teensy/td_libs_Encoder.html
http://arduinoprx.de/?page=4&obj=35
Der Encoder wird selbst mit den internen PullUp-Widerständen betrieben und ist noch nicht debounced, hat also hardware seitig keine Widerstände oder Kondensatoren verlötet. Liegt hier der Hund begraben? Warum funktioniert dann eine Drehrichtung einwandfrei? Es ist auch egal, ob schnell oder extrem langsam gedreht wird.
Danke und viele Grüße,
Stephan