New Text Document
New Text Document
New Text Document
clear();
lcd.print(sms.substring(16,32));
lcd.setCursor(0,1);
lcd.print(sms.substring(16,32));
delay(5000);
}
now when I send a text like "hello" , i receive text a text i sent before like
"maoni" plus which i sent now so i receive "maonihello" can you help me check out
the codes
#include <SoftwareSerial.h>
SoftwareSerial Serial1(2, 3); // RX, TX
#include<LiquidCrystal.h>
LiquidCrystal lcd(14,15,16,17,18,19);
byte back[8] =
{
0b00000,
0b00000,
0b11111,
0b10101,
0b11011,
0b11111,
0b00000,
0b00000
};
String number="";
String msg="";
String instr="";
String str_sms="";
String str1="";
int ring=0;
int i=0,temp=0;
int sms_flag=0;
char sms_num[3];
int rec_read=0;
int temp1=0;
#include <Keypad.h>
const byte ROWS = 4; //four rows
const byte COLS = 4; //four columns
char hexaKeys[ROWS][COLS] =
{
{'1','2','3','A'},
{'4','5','6','B'},
{'7','8','9','C'},
{'*','0','#','D'}
};
byte rowPins[ROWS] = {11, 10, 9, 8}; //connect to the row pinouts of the keypad
byte colPins[COLS] = {7, 6, 5, 4}; //connect to the column pinouts of the keypad
void loop()
{
serialEvent();
if(sms_flag==1)
{
lcd.clear();
lcd.print("New Message");
int ind=instr.indexOf("+CMTI: \"SM\",");
ind+=12;
int k=0;
lcd.setCursor(0,1);
lcd.print(ind);
while(1)
{
while(instr[ind]!= 0x0D)
{
sms_num[k++]=instr[ind++];
}
break;
}
ind=0;
sms_flag=0;
lcd.setCursor(0,1);
lcd.print("Read SMS --> D");
delay(4000);
instr="";
rec_read=1;
temp1=1;
i=0;
}
if(ring == 1)
{
/* number="";
int loc=instr.indexOf("+CLIP: \"");
if(loc > 0)
{
number+=instr.substring(loc+8,loc+13+8);
}
lcd.setCursor(0,0);
lcd.print("Incomming... ");
lcd.setCursor(0,1);
lcd.print(number);
instr="";
i=0;*/
}
else
{
serialEvent();
lcd.setCursor(0,0);
lcd.print("read --> D ");
lcd.setCursor(0,1);
lcd.print("SMS --> B ");
if(rec_read==1)
{
lcd.write(1);
lcd.print(" ");
}
else
lcd.print(" ");
}
char key=customKeypad.getKey();
if(key)
{
if(key== 'A')
{
// if(ring==1)
// {
// Serial1.println("ATA");
// delay(5000);
// }
lcd.setCursor(0, 0);
lcd.print("Key A not in use");
}
else if(key=='C')
{
// call();
lcd.setCursor(0, 0);
lcd.print("Key C not in use");
}
else if(key=='B')
{
sms();
}
void sms()
{
lcd.clear();
lcd.print("Initilising SMS");
Serial1.println("AT+CMGF=1");
delay(400);
Serial1.print("AT+CMGS=\"+255687166982\"\r");
lcd.clear();
lcd.print("After Enter MSG ");
lcd.setCursor(0,1);
lcd.print("Press D to Send ");
delay(2000);
lcd.clear();
lcd.print("Enter Your Msg");
delay(1000);
lcd.clear();
lcd.setCursor(0,0);
alfakey();
}
void alfakey()
{
int x=0,y=0;
int num=0;
while(1)
{
lcd.cursor();
char key=customKeypad.getKey();
if(key)
{
if(key=='1')
{
num=0;
lcd.setCursor(x,y);
lcd.print(ch[num]);
for(int i=0;i<3000;i++)
{
lcd.noCursor();
char key=customKeypad.getKey();
if(key=='1')
{
num++;
if(num>5)
num=0;
lcd.setCursor(x,y);
lcd.print(ch[num]);
i=0;
delay(200);
}
}
x++;
if(x>15)
{
x=0;
y++;
y%=2;
}
msg+=ch[num];
}
else if(key=='2')
{
num=6;
lcd.setCursor(x,y);
lcd.print(ch[num]);
for(int i=0;i<3000;i++)
{
lcd.noCursor();
char key=customKeypad.getKey();
if(key=='2')
{
num++;
if(num>9)
num=6;
lcd.setCursor(x,y);
lcd.print(ch[num]);
i=0;
delay(200);
}
}
x++;
if(x>15)
{
x=0;
y++;
y%=2;
}
msg+=ch[num];
}
else if(key=='3')
{
num=10;
lcd.setCursor(x,y);
lcd.print(ch[num]);
for(int i=0;i<3000;i++)
{
lcd.noCursor();
char key=customKeypad.getKey();
if(key=='3')
{
num++;
if(num>13)
num=10;
lcd.setCursor(x,y);
lcd.print(ch[num]);
i=0;
delay(200);
}
}
x++;
if(x>15)
{
x=0;
y++;
y%=2;
}
msg+=ch[num];
}
else if(key=='4')
{
num=14;
lcd.setCursor(x,y);
lcd.print(ch[num]);
for(int i=0;i<3000;i++)
{
lcd.noCursor();
char key=customKeypad.getKey();
if(key=='4')
{
num++;
if(num>17)
num=14;
lcd.setCursor(x,y);
lcd.print(ch[num]);
i=0;
delay(200);
}
}
x++;
if(x>15)
{
x=0;
y++;
y%=2;
}
msg+=ch[num];
}
else if(key=='5')
{
num=18;
lcd.setCursor(x,y);
lcd.print(ch[num]);
for(int i=0;i<3000;i++)
{
lcd.noCursor();
char key=customKeypad.getKey();
if(key=='5')
{
num++;
if(num>21)
num=18;
lcd.setCursor(x,y);
lcd.print(ch[num]);
i=0;
delay(200);
}
}
x++;
if(x>15)
{
x=0;
y++;
y%=2;
}
msg+=ch[num];
}
else if(key=='6')
{
num=22;
lcd.setCursor(x,y);
lcd.print(ch[num]);
for(int i=0;i<3000;i++)
{
lcd.noCursor();
char key=customKeypad.getKey();
if(key=='6')
{
num++;
if(num>25)
num=22;
lcd.setCursor(x,y);
lcd.print(ch[num]);
i=0;
delay(200);
}
}
x++;
if(x>15)
{
x=0;
y++;
y%=2;
}
msg+=ch[num];
}
else if(key=='7')
{
num=26;
lcd.setCursor(x,y);
lcd.print(ch[num]);
for(int i=0;i<3000;i++)
{
lcd.noCursor();
char key=customKeypad.getKey();
if(key=='7')
{
num++;
if(num>30)
num=26;
lcd.setCursor(x,y);
lcd.print(ch[num]);
i=0;
delay(200);
}
}
x++;
if(x>15)
{
x=0;
y++;
y%=2;
}
msg+=ch[num];
}
else if(key=='8')
{
num=31;
lcd.setCursor(x,y);
lcd.print(ch[num]);
for(int i=0;i<3000;i++)
{
lcd.noCursor();
char key=customKeypad.getKey();
if(key=='8')
{
num++;
if(num>34)
num=31;
lcd.setCursor(x,y);
lcd.print(ch[num]);
i=0;
delay(200);
}
}
x++;
if(x>15)
{
x=0;
y++;
y%=2;
}
msg+=ch[num];
}
else if(key=='9')
{
num=35;
lcd.setCursor(x,y);
lcd.print(ch[num]);
for(int i=0;i<3000;i++)
{
lcd.noCursor();
char key=customKeypad.getKey();
if(key=='9')
{
num++;
if(num>39)
num=35;
lcd.setCursor(x,y);
lcd.print(ch[num]);
i=0;
delay(200);
}
}
x++;
if(x>15)
{
x=0;
y++;
y%=2;
}
msg+=ch[num];
}
else if(key=='0')
{
num=40;
lcd.setCursor(x,y);
lcd.print(ch[num]);
for(int i=0;i<3000;i++)
{
lcd.noCursor();
char key=customKeypad.getKey();
if(key=='0')
{
num++;
if(num>41)
num=40;
lcd.setCursor(x,y);
lcd.print(ch[num]);
i=0;
delay(200);
}
}
x++;
if(x>15)
{
x=0;
y++;
y%=2;
}
msg+=ch[num];
}
else if(key=='D')
{
lcd.clear();
lcd.print("Sending SMS....");
// Serial1.print("AT+CMGS=");
// Serial1.print(number);
// delay(2000);
Serial1.print(msg);
Serial1.write(26);
delay(5000);
lcd.clear();
lcd.print("SMS Sent to");
lcd.setCursor(0,1);
lcd.print(number);
delay(2000);
number="0687166552";
break;
}
}
}
}
void send_sms()
{
Serial1.write(26);
}
void lcd_status()
{
lcd.setCursor(2,1);
lcd.print("Message Sent");
delay(2000);
//lcd.setCursor()
//lcd.print("")
//return;
}
void ok_button()
{
lcd.setCursor(0,4);
lcd.print("OK");
}
void sms_button()
{
lcd.setCursor(0,13);
lcd.print("SMS");
}
void gsm_init()
{
lcd.clear();
lcd.print("Finding Module..");
boolean at_flag=1;
while(at_flag)
{
Serial1.println("AT");
while(Serial1.available()>0)
{
if(Serial1.find("OK"))
at_flag=0;
}
delay(1000);
}
lcd.clear();
lcd.print("Module Connected..");
delay(1000);
lcd.clear();
lcd.print("Disabling ECHO");
boolean echo_flag=1;
while(echo_flag)
{
Serial1.println("ATE1");
while(Serial1.available()>0)
{
if(Serial1.find("OK"))
echo_flag=0;
}
delay(1000);
}
lcd.clear();
lcd.print("Echo OFF");
delay(1000);
lcd.clear();
lcd.print("Finding Network..");
boolean net_flag=1;
while(net_flag)
{
Serial1.println("AT+CPIN?");
while(Serial1.available()>0)
{
if(Serial1.find("+CPIN: READY"))
net_flag=0;
}
delay(1000);
}
lcd.clear();
lcd.print("Network Found..");
delay(1000);
lcd.clear();
}
void serialEvent()
{
while(Serial1.available())
{
char ch=Serial1.read();
instr+=ch;
i++;
if(instr[i-4] == 'R' && instr[i-3] == 'I' && instr[i-2] == 'N' && instr[i-1] ==
'G' )
{
ring=1;
}
if(instr.indexOf("NO CARRIER")>=0)
{
ring=0;
i=0;
}
if(instr.indexOf("+CMTI: \"SM\"")>=0)
{
sms_flag=1;
}
}
}
Permalink
sending sms
Thanks i was succesful in troubleshooting the error by adding these line of code
lcd.clear();
lcd.print(sms.substring(16,32));
lcd.setCursor(0,1);
lcd.print(sms.substring(16,32));
delay(5000);
}
now when I send a text like "hello" , i receive text a text i sent before like
"maoni" plus which i sent now so i receive "maonihello" can you help me check out
the codes
#include <SoftwareSerial.h>
SoftwareSerial Serial1(2, 3); // RX, TX
#include<LiquidCrystal.h>
LiquidCrystal lcd(14,15,16,17,18,19);
byte back[8] =
{
0b00000,
0b00000,
0b11111,
0b10101,
0b11011,
0b11111,
0b00000,
0b00000
};
String number="";
String msg="";
String instr="";
String str_sms="";
String str1="";
int ring=0;
int i=0,temp=0;
int sms_flag=0;
char sms_num[3];
int rec_read=0;
int temp1=0;
#include <Keypad.h>
const byte ROWS = 4; //four rows
const byte COLS = 4; //four columns
char hexaKeys[ROWS][COLS] =
{
{'1','2','3','A'},
{'4','5','6','B'},
{'7','8','9','C'},
{'*','0','#','D'}
};
byte rowPins[ROWS] = {11, 10, 9, 8}; //connect to the row pinouts of the keypad
byte colPins[COLS] = {7, 6, 5, 4}; //connect to the column pinouts of the keypad
void setup()
{
Serial1.begin(9600);
lcd.begin(16,2);
lcd.createChar(1, back);
lcd.print("Simple Mobile ");
lcd.setCursor(0,1);
lcd.print("System Ready..");
delay(1000);
gsm_init();
lcd.clear();
lcd.print("System Ready");
delay(2000);
}
void loop()
{
serialEvent();
if(sms_flag==1)
{
lcd.clear();
lcd.print("New Message");
int ind=instr.indexOf("+CMTI: \"SM\",");
ind+=12;
int k=0;
lcd.setCursor(0,1);
lcd.print(ind);
while(1)
{
while(instr[ind]!= 0x0D)
{
sms_num[k++]=instr[ind++];
}
break;
}
ind=0;
sms_flag=0;
lcd.setCursor(0,1);
lcd.print("Read SMS --> D");
delay(4000);
instr="";
rec_read=1;
temp1=1;
i=0;
}
if(ring == 1)
{
/* number="";
int loc=instr.indexOf("+CLIP: \"");
if(loc > 0)
{
number+=instr.substring(loc+8,loc+13+8);
}
lcd.setCursor(0,0);
lcd.print("Incomming... ");
lcd.setCursor(0,1);
lcd.print(number);
instr="";
i=0;*/
}
else
{
serialEvent();
lcd.setCursor(0,0);
lcd.print("read --> D ");
lcd.setCursor(0,1);
lcd.print("SMS --> B ");
if(rec_read==1)
{
lcd.write(1);
lcd.print(" ");
}
else
lcd.print(" ");
}
char key=customKeypad.getKey();
if(key)
{
if(key== 'A')
{
// if(ring==1)
// {
// Serial1.println("ATA");
// delay(5000);
// }
lcd.setCursor(0, 0);
lcd.print("Key A not in use");
}
else if(key=='C')
{
// call();
lcd.setCursor(0, 0);
lcd.print("Key C not in use");
}
else if(key=='B')
{
sms();
}
Serial1.print("AT+CMGS=\"+255687166982\"\r");
lcd.clear();
lcd.print("After Enter MSG ");
lcd.setCursor(0,1);
lcd.print("Press D to Send ");
delay(2000);
lcd.clear();
lcd.print("Enter Your Msg");
delay(1000);
lcd.clear();
lcd.setCursor(0,0);
alfakey();
}
void alfakey()
{
int x=0,y=0;
int num=0;
while(1)
{
lcd.cursor();
char key=customKeypad.getKey();
if(key)
{
if(key=='1')
{
num=0;
lcd.setCursor(x,y);
lcd.print(ch[num]);
for(int i=0;i<3000;i++)
{
lcd.noCursor();
char key=customKeypad.getKey();
if(key=='1')
{
num++;
if(num>5)
num=0;
lcd.setCursor(x,y);
lcd.print(ch[num]);
i=0;
delay(200);
}
}
x++;
if(x>15)
{
x=0;
y++;
y%=2;
}
msg+=ch[num];
}
else if(key=='2')
{
num=6;
lcd.setCursor(x,y);
lcd.print(ch[num]);
for(int i=0;i<3000;i++)
{
lcd.noCursor();
char key=customKeypad.getKey();
if(key=='2')
{
num++;
if(num>9)
num=6;
lcd.setCursor(x,y);
lcd.print(ch[num]);
i=0;
delay(200);
}
}
x++;
if(x>15)
{
x=0;
y++;
y%=2;
}
msg+=ch[num];
}
else if(key=='3')
{
num=10;
lcd.setCursor(x,y);
lcd.print(ch[num]);
for(int i=0;i<3000;i++)
{
lcd.noCursor();
char key=customKeypad.getKey();
if(key=='3')
{
num++;
if(num>13)
num=10;
lcd.setCursor(x,y);
lcd.print(ch[num]);
i=0;
delay(200);
}
}
x++;
if(x>15)
{
x=0;
y++;
y%=2;
}
msg+=ch[num];
}
else if(key=='4')
{
num=14;
lcd.setCursor(x,y);
lcd.print(ch[num]);
for(int i=0;i<3000;i++)
{
lcd.noCursor();
char key=customKeypad.getKey();
if(key=='4')
{
num++;
if(num>17)
num=14;
lcd.setCursor(x,y);
lcd.print(ch[num]);
i=0;
delay(200);
}
}
x++;
if(x>15)
{
x=0;
y++;
y%=2;
}
msg+=ch[num];
}
else if(key=='5')
{
num=18;
lcd.setCursor(x,y);
lcd.print(ch[num]);
for(int i=0;i<3000;i++)
{
lcd.noCursor();
char key=customKeypad.getKey();
if(key=='5')
{
num++;
if(num>21)
num=18;
lcd.setCursor(x,y);
lcd.print(ch[num]);
i=0;
delay(200);
}
}
x++;
if(x>15)
{
x=0;
y++;
y%=2;
}
msg+=ch[num];
}
else if(key=='6')
{
num=22;
lcd.setCursor(x,y);
lcd.print(ch[num]);
for(int i=0;i<3000;i++)
{
lcd.noCursor();
char key=customKeypad.getKey();
if(key=='6')
{
num++;
if(num>25)
num=22;
lcd.setCursor(x,y);
lcd.print(ch[num]);
i=0;
delay(200);
}
}
x++;
if(x>15)
{
x=0;
y++;
y%=2;
}
msg+=ch[num];
}
else if(key=='7')
{
num=26;
lcd.setCursor(x,y);
lcd.print(ch[num]);
for(int i=0;i<3000;i++)
{
lcd.noCursor();
char key=customKeypad.getKey();
if(key=='7')
{
num++;
if(num>30)
num=26;
lcd.setCursor(x,y);
lcd.print(ch[num]);
i=0;
delay(200);
}
}
x++;
if(x>15)
{
x=0;