Pages: [1]   Go Down
Author Topic: Declarar un string dentro de loop()  (Read 578 times)
0 Members and 1 Guest are viewing this topic.
Euskadi
Offline Offline
God Member
*****
Karma: 16
Posts: 727
Arduinotarrak
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset


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:
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?




Logged

Albacete
Offline Offline
Full Member
***
Karma: 0
Posts: 140
Arduino mola que te pasas
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

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);
}

Logged

Pages: [1]   Go Up
Jump to: