GSM receive message and make action

please i need when sent message like on make led HIGH and when sent low make led LOW

#include <GSM.h>

// PIN Number for the SIM
#define PINNUMBER ""

// initialize the library instances
GSM gsmAccess;
GSM_SMS sms;

// Array to hold the number a SMS is retreived from
char senderNumber[20];  
const int led =  13;
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("SMS Messages Receiver");
    
  // connection state
  boolean notConnected = true;
  
  // Start GSM connection
  while(notConnected)
  {
    if(gsmAccess.begin(PINNUMBER)==GSM_READY)
      notConnected = false;
    else
    {
      Serial.println("Not connected");
      delay(1000);
    }
  }
  
  Serial.println("GSM initialized");
  Serial.println("Waiting for messages");
pinMode(led,OUTPUT);
digitalWrite(led,LOW);
}

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);
    Serial.println(senderNumber);

    // An example of message disposal    
    // Any messages starting with # should be discarded
    if(sms.peek()=='#')
    {
      Serial.println("Discarded SMS");
      sms.flush();
    }
    
    // Read message bytes and print them
    while(c=sms.read())
      Serial.print(c);
      if(c== 1)
      {digitalWrite(led,HIGH);
      }
      if(c== 0)
      {digitalWrite(led,LOW);
      }
    Serial.println("\nEND OF MESSAGE");
    
    // Delete message from modem memory
    sms.flush();
    Serial.println("MESSAGE DELETED");
  }

  delay(1000);

}

i receive message without make action for led ineed to know how check condition when receive message

// Read message bytes and print them
    while(c=sms.read())
      Serial.print(c);
      if(c== 1)
      {digitalWrite(led,HIGH);
      }
      if(c== 0)
      {digitalWrite(led,LOW);
      }
    Serial.println("\nEND OF MESSAGE");
    
    // Delete message from modem memory
    sms.flush();
    Serial.println("MESSAGE DELETED");
  }

how check c if message sent 1 for HIGH and 0 for LOW

i use this shield

thanks :smiley: :smiley:

Hi:

You are receiving ascii characters. So, if you are sending a SMS with the text:
1

or with the text

0

you have to compare it like this:
if(c== '1')
{digitalWrite(led,HIGH);
}
if(c== '0')
{digitalWrite(led,LOW);
}

Good luck, and please tell us how are you doing.

zorzano:
Hi:

You are receiving ascii characters. So, if you are sending a SMS with the text:
1

or with the text

0

you have to compare it like this:
if(c== '1')
{digitalWrite(led,HIGH);
}
if(c== '0')
{digitalWrite(led,LOW);
}

Good luck, and please tell us how are you doing.

this code is work good but i need to send 'on' or 'off' to make action

You can detect 'on' or 'off' words in a SMS. First, you must concatenate each character received in a String object, after, use compareTo function.

char c;
String received = "";

while(c=sms.read())
  received += c;

if(received.compareTo("on") == 0)
{
  digitalWrite(YOURPIN, HIGH);
}
else if(received.compareTo("off") == 0)
{
  digitalWrite(YOURPIN, LOW);
}
else
{
}