Hallo, bin ganz neu hier und grüße erst einmal die ganze Gemeinde :-) Bin auch erst zwei Tage Besitzer meines Arduino Uno, deswegen bitte evtl. dumme Fragen zu entschuldigen ;-) Zum Problem: Wenn ich mit dem Befehl "tone" eine Rechteckfrequenz ausgebe, dann hört sich das auf meinem Piezo bis ca. 5 kHz ganz normal an. Gehe ich allerdings mit der Frequenz weiter hoch, so ab ca. 10 kHz, dann wird neben der ursprünglichen Frequenz ein deutliches gleichmäßiges "Knattern" hörbar (im Ultraschallbereich nur noch dieses, mit dem Ohr hörbar). Evtl. ist dieses auch bei der niedrigen Frequenz da, nur nicht durch den relativ lauten Ton der niedrigen Frequenz zu hören. Der Testcode mit 10 kHz. unsigned int frequenz=10000; void setup() { tone(10,frequenz); } void loop() { } Weiß jemand, wo dieses herkommt bzw. wie man dieses umgehen kann, da ich nur die eigntl. Frequenz haben will (im Bereich von 10 bis 30 kHz)? Gibt es eine andere Möglichkeit, eine Frequenz in diesem Bereich auszugeben ? Bin um jeden Tipp dankbar. Viele Grüße und einen schönen Feiertag Fred
:
Verschoben durch User
Das wird nie ein sauberer Ton da das Arduino Framework per Timer Interrupt eine Millisekunden Zeitbasis erzeugt. Dein Ton wird also dauernd unterbrochen, was sich in einem zweiten Ton bemerkbar macht. Wenn ohne Störung gewünscht dann bei Arduino beschweren (wird nix helfen) oder selber von Grund auf programmieren (z.B. void setup() und void loop() weglassen, dann gibt's auch kein Framework).
Hallo Beo Bachta, vielen Dank für die Info. Ich habe mir schon in der Form etwas gedacht. Da wie gesagt, ein blutiger Anfänger, sind das so die ersten Erfahrungen. Das "richtige" Programmieren wäre dann in Maschinensprache (C oder so)? Liese sich das mit der Software "Bascom" bewerkstelligen? Kennst Du eine Adresse, bei dem man sich (für einen Anfänger) in diese Sprache einarbeiten kann? Ich weiß, dass das mit Sicherheit sehr umfangreich wird, aber wenn man nicht beginnt, kommt man auch nicht ans Ziel ;-) Gruß Fred
Hallo, Beo Bachta schrieb: > Wenn ohne Störung gewünscht dann bei Arduino beschweren > (wird nix helfen) oder selber von Grund auf programmieren > (z.B. void setup() und void loop() weglassen, dann gibt's > auch kein Framework). geht prinzipiell auch innerhalb der Arduino-Geschichte. Freien Timer suchen, der CTC kann und den Wunschgemäß programmieren. Tone() hat wohl eher das Problem, daß sie es auf allen Pins irgendwie machen wollen. Gruß aus Berlin Michael
Um beliebige Pins zu benutzen erfolgt das Pin toggle in Software. Da der AVR keine Interruptlevel kann, gibt es zwangsläufig Jitter durch andere Interrupts. Die Lösung ist, man nimmt einen der Pins, die mit einem Compareregister verknüpft sind. Dann geht das Toggle in Hardware, d.h. ohne Interrupt. Wie das geht, steht im Kapitel Timer im Datenblatt des jeweiligen AVRs.
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.