Skip to content

Instantly share code, notes, and snippets.

@skyrocknroll
Created September 3, 2011 06:17
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save skyrocknroll/1190708 to your computer and use it in GitHub Desktop.
Save skyrocknroll/1190708 to your computer and use it in GitHub Desktop.
GSM Code Text Message Read...
#include <string.h> //Used for string manipulations
#include <LiquidCrystal.h>
LiquidCrystal lcd(12, 11, 10, 5, 4, 3, 2); //LCD Initialization
int i,j = 0;
int startRead = 1;
char smsVal = 0;
char sms[64]={
'\0'};
long time = 0;
void setup(){
pinMode(13, OUTPUT);
pinMode(8,OUTPUT);
digitalWrite(13, HIGH); // turn backlight on. Replace 'HIGH' with 'LOW' to turn it off.
delay(2000);
Serial.begin(9600);
Serial3.begin(9600);
delay(1000);
Serial3.print("AT+CMGF=1\r\n");
delay(500);
Serial3.print("AT+CMGD=1\r\n");
lcd.begin(16,2); // columns, rows. use 16,2 for a 16x2 LCD, etc.
lcd.clear();
lcd.setCursor(0,0);
}
void loop()
{
//Serial.print("Loop Start");
readSms();
// lcdPrint();
// lcd.clear();
// lcd.setCursor(0,0);
// //delay(5000);
// lcd.print("Gonna Start ..");
delay(1000);
//lcd.clear();
//lcd.setCursor(0,0);
if(strlen(sms) > 0 )
{
timer();
}
else {
lcd.clear();
lcd.setCursor(0,0);
lcd.print("Turned Off!!");
lcd.setCursor(0,1);
lcd.print("Checking..");
delay(5000);
}
memset( sms, '\0', 64 );
}
void readSms() {
startRead =0;
Serial.flush();
Serial3.print("AT+CMGR=1\r\n");
delay(500);
//Serial.print("In Read SMS\r\n");
for(i=0; i< 256 ; i++)
{
if(Serial3.available() > 0)
{
smsVal = Serial3.read();
//lcd.print(smsVal);
// Serial.print(smsVal);
if(smsVal==34){
j=0;
memset( sms, '\0', 64 );
startRead = 1;
lcd.clear();
}
if(startRead == 1 && smsVal != 10 && smsVal != 13 ){
if(smsVal != 34 && smsVal != 79 && smsVal != 75)
{
sms[j]=smsVal;
lcd.setCursor(j,1);
lcd.print(sms[j]);
j++;
//delay(200);
}
}
}
}
Serial3.print("AT+CMGD=1\r\n");
delay(200);
Serial.flush();
}
void lcdPrint(){
int x = 0 ;
lcd.clear();
for(x = 0 ; x < strlen(sms) ; x++)
{
Serial.print("In lcdPrint\r\n");
lcd.setCursor(x,0);
lcd.print(sms[x],0);
}
lcd.print(" Seconds");
// delay(2000);
}
void timer() {
int delinSec =0;
time = atoi(sms);
for( delinSec = time ; delinSec > 0 ; delinSec--)
{
if(delinSec == time)
{
digitalWrite(8,HIGH);
}
lcd.clear();
lcd.setCursor(0,0);
lcd.print(delinSec);
lcd.print(" Secs");
delay(1000);
if(delinSec ==1)
digitalWrite(8,LOW);
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment