7 DTMF keypad frequencies (with sound clips)
8 1209 Hz 1336 Hz 1477 Hz 1633 Hz
14 DTMF event frequencies
15 Event Low frequency High frequency
16 Busy signal 480 Hz 620 Hz
17 Dial tone 350 Hz 440 Hz
18 Ringback tone (US) 440 Hz 480 Hz
23 void dtfm_tone(char outpin, float low, float high) {
26 long pos, startmillis = millis();
27 while((pos = millis()-startmillis) <= duration) {
29 if( sin((pos*low)/1000*(2*PI)) > 0) pin = true;
30 if( sin((pos*high)/1000*(2*PI)) > 0) pin = true;
32 if(pin) digitalWrite(outpin, HIGH); else digitalWrite(outpin, LOW);
36 int dtfm_key(char outpin, char key) {
38 case '1': dtfm_tone(outpin, 697, 1209); break;
39 case '2': dtfm_tone(outpin, 697, 1336); break;
40 case '3': dtfm_tone(outpin, 697, 1477); break;
42 case '4': dtfm_tone(outpin, 770, 1209); break;
43 case '5': dtfm_tone(outpin, 770, 1336); break;
44 case '6': dtfm_tone(outpin, 770, 1477); break;
46 case '7': dtfm_tone(outpin, 852, 1209); break;
47 case '8': dtfm_tone(outpin, 852, 1336); break;
48 case '9': dtfm_tone(outpin, 852, 1477); break;
50 case '*': dtfm_tone(outpin, 941, 1209); break;
51 case '0': dtfm_tone(outpin, 941, 1336); break;
52 case '#': dtfm_tone(outpin, 941, 1477); break;
59 void dtfm_dial(char outpin, char *keys) {
60 for(char i=0;keys[i]!=0;i++) { dtfm_key(outpin, keys[i]); delay(100); }
63 void setup() // run once, when the sketch starts
65 pinMode(dtfmpin, OUTPUT); // sets the digital pin as output
66 //dtfm_dial(dtfmpin, "739136794");
67 dtfm_tone(dtfmpin, 1, 10);
70 void loop() // run over and over again