Go Down

Topic: GSM receive message and make action (Read 2739 times) previous topic - next topic

MostafaHamdy

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

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.

MostafaHamdy


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 

davidgoth

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: [Select]

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
{
}

Go Up
 


Please enter a valid email to subscribe

Confirm your email address

We need to confirm your email address.
To complete the subscription, please click the link in the email we just sent you.

Thank you for subscribing!

Arduino
via Egeo 16
Torino, 10131
Italy