Go Down

Topic: [Résolu] Télémétrie sur module 433mhz (Read 1 time) previous topic - next topic

cutprod

Feb 19, 2012, 01:20 am Last Edit: Feb 22, 2012, 06:05 pm by cutprod Reason: 1
Bonjour,grâce au tuto de skywodd = http://skyduino.wordpress.com/2011/12/29/tutoriel-arduino-et-emetteurrecepteur-433mhz-virtualwire/
je suis sur un projet de véhicule radio commander mais je bloque sur la  télémétrie!
j' envoi la valeur de A0 =
Code: [Select]
{
delay(100);
 
 a0 = analogRead(A0);
 char str[5] ;// max 1023 = 4 char + char null \0
 String ana_0_val = itoa(a0,str,10);// transformation décimal -> chaine de char

 String ana_0 = ("AI_0 = "+ ana_0_val);//ajoute a la chaine "AI_1" pour connaitre l'analog input
 char AI_0[15];//déclare un buffer
 ana_0.toCharArray(AI_0, 15);//convertion de la chaine en array de char max 14 char
   Serial.println(AI_0);
 
 
 if  (analogRead(A0)!=a0)
{
 
 
  char str2[5] ;// max 1023 = 4 char + char null \0
 String ana_0_val = itoa(analogRead(A0),str2,10);// transformation décimal -> chaine de char

 String ana_0 = ("AI_0 = "+ ana_0_val);//ajoute a la chaine "AI_1" pour connaitre l'analog input
 char AI_0[15];//déclare un buffer
 ana_0.toCharArray(AI_0, 15);//convertion de la chaine en array de char max 14 char
  Serial.println(AI_0);
}
 
   vw_send((uint8_t *)AI_0, strlen(AI_0));
   vw_wait_tx();
   

}

Tout va bien mais c'est a la réception que je bug: je reçois un array que je peut afficher dans la console, mais je n'arrive pas a le transformer en String "pure et dur"!
afin de le manipuler avec "startsWith()" ou autre pour savoir de quel entrée ana il sagit.
Mon but et d'attribuer une valeur précise a un moteur précis en fonction du nom et de la valeur de l"entée ana reçut par radio  :smiley-eek-blue: même moi j'ai du mal a me comprendre!!
Si quelqu'un a une idée, merci d'avance ;)

skywodd

Salut,

Bon déja :
Code: [Select]
char str2[5] ;// max 1023 = 4 char + char null \0
String ana_0_val = itoa(analogRead(A0),str2,10);// transformation décimal -> chaine de char

String ana_0 = ("AI_0 = "+ ana_0_val);//ajoute a la chaine "AI_1" pour connaitre l'analog input
char AI_0[15];//déclare un buffer
ana_0.toCharArray(AI_0, 15);//convertion de la chaine en array de char max 14 char
Serial.println(AI_0);

ça -> poubelle ;)
Code: [Select]
String ana_0 = "AI_0 = "; // les deux espaces c'est un peu du gachi de mémoire ram, m'enfin je dis ça je dis rien, hein ;)
ana_0 += analogRead(A0);

char AI_0[15];//déclare un buffer
ana_0.toCharArray(AI_0, 15);
Serial.println(AI_0);


Ensuite :
Code: [Select]
vw_send((uint8_t *)AI_0, strlen(AI_0));
tetete ;)
Code: [Select]
vw_send((uint8_t *)AI_0, strlen(AI_0) + 1);
(ne pas oublier le \0 en fin de chaine de caractére)


Tout va bien mais c'est a la réception que je bug: je reçois un array que je peut afficher dans la console, mais je n'arrive pas a le transformer en String "pure et dur"!
afin de le manipuler avec "startsWith()" ou autre pour savoir de quel entrée ana il sagit.
Mon but et d'attribuer une valeur précise a un moteur précis en fonction du nom et de la valeur de l"entée ana reçut par radio  :smiley-eek-blue: même moi j'ai du mal a me comprendre!!

Bon déja, je te vois parler de startsWith() tu compte utiliser les données recu sur un autre arduino ? processing ?  ... ?

Si tu veut utiliser avec un autre arduino :
Code: [Select]
String maChaine;
// ...
if (vw_get_message(buf, &buflen))
{
  maChaine = (char*)buf;
}
Des news, des tuto et plein de bonne chose sur http://skyduino.wordpress.com !

cutprod

Bonjour skywodd, merci du coup de main.
récupère les infos sur une Uno.
Le top aurait été d'envoyer un array avec des int et a la réception de trier tout ça comme ton exemple = http://skyduino.wordpress.com/2012/02/01/arduino-transmission-valeur-analogique-par-nrf24l01/
Mais bon! on fait avec ce qu'on a...
1 envoi par valeur analogique ça risque d'être un peu lourd :smiley-fat:
T'as une autre idée? ou je tente comme ça

skywodd


Bonjour skywodd, merci du coup de main.
récupère les infos sur une Uno.
Le top aurait été d'envoyer un array avec des int et a la réception de trier tout ça comme ton exemple = http://skyduino.wordpress.com/2012/02/01/arduino-transmission-valeur-analogique-par-nrf24l01/
Mais bon! on fait avec ce qu'on a...
1 envoi par valeur analogique ça risque d'être un peu lourd :smiley-fat:
T'as une autre idée? ou je tente comme ça

Pourquoi tu te casse la tête ?
Tu n'as qu'as envoyer un tableau de deux int, un premier int avec le numéro de l'entrée analogique, et un second avec la valeur ;)
Des news, des tuto et plein de bonne chose sur http://skyduino.wordpress.com !

cutprod

Oui, c'est plus ou moins ce que je fais sauf que j'ai des char dans le nom de l'entrée ana...qui peuvent être replacer par un int.
Mais ce qui me dérange c'est que je ne peux pas envoyer 2 valeurs de 2 entrées ana dans le même array?
Genre:
            array[0] = n° de l' entrée ana
            array[1] = valeur de l'entrée ana
            array[2] = n° de l' entrée ana
            array[3] = valeur de l'entrée ana

Go Up