Habe auf dieser Webseite gelesen, dass die PWM-Pins
zwei unterschiedliche Frequenzen haben.
https://www.hackerspace-ffm.de/wiki/index.php?title=ArduinoVariablePWMFrequenz
Ist bei Arduino festgelegt welcher PWM Pin 490Hz bzw 980Hz hat?
Momentan habe ich den Piep an Pin11 und der hat 490Hz.
Natürlich wären mir 980Hz lieber, weil besser hörbar.
LG
old.
"Die PWM-Ausgaben auf Pins 5 und 6 werden höhere Zyklen als erwartet
haben. Dies passiert, weil die Funktionen millis() und delay() den
gleichen internen Timer nutzen, um diese PWM-Ausgaben zu generieren. In
kleinen Zyklen (z.B. 0 bis 10) ist der Effekt am stärksten und kann dazu
führen, dass der Wert 0 die Spannung auf Pin 5 und 6 nicht komplett
wegnimmt, d.h. dass z.B. bei Wert 0 die LED trotzdem leuchtet."
Mit "Zyklen" ist was gemeint?
Bisher ist es noch nicht vorgekommen, das die Motoren bei "0"
noch irgendwie bestromt werden.
LG
old.
Aus der W. schrieb:> Natürlich wären mir 980Hz lieber, weil besser hörbar.
Was hindert dich daran, die PWM-Frequenz zu erhöhen. delay() und
millis() hängen am Timer0. Falls dein Arduino mehr Timer hat, steht es
dir frei, einen davon zu verwenden, ohne o.g. Funktionen zu
beeinflussen. Vielleicht müsstest du dich von der Idee verabschieden,
dies über die in Arduino bereit gestellte Funktion analogwrite() zu
erreichen und selber eine geeignete Funktion schreiben, so wie es der
von dir verlinkte Artikel beschreibt. Was dein µC an Hardware zur
Verfügung hat, verrät dir dessen Datenblatt.
Wolfgang schrieb:> Was hindert dich daran, die PWM-Frequenz zu erhöhen.
Bin ich zu dumm für. Ich hatte versucht über micros()
mit einem Software-Multivibrator 1KHz in der void loop
zu erzeugen. Klappte auch gut, bis die loop zu umfangreich
wurde. Deshalb habe ich dafür analogWrite(piep,128)
verwendet. Funktioniert so und piept halt mit 490Hz,
hört man noch laut genug.
LG
old.
Vielen Dank !!!
Von der Funktion wusste ich gar nichts.
Helmut H. schrieb:> Das belegt Timer 2, d.h. PWM auf Pins 3 und 11 kann nicht verwendet> werden.
Wenn es piept ist die PWM=0. Daher scheint das zu funktionieren.
Ich habe mal testweise einen Dauerton programmiert.
(Der wird dann genau so verwurschtelt wie mein micros()-Piep
in der loop).
Die PWM-Funktion auf 5 und 6 bleibt erhalten.
Der Ardino fährt Tischbeine hoch und runter. Der Piep
kommt nur wenn er nicht fährt. Also kein Problem.
Jetzt könnte ich den Funktionen auch noch unterschiedliche
Tonhöhen zuordnen. Bin Entzückt.
LG
old.
Helmut H. schrieb:> https://www.arduino.cc/reference/de/language/functions/advanced-io/tone/>> Das belegt Timer 2, d.h. PWM auf Pins 3 und 11 kann nicht verwendet> werden.
Ich sehe gerade, ich verwende die Pins 5,6 und 9 für PWM.
Deshalb klappt das bei mir.
Das sich der Piep nicht gut anhört, liegt daran,
dass nur Nadelimpulse raus kommen.
>> Generiert einen Ton mit der angegebenen Frequenz>> (und 50% duty cycle) auf einem Pin.
Kann ich nicht bestätigen. Weder auf Pin 11 noch auf Pin7.
Deklaration als OUTPUT spielt keine Rolle.
Ich gehe erstmal wieder auf analogWrite(piep,128).
LG
old.