I am using Arduino uno and GSM SIM900A module for a simple electric switch board automation project. i am using IF statements for comparing the data received by GSM module. The GSM module is successfully configured for receiving sms.
When i send sms to my GSM, i am saving it in a int variable and then switching it to find a match through IF statements. The data sent by me is correctly displayed over the serial monitor but every time an incorrect IF statement is executed.
For eg:
If I am sending “1” as sms then the expected result would be Pin 12 high and “TV ON” displayed, but this doesn’t happen instead of that I see Pin 8 as high and “LIGHT ON” displayed.
Similarly whatever data i sent it will always display result any thing other than the correct/expected output.
Following is the code I m working on, please suggest what might be the problem and how i can fix it.
#include <SoftwareSerial.h>
//use TX to 9 and RX to 11
SoftwareSerial mySerial(9,11);
int ledTV = 12;
int ledFAN = 7;
int ledLIGHT = 8;
void setup()
{
mySerial.begin(9600); // Setting the baud rate of GSM Module
Serial.begin(9600); // Setting the baud rate of Serial Monitor (Arduino)
delay(1000);
pinMode(ledTV,OUTPUT);
pinMode(ledFAN,OUTPUT);
pinMode(ledLIGHT,OUTPUT);
ReceiveMessage();
}
void loop()
{
if (mySerial.available()>0)
Serial.write(mySerial.read());
storedata();
}
void ReceiveMessage()
{
mySerial.println("AT+CNMI=2,2,0,0,0"); // AT Command to receive a live SMS
delay(2000);
mySerial.println("GSM SUCCESSFULLY CONFIGURED FOR RECEIVING");
}
void storedata()
{
while(mySerial.available())
{
int digit = mySerial.read();
if(digit=='1')
{
digitalWrite(ledTV,1); // making Pin 12 high if data received is '1'
mySerial.println("TV ON"); // printing the same on the Serial monitor
}
if(digit=='2')
{
digitalWrite(ledFAN,1);
mySerial.println("FAN ON");
}
if(digit=='3')
{
digitalWrite(ledLIGHT,1);
mySerial.println("LIGHT ON");
}
if(digit=='4')
{
digitalWrite(ledTV,1);
digitalWrite(ledFAN,1);
digitalWrite(ledLIGHT,1);
mySerial.println("ALL ON");
}
if(digit=='5')
{
digitalWrite(ledTV,0);
digitalWrite(ledFAN,0);
digitalWrite(ledLIGHT,0);
mySerial.println("ALL OFF");
}
}
}