Pages: [1]   Go Down
Author Topic: GSM receive message and make action  (Read 2317 times)
0 Members and 1 Guest are viewing this topic.
Offline Offline
Jr. Member
**
Karma: 0
Posts: 88
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

please i need when sent message like on make led HIGH and when sent low make led LOW
Code:
#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

Code:
// 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
http://arduino.cc/en/Main/ArduinoGSMShield


thanks smiley-grin smiley-grin
Logged

Offline Offline
Newbie
*
Karma: 0
Posts: 20
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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.
Logged

Offline Offline
Jr. Member
**
Karma: 0
Posts: 88
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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 
Logged

Madrid (Spain)
Offline Offline
Full Member
***
Karma: 0
Posts: 137
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

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.

Code:
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
{
}
Logged

Pages: [1]   Go Up
Jump to: