Control servo motor with with gsm shield

hi guys i am using this sketch to to position servo motor to 180 degrees once the GSM shield receives ‘1’ from the sms however the motor keeps rotating and behaving weirdly once i upload this program any help would be appreciated

SMS receiver

This sketch, for the Arduino GSM shield, waits for a SMS message
and displays it through the Serial port.


  • GSM shield attached to and Arduino
  • SIM card that can receive SMS messages

created 25 Feb 2012
by Javier Zorzano / TD

This example is in the public domain.


// include the GSM library
#include <GSM.h>
#include <Servo.h>

// PIN Number for the SIM
#define PINNUMBER “”

// initialize the library instances
GSM gsmAccess;
GSM_SMS sms;
// create servo object to control a servo
Servo myservo ;

// Array to hold the number a SMS is retreived from
char senderNumber[20];
void setup()
// initialize serial communications and wait for port to open:
while (!Serial) {
; // wait for serial port to connect. Needed for Leonardo only

Serial.println(“SMS Messages Receiver”);

// connection state
boolean notConnected = true;

// Start GSM connection
while (notConnected)
if (gsmAccess.begin(PINNUMBER) == GSM_READY)
notConnected = false;
Serial.println(“Not connected”);

Serial.println(“GSM initialized”);
Serial.println(“Waiting for messages”);

void loop()
char c;

// If there are any SMSs available()
if (sms.available())
Serial.println(“Message received from:”);

// Get remote number
sms.remoteNumber(senderNumber, 20);

// An example of message disposal
// Any messages starting with # should be discarded
if (sms.peek() == ‘#’)
Serial.println(“Discarded SMS”);

// Read message bytes and print them
while (c =
if(c == ‘1’)

Serial.println("\nEND OF MESSAGE");

// Delete message from modem memory
Serial.println(“MESSAGE DELETED”);



Firstly you only ever write 180 so a normal servo will drive past the endpoint and
jam consuming lots of current, then overheat. You have no call to move it back

Firstly search for one of the servo Sweep examples and test your servo is working,
that it isn't a continuous-rotation servo, and find the range of values it responds to
without hitting the endstops. Servos do not go from 0 to 180 (well maybe
a handful do, but most have 120 to 150 degrees of travel).

Attempting to move a servo past its physical endstop for long periods will cause
lots of power to dissipate continuously, small plastic servos are easily cooked by
attempting this.