GPS + RF433 Not working together.
-
does it return one/true when you are testing only with gps and gps.available( gps_port )?
-
@salmanfaris gps.available( gps_port ) Is not return a True case.
-
@salmanfaris for running
while(gps.avaible());
MCU need to wait some time. but after adding VirtualWire library it's not waiting for Serial.available() -
@rafitc99 said in GPS + RF433 Not working together.:
ps.available( gps_port ) Is not return a True case.
Then how is the while loop will work? It should return!
-
@rafitc99 said in GPS + RF433 Not working together.:
library it's not waiting for Serial.available()
did you try manual waiting? Instead of delay, you can use mills, so the background works will keep run.
-
@salmanfaris said in GPS + RF433 Not working together.:
@rafitc99 said in GPS + RF433 Not working together.:
library it's not waiting for Serial.available()
did you try manual waiting? Instead of delay, you can use mills, so the background works will keep run.
Let me try.
-
did you try manual waiting? Instead of delay, you can use mills, so the background works will keep run.
Not working. Same problem.
-
@salmanfaris It's worked. Thank you @salmanfaris for your replies.
Actually a small change in void loop is the solution
void loop(){ // Set buffer to size of expected message uint8_t buf[1]; uint8_t buflen = sizeof(buf); // Check if received packet is correct size if (vw_get_message(message, &messageLength)) // non-blocking { Serial.print("Potentiometer: "); //Serial.print(message[i]); received_number = message[i]; Serial.println(received_number); } if(received_number == 1){ getGpsData(); } }
Used two simple if instead of Nested IF. idk what is the problem of first code. Also if I add any
delay()
insidevoid getGpsData()
function, showing same problem. -
@rafitc99
Remember one thing...
For all you guys who work with software serial or hardware serial...First and most important thing is while working with software serial... In loop remember that softwareSerial never generate interrupt while it receives any data as you can say triggers if condition... When it's turn comes it checks otherwise if condition will bypass so your target or trigger cannot be achieved....
For hardware serial always prefer to use interrupt method to get data for each character you can receive simultaneously loops runs any function or not... It's surely you can get all the data from serial... Although mcu runs any kinds of task it leaves and goes on serial interrupt...
So it's my experience and suggestions to all you guys to remeber this thing...
If you all.come across the situations that there is no provision to use hardware serial and you need to use softwareSerial then remember that your loop must have intelligence to get the data from softwareserial by if condition which does not effect other functions in loop.. kindly for RF functions which must be used in loop that can't be avoided by any delay functionality... So Millis can be helpful or timer interrupt can help you...
Thanks...