Arduino Forum

International => EspaƱol => Topic started by: knibal on Oct 09, 2014, 01:20 pm

Title: lectura serial relentiza arduino
Post by: knibal on Oct 09, 2014, 01:20 pm
Hola! tengo dos arduinos mega conectados por bluetooth.
He conseguido que funciones si uno solicita unos datos el otro se los envia y viceversa. El caso es que si en el codigo le digo al arduino que este chequeando el serial por si recibe una cadena este se vuelve mucho mas pesado de lo que me gustaria ya que uno de ellos tiene un lcd y funciones que van cambiando cada segundo.
En el codigo no tengo ningun delay ya que si lo pongo podria perder una cadena que envie desde el otro arduino o esta la recibe incompleta.
Me gustaria saber como solucionais estos problemas.
UN SALUDO
Title: Re: lectura serial relentiza arduino
Post by: max_saeta on Oct 09, 2014, 05:00 pm
Saludos
Lo primero seria que publicaras tu codigo para poder ayudarte. Asi encima no podemos hacer nada.
Ahora si tienes un mega puedes usar Serial event para no estar monitoreando desde codigo.
Title: Re: lectura serial relentiza arduino
Post by: knibal on Oct 09, 2014, 08:01 pm
Hola
Esta seria la parte del condigo que envia los datos.

Code: [Select]
if( Serial1.available() > 0)
    {
       
        letra = Serial1.read();
        Serial1.flush();
        cadena[in++]=letra;
        if (letra=='#')
        {
           Serial.println(cadena);
           Serial.println("");
           switch (cadena[1])
            {
              case('e'):// cadena solicita envio de cadena
              {
                Serial.print("envio solicitado");
                switch (cadena[2])
                {
                  case ('r'):
                  {
                    Serial.print("se ha solicitado el envio de relojes");
                    mandarelojes();
                  }break;
                  case('s'):
                  {
                    Serial.print("se ha solicitado el envio de sondas");
                    mandasondas();
                  }break;
                  default:
                  {
                    Serial.print("cadena erronea envio");
                  }break;
                }
               
               }break;
               default:
               {
                 Serial.print("cadena erronea general");
               }break;
            }
            limpia();
        }
    }


limpia lo que hace es borrar la cadena donde se reciben los datos. enviasondas y enviarelojes lo que hace es crear la cadena correspondiente y lanzarla por el serial1.

Voy a mirarme Serial.event
Gracias