Arduino DTMF decoder und encoder

Hallo,

für ein kleines Projekt mit einem Arduino Duemilanove oder UNO möchte ich DTMF Töne sowohl decodieren als auch erzeugen. Hat jemand einen Tipp wie ich das schnell und einfach machen kann? Gefunden habe ich schon das DTMF Shield mit dem MT8870, aber das ist leider nur ein decoder. MT8880 ist wohl komplett decode und encode - nur konnte ich damit nichts finden für Arduino und das IC sieht reichlich kompliziert aus. Oder gibt es eine andere Lösung die ich auf die schnelle umsetzen kann...

Danke im Voraus,
Christian

Encoder ist ja leicht, dazu musst Du nur Töne generieren. Dazu gibt es eine Library.

Decoder ist schwieriger. Ich würde es per FFT probieren.

Zum Decodieren wirft Google mir "Goertzel Algorithmus" aus, da man ja nur 8 verschiedene und feststehende Frequenzen decodieren braucht, während FFT auf die Analyse von vielen verschiedenen, unbekannten Frequenzen optimiert ist:

Aber ob es dazu was fertiges für Arduino gibt, das man sich einfach downloaden kann, mal kurz gegoogelt ...

Kann man auch machen. Mir würde FFT leichter von der Hand gehen. Wie immer eine Abwägung was wichtiger ist: Entwicklungszeit vs. Performance.

Hallo,

hmm, zum generieren habe ich jetzt die Tone Library getestet, geht so weit gut - aber nicht mit einer aktuellen Version von Arduino. Also mit 0023 geht das einwandfrei, mit 1.0.2 aber nicht mehr:
http://code.google.com/p/rogue-code/wiki/ToneLibraryDocumentation#Arduino_Core_Version

Im Prinzip ist das hier beschrieben, aber eine modifizierte Version der IDE gefällt mir genau so wenig wie das festhalten an einer mitlerweile uralten 0023 Version.

Hat jemand eine Idee wie ich das auf einer aktuellen Version zum Laufen bekomme? Oder eine aktuelle Alternative zu dieser Library??

Zum decodieren möchte ich aber lieber Hardware verwenden. Hat schon jemand mit dem MT8870 / Dtmf Shield probiert?

Christian

elektron_:
Hat jemand eine Idee wie ich das auf einer aktuellen Version zum Laufen bekomme?

Datei Tone.cpp

// #include <wiring.h>
// #include <pins_arduino.h>
#include <arduino.h>

Danke!!!

Der Tipp auf die Tone.cpp ist ein Volltreffer. Läuft jetzt einwandfrei auf 1.02.

Christian