[Résolu] Convertion de Variable

Bonjour, j'ai besoin d'un petit coup de main pour convertir une variable.
je recois par radio un array contenant un string, je peux l'afficher avec =

#include <VirtualWire.h> // inclusion de la librairie VirtualWire
//pin de rx = 11 par default
uint8_t buf[VW_MAX_MESSAGE_LEN]; // Tableau qui va contenir le message recu (de taille maximum VW_MAX_MESSAGE_LEN)
uint8_t buflen = VW_MAX_MESSAGE_LEN; // Taille maximum de notre tableau

#include <LCD4884.h>
// LCD_RST pin 6
// SPI_CS pin 5
// SPI_MOSI pin 3
// SPI_SCK pin 2
// LCD_DC pin 4
// LCD_BL pin 7
String text;

void setup()
{
Serial.begin(9600);
lcd.LCD_init(); // creates instance of LCD
lcd.LCD_write_string(0,0,"LCD OK",0);
delay(2000);
lcd.LCD_clear(); // blanks the display

pinMode(7, OUTPUT);

vw_set_ptt_inverted(true);//necessaire au reto ecl du lcd shield
vw_setup(2000); // initialisation de la librairie VirtualWire à 2000 bauds (note: je n'utilise pas la broche PTT)
vw_rx_start(); // Activation de la partie réception de la librairie VirtualWire

}

//##############################################################################
void loop()
{
uint8_t buf[VW_MAX_MESSAGE_LEN];
uint8_t buflen = VW_MAX_MESSAGE_LEN;

if (vw_get_message(buf, &buflen)) // On copie le message, qu'il soit corrompu ou non
{
lcd.LCD_clear();
int i;
lcd.LCD_write_string(0,0,"RX=>",0);
lcd.LCD_set_XY(0,1);
for (i = 0; i < buflen; i++) // Si il n'est pas corrompu on l'affiche via Serial
{
lcd.LCD_write_char(buf*,0);*
_ text= buf*;_
_
Serial.print (text);_
_
}_
_
Serial.println ("");_
affiche_text();
_
}*_

}
void affiche_text()
{
*Serial.println (text); *
}[/quote]
mais apres je n'arrive pas a "sauver" cette chaine pour la manipuler avec "substring()" ou
"startsWith()"
Je dois me planter quelque part, mais ou ?
La fonction affiche_text() ne m'affiche que le dernier char de l'array! Or c'est ici que je voudrais manipuer ma chaine =(

Il doit y avoir une erreur dans cette boucle. i n'est pas utilisé
Tel qu'elle est écrite cette boucle devrait

  • écrire buflen fois le premier caractère de buf sur l'afficheur LCD
  • initialiser buflen fois text avec le contenu de buf
  • afficher buflen fois le contenu de buf sur la console
                            for (i = 0; i < buflen; i++) // Si il n'est pas corrompu on l'affiche via Serial
            {
                                lcd.LCD_write_char(buf,0);
                                text= buf;
                                Serial.print (text);
                 }

Merci a toi pour ton aide.
C'est vrai je sais pas ce qu'il c'est passé! j'ai poster un code erroné!
après correction =

for (i = 0; i < buflen; i++) // Si il n'est pas corrompu on l'affiche via Serial
            {
                                lcd.LCD_write_char(buf[i],0);
                                text= buf[i];
                                Serial.print (text);
                 }
                 Serial.println ("");
                 affiche_text();

la console affiche bien "text" mais pas la fonction affiche_text(), qui m'affiche le dernier élément du tableau :frowning:

le fais qu'il ne t'affiche que le dernier élément du tableau c'est tout a fais normal.

tu fais text = buf_; donc a chaque fois que tu tourne dans la boucle for .. tu modifie text au lieu de concaténé buf a chaque fois ._

Oui je comprend d'ou vient mon erreur, mais je ne sais pas comment la corriger :blush:
Comment faire pour que ma variable text soit = à l'assemblage des char contenu dans buf ?

Problème résolu !
A force ...
il faut incrémenter la variable text avec le contenu de buf =>

if (vw_get_message(buf, &buflen)) // On copie le message, qu'il soit corrompu ou non
		{
			lcd.LCD_clear();
                        int i;
                        lcd.LCD_write_string(0,0,"RX=>",0); 
			lcd.LCD_set_XY(0,1);
                        text = "";   
                            for (i = 0; i < buflen; i++) // Si il n'est pas corrompu on l'affiche via Serial
                              {
                                lcd.LCD_write_char(buf[i],0);
                                text += buf[i];
                               }
                   }

et là ma variable text est un string pur et dur auquel je peux appliquer un traitement ...
Merci a tous pour votre aide :slight_smile:

héhé.. ^^.. bon du incrémente pas la variable text mais c'est pas grave (mot mal utiliser)... ^^...

mais tu vois le plaisir de trouver soit même la solution.. ^^..

excuse pour la mauvaise utilisation... j’apprends tout seul, je suis électricien...
Tu as bien raison et c'est la meilleur façon d'apprendre! Ce qui me manque c'est le temps...(boulot, famille...)

t’inquiète pas ce n'étais point un reproche.. mais tu apprend et tu essai par toi même .. ^^.. d'autre n'essai même pas .. et veulent tout de suite la réponse sans savoir pourquoi sa marche.. ^^.. je pense que l'on ne peux pas évoluer comme sa ...

alors courage par la suite.. ^^.. n'hésite pas a reposer des questions..

Merci a toi, je ne l'ai pas pris comme un reproche :wink:
Et quand je dis "j’apprends tout seul" c'est une expression car en fait c'est grâce aux tutos et au forum...
Merci a tous ceux qui font vivre la communauté!
Au fais quel étais le terme approprier pour la construction de ma variable text ? (pour ne pas faire 2 * la même erreur)

sa serai plus concaténation ..
incrémentation c'est plutôt quand tu fais i=0; ... i++; ou la i sera incrémenté de 1..