diff options
Diffstat (limited to 'libraries/GSM/examples/MakeVoiceCall')
-rw-r--r-- | libraries/GSM/examples/MakeVoiceCall/MakeVoiceCall.ino | 116 |
1 files changed, 116 insertions, 0 deletions
diff --git a/libraries/GSM/examples/MakeVoiceCall/MakeVoiceCall.ino b/libraries/GSM/examples/MakeVoiceCall/MakeVoiceCall.ino new file mode 100644 index 0000000..64df44a --- /dev/null +++ b/libraries/GSM/examples/MakeVoiceCall/MakeVoiceCall.ino @@ -0,0 +1,116 @@ +/* + Make Voice Call + + This sketch, for the Arduino GSM shield, puts a voice call to + a remote phone number that you enter through the serial monitor. + To make it work, open the serial monitor, and when you see the + READY message, type a phone number. Make sure the serial monitor + is set to send a just newline when you press return. + + Circuit: + * GSM shield + * Voice circuit. + With no voice circuit the call will send nor receive any sound + + + created Mar 2012 + by Javier Zorzano + + This example is in the public domain. + */ + +// libraries +#include <GSM.h> + +// PIN Number +#define PINNUMBER "" + +// initialize the library instance +GSM gsmAccess; // include a 'true' parameter for debug enabled +GSMVoiceCall vcs; + +String remoteNumber = ""; // the number you will call +char charbuffer[20]; + +void setup() +{ + + // initialize serial communications and wait for port to open: + Serial.begin(9600); + while (!Serial) { + ; // wait for serial port to connect. Needed for Leonardo only + } + + Serial.println("Make Voice Call"); + + // connection state + boolean notConnected = true; + + // Start GSM shield + // If your SIM has PIN, pass it as a parameter of begin() in quotes + while(notConnected) + { + if(gsmAccess.begin(PINNUMBER)==GSM_READY) + notConnected = false; + else + { + Serial.println("Not connected"); + delay(1000); + } + } + + Serial.println("GSM initialized."); + Serial.println("Enter phone number to call."); + +} + +void loop() +{ + + // add any incoming characters to the String: + while (Serial.available() > 0) + { + char inChar = Serial.read(); + // if it's a newline, that means you should make the call: + if (inChar == '\n') + { + // make sure the phone number is not too long: + if (remoteNumber.length() < 20) + { + // let the user know you're calling: + Serial.print("Calling to : "); + Serial.println(remoteNumber); + Serial.println(); + + // Call the remote number + remoteNumber.toCharArray(charbuffer, 20); + + + // Check if the receiving end has picked up the call + if(vcs.voiceCall(charbuffer)) + { + Serial.println("Call Established. Enter line to end"); + // Wait for some input from the line + while(Serial.read()!='\n' && (vcs.getvoiceCallStatus()==TALKING)); + // And hang up + vcs.hangCall(); + } + Serial.println("Call Finished"); + remoteNumber=""; + Serial.println("Enter phone number to call."); + } + else + { + Serial.println("That's too long for a phone number. I'm forgetting it"); + remoteNumber = ""; + } + } + else + { + // add the latest character to the message to send: + if(inChar!='\r') + remoteNumber += inChar; + } + } +} + |