Continue to Site

Welcome to EDAboard.com

Welcome to our site! EDAboard.com is an international Electronics Discussion Forum focused on EDA software, circuits, schematics, books, theory, papers, asic, pld, 8051, DSP, Network, RF, Analog Design, PCB, Service Manuals... and a whole lot more! To participate you need to register. Registration is free. Click here to register now.

arduino programming- goto

Status
Not open for further replies.

bobdxcool

Member level 5
Joined
Mar 9, 2012
Messages
82
Helped
0
Reputation
0
Reaction score
0
Trophy points
1,286
Activity points
2,042
I need to send data when a condition is met from a gps module to mobile using gsm module.

I have used ports 3,4 for gps and pots 7,8 for gsm. I have used softwareserial.

I also tried 0,1 for gps and 7,8 for gsm; and vice versa.

The problem is that as soon as the condition is satisfied and msg is sent, the program gets stuck, it doesn't return back to the void loop.

So, I tried using goto statement, but am getting compile error



This is message sending function

Code:
boolean policeLights() {

digitalWrite(blue, HIGH);
cell.println("AT+CMGF=1"); // set SMS mode to text
cell.print("AT+CMGS="); // now send message...
cell.write((byte)34); // ASCII equivalent of "
cell.print(mobilenumber);
cell.write((byte)34); // ASCII equivalent of "
cell.println();
delay(500); // give the module some thinking time
cell.print("hi bobby, the king of kings... :-)"); // our message to send
cell.write((byte)26); // ASCII equivalent of Ctrl-Z
cell.println();
delay(15000); // the SMS module needs time to return to OK status
do // do…while loop to send single sms..You don't want to send out multiple SMSs.... or do you?
{
delay(1);
}
while (1>0);
}


I tried using goto mand; at the end of this routine, and I tried to put the label "mand" in the beginning of the void loop function and also before, but I am getting compile errors

Code:
void loop() {

if (readGPS()) {
if (debugMode) {
debug();
}
}


I am confused how to write this goto function. Could anyone help?

Are there any other alternatives?


I have included the do while in order for the gsm module to send a single message.

If I remove it the gsm module sends multiple messages, but again the program gets stuck when the messages are sent out.

I tried using void policelights and adding a return command at the end of the function, but this did not work.

So, I tried using goto , but it has some compile errors as I am not able to configure the goto syntax.

How, do I get out of the function after the msg is sent and back to void loop ? pls help.
 
Last edited:

I couldn't get exactly.. just write or call the function under the conditional block no need to write return or anything.. it automatically comes in void loop again..
explain if I am getting it wrong
regards.
 

I couldn't get exactly.. just write or call the function under the conditional block no need to write return or anything.. it automatically comes in void loop again..
explain if I am getting it wrong
regards.

The thing is it is not returning to the loop. It is getting stuck after a message is sent.
So, that's why I thought of deliberately forcing it to go to the loop function.
 

OK. got the point. how you are calling message sending function?? when a condition satisfies just writing "policeLights();" is it??
 

OK. got the point. how you are calling message sending function?? when a condition satisfies just writing "policeLights();" is it??

yes, exactly.

I am using void policelights() now, and also used return command at the end of the function and also removed the do ,while loop. Still problem persists
 

yes, exactly.

I am using void policelights() now, and also used return command at the end of the function and also removed the do ,while loop. Still problem persists
ok. tell me on what action you want to run "policelights();" means is there a switch(like switch==HIGH) or a variable value(like count==45) or any other thing??
 

ok. tell me on what action you want to run "policelights();" means is there a switch(like switch==HIGH) or a variable value(like count==45) or any other thing??

switch on an led, and send a message.

It worked flawlessly with only the led part. But with the message part it is getting stuck.
 

it seems that it is kinda debouncing of switch problem..
if it is then solution is:

if switch==high then call police light and then write while(switch); it will wait for the moment at which switch goes low.
as soon as switch goes low it will return to loop.. tell me if can't get it.
regards.
 

Status
Not open for further replies.

Similar threads

Part and Inventory Search

Welcome to EDABoard.com

Sponsor

Back
Top