http://www.ebay.com/itm/170963005284
Product Demo
DTMF Shield for Arduino. The first shield for Arduino made by Copafrog.
Check out the various method that you can use it here:
Projects Showcase
for Remote AC Power Switching with Voice Response System / IVR
Phone Remote Control AC Power Switching
Universal Phone Remote Control AC Power Switching
http://copafrog.com/copafrog_dtmf_shield.pdf
int val1, val2, val3, val4;
int ledState1, ledState2, ledState3, ledState4;
// Variables used
int dtmf;
String dial;
void setup() {
int dtmf;
String dial;
void setup() {
Serial.begin(9600);
dial = "";
// Arduino Outputs
pinMode(13, OUTPUT);
pinMode(12, OUTPUT);
dial = "";
// Arduino Outputs
pinMode(13, OUTPUT);
pinMode(12, OUTPUT);
pinMode(11, OUTPUT);
pinMode(10, OUTPUT);
// MT8870DE Outputs to Arduino Inputs
pinMode(2, INPUT); // Significant bit 1, pin 11 on CM8870
pinMode(3, INPUT); // Significant bit 2, pin 12 on CM8870
pinMode(4, INPUT); // Significant bit 4, pin 13 on CM8870
pinMode(5, INPUT); // Significant bit 8, pin 14 on CM8870
pinMode(6, INPUT); // Significant STD
Serial.println("System Reset");
delay(20);
}
void loop() {
pinMode(2, INPUT); // Significant bit 1, pin 11 on CM8870
pinMode(3, INPUT); // Significant bit 2, pin 12 on CM8870
pinMode(4, INPUT); // Significant bit 4, pin 13 on CM8870
pinMode(5, INPUT); // Significant bit 8, pin 14 on CM8870
pinMode(6, INPUT); // Significant STD
Serial.println("System Reset");
delay(20);
}
void loop() {
while(digitalRead(6) == HIGH) {
delay(500);
Serial.println("System Start");
dtmf = 0;
if (digitalRead(2) == HIGH) dtmf = dtmf + 1;
if (digitalRead(3) == HIGH) dtmf = dtmf + 2;
if (digitalRead(4) == HIGH) dtmf = dtmf + 4;
if (digitalRead(5) == HIGH) dtmf = dtmf + 8;
if (dtmf == 1) dial = "1";
if (dtmf == 2) dial = "2";
if (dtmf == 3) dial = "3";
if (dtmf == 4) dial = "4";
if (dtmf == 5) dial = "5";
if (dtmf == 6) dial = "6";
if (dtmf == 7) dial = "7";
if (dtmf == 8) dial = "8";
if (dtmf == 9) dial = "9";
if (dtmf == 10) dial = "0";
if (dtmf == 11) dial = "*";
if (dtmf == 12) dial = "#";
Serial.println(dial); // The digit contained in DTMF data
// Handle Digit 1
if (dial == "1") {
val1 = digitalRead(13);
delay(500);
Serial.println("System Start");
dtmf = 0;
if (digitalRead(2) == HIGH) dtmf = dtmf + 1;
if (digitalRead(3) == HIGH) dtmf = dtmf + 2;
if (digitalRead(4) == HIGH) dtmf = dtmf + 4;
if (digitalRead(5) == HIGH) dtmf = dtmf + 8;
if (dtmf == 1) dial = "1";
if (dtmf == 2) dial = "2";
if (dtmf == 3) dial = "3";
if (dtmf == 4) dial = "4";
if (dtmf == 5) dial = "5";
if (dtmf == 6) dial = "6";
if (dtmf == 7) dial = "7";
if (dtmf == 8) dial = "8";
if (dtmf == 9) dial = "9";
if (dtmf == 10) dial = "0";
if (dtmf == 11) dial = "*";
if (dtmf == 12) dial = "#";
Serial.println(dial); // The digit contained in DTMF data
// Handle Digit 1
if (dial == "1") {
val1 = digitalRead(13);
if(val1==0) {
ledState1=1;}
else {
ledState1=0;
}
//Serial.println(val1);
//Serial.println(ledState1);
} // Finished handling Digit 1
// Handle Digit 2
if (dial == "2") {
val2 = digitalRead(12);
ledState1=1;}
else {
ledState1=0;
}
//Serial.println(val1);
//Serial.println(ledState1);
} // Finished handling Digit 1
// Handle Digit 2
if (dial == "2") {
val2 = digitalRead(12);
if(val2==0) {
ledState2=1;}
else {
ledState2=0;
}
//Serial.println(val1);
//Serial.println(ledState1);
} // Finished handling Digit 2
// Handle Digit 3
if (dial == "3") {
val3 = digitalRead(11);
ledState2=1;}
else {
ledState2=0;
}
//Serial.println(val1);
//Serial.println(ledState1);
} // Finished handling Digit 2
// Handle Digit 3
if (dial == "3") {
val3 = digitalRead(11);
if(val3==0) {
ledState3=1;}
else {
ledState3=0;
}
//Serial.println(val1);
//Serial.println(ledState1);
} // Finished handling Digit 3
// Handle Digit 4
if (dial == "4") {
val4 = digitalRead(10);
ledState3=1;}
else {
ledState3=0;
}
//Serial.println(val1);
//Serial.println(ledState1);
} // Finished handling Digit 3
// Handle Digit 4
if (dial == "4") {
val4 = digitalRead(10);
if(val4==0) {
ledState4=1;}
else {
ledState4=0;
}
//Serial.println(val1);
//Serial.println(ledState1);
} // Finished handling Digit 4
}
digitalWrite(13, ledState1); // sets the LED to the button's value
digitalWrite(12, ledState2); // sets the LED to the button's value
digitalWrite(11, ledState3); // sets the LED to the button's value
digitalWrite(10, ledState4); // sets the LED to the button's value
}
ledState4=1;}
else {
ledState4=0;
}
//Serial.println(val1);
//Serial.println(ledState1);
} // Finished handling Digit 4
}
digitalWrite(13, ledState1); // sets the LED to the button's value
digitalWrite(12, ledState2); // sets the LED to the button's value
digitalWrite(11, ledState3); // sets the LED to the button's value
digitalWrite(10, ledState4); // sets the LED to the button's value
}