Go Down

Topic: Declarar un string dentro de loop() (Read 594 times) previous topic - next topic

curro92


Por fin logré comunicar por RF mi Arduino 2009 y un atmega328  minimalista. En el serial monitor del receptor ya aparece el mensaje "Yabba-Dabba Do!" enviado por el emisor. Soy tan feliz como el Picapiedra.

Tenía dudas de si funcionaba el emisor, pero no sabía cómo comprobarlo. He descubierto un truco: si el emisor se coloca muy próximo de un equipo de audio, cuando emite se oye un ruido o zumbido en os altavoces.

He tenido un problema: el mensaje "Yabba-Dabba Do!" se iba acortando a medida que pasaba el tiempo. Primero "Yabba-", luego "Ya" ...

Estoy usando los ejemplos del código de http://letsmakerobots.com/node/12336  

He hecho un cambio en esta parte del código:

Code: [Select]
void loop()
{
   const char *msg = "LMR-II Rocks";       // this is your message to send

  vw_send((uint8_t *)msg, strlen(msg));
  vw_wait_tx();                                          // Wait for message to finish
  delay(200);
}



En cada ciclo se carga en la memoria el mismo string (12 bytes). Posiblemente la memoria se va llenando. Yo he pasado esa línea a la función setup(). También he puesto dos trozos de cable de 17cm a cada módulo.

Quisiera la opinión de alguno más experto que yo: declarar

const char *msg = "LMR-II Rocks";

dentro de loop() es correcto?





Pofenas

Declarar una constante cada vez que pase por loop no es correcto ni incorrecto. Simplemente, si no hay ningun motivo para hacerlo es un desperdicio. Quiero decir que, pudiendo declararlo fuera de las funciones, y de modo publico, declararlo y asignarlo dentro de loop significa repetir un codigo que no aporta nada, y quiza (como tu supones ) algunos problemas. yo reescribiria del siguiente modo

const char *msg = "LMR-II Rocks";       // this is your message to send

void loop()
{
  vw_send((uint8_t *)msg, strlen(msg));
  vw_wait_tx();                              // Wait for message to finish
  delay(200);
}


Go Up