Que tal Foro, espero se encuentren todos bien...
El motivo de este post es para preguntarles si alguien ha tenido problema con la lectura de GPS al trabajar un sensor extra al mismo tiempo, a ver, cómo me explico:
Estoy utilizando un Arduino NANO.
GPS NEO6M
nrf24l01.
El problema que tengo, es que al intentar trabajar los dos dispositivos al mismo tiempo, el GPS no me da lectura en el serial, pero si intento sólo iniciar el GPS, muestra los datos sin ningún problema.
Utilicé la libreria SoftwareSerial, pero estuve leyendo que es algo lenta y no es muy eficiente, entonces cambié al NeoSWSerial ya que éste permite cambiar entre los distintos puertos que tenga pero básicamente, no cambió en nada.
Les muestro:
#include <SoftwareSerial.h>
#include <Arduino.h>
#include <SPI.h>
#include <String.h>
#include <EEPROM.h>
#include <RF24.h>
#include <nRF24L01.h>
SoftwareSerial gps(3,4);
RF24 radio(9,10);
void setup() {
Serial.begin(9600);
gps.begin(9600);
radio.begin();
radio.enableAckPayload();
radio.startListening();
}
void loop() {
gps.listen();
gpsPos();
if(gps.read()){
switchRadio();
}
}
void gpsPos(){
if(gps.available()) {
if(nmea_parser(gps.read())) {
Serial.println("Posición NMEA decodificada:");
Serial.print("Latitude: ");
Serial.println(String(latitude));
Serial.print("Longitude: ");
Serial.println(String(longitude));
}
}
}
Lo que quiero mostrar con esto es la condición que hice en mi loop para verificar si hay o no una lectura del gps, lo cuál, la condición muestra que es verdadero y ejecuta el switchRadio(); la situación es que, si hay una lectura del GPS, porqué no la muestra en el serial?
------------------------------------------------------
11:03:54.881 -> Leyendo add1:
11:03:55.051 -> Leyendo add2:
11:03:55.185 -> Leyendo add3: Esto es el SwitchRadio();
11:03:55.354 -> Leyendo add4:
11:03:55.525 -> Leyendo add5:
11:03:55.694 -> Leyendo add6:
11:03:56.102 -> Leyendo add7:
11:03:56.740 -> Leyendo add8:
11:03:56.876 -> ------------------------------------------------------
11:03:56.909 ->
11:03:56.909 ->
11:03:56.909 ->
11:03:56.909 ->
11:03:56.942 ->
11:03:56.942 ->
11:03:56.942 ->
11:03:56.942 -> Esto también...
11:03:56.942 ->
11:03:56.942 ->
11:03:56.942 ->
11:03:56.942 ->
11:03:56.942 ->
11:03:56.942 ->
11:03:56.942 ->
11:03:56.942 ->
11:03:56.942 -> ------------------------------------------------------
JUSTO DEBAJO DE ESTA LÍNEA DEBE APARECER LA LECTURA DEL GPS PERO REPITE LO DE ARRIBA NUEVAMENTE, SALTANDO GPS...
La cosa es que:
-- El GPS funciona, ya que lo probé sólo.
-- El arduino no parece estar dañado.
-- El GPS, sabemos que empieza a dar su posición al estar en Lock, o cuando titila el LED, lo cuál lo compruebo antes de cualquier prueba.
-- Estoy casi seguro de que es problema del Serial o de la sincronía de los sensores que se usan.
Quiero aclarar que diseñé un código pequeño el cuál me tira los datos de latitud y longitud, por si se preguntan que demonios puse en el void GPSPOS(). (funciona sin problemas) por ahí no va el asunto.
Estaría muy agradecido a quién pueda apoyarme.
Saludos y excelente inicio de semana a todos.