liaison serie

bonjour,
je souhaite renvoyer des données sur la liaison série,données acquises par un arduino uno.
ces données sont de deux types,float et int.

/*
 envoi port serie d un float
 fonctionne avec le programme python LiaisonSerieArduino
valide
 */
float celsius=22.63;
int deccelsius=0;
char donnee[5]={'0','0','0','0','0'};
int masse=453;
// the setup routine runs once when you press reset:
int incomingByte = 0;   // variable de stockage des données entrantes
void setup() {
  // initialize serial communication at 9600 bits per second:
  Serial.begin(9600);
}

// the loop routine runs over and over again forever:
void loop() {
   if (Serial.available() > 0) { // si des données entrantes sont présentes
                // lit le 1er octet arrivé
                incomingByte = Serial.read();
                if (incomingByte==49){               //49 est le code ascii du chiffre 1
                   Serial.print(masse);
                   Serial.println();
                   deccelsius=(celsius-int(celsius))*100; //transtypage float/string
                   sprintf(donnee,"%0d.%d",int(celsius),deccelsius);
                for (int i=0;i<5;i++){
               Serial.print(donnee[i]);
                        }
      Serial.println();
  Serial.flush();
                }
           }
}

Cela fonctionne une seule fois,après j’ai bien l’affichage du reeel,ici celsius,mais 256 à la place de 453.
Quelqu’un a t’il des lueurs sur ceci?

Bonjour,

Tu es sur que ta question à sa place dans la section ‘Réalisation et projets finis’ ??
Demandes le déplacement de ton sujet en cliquant sur ‘Report to moderator’

Pour répondre quand même à ta question, le tableau donnee[5] est trop petit, il doit faire au moins 6 avec tes chiffres (mais il vaut mieux prendre de la marge), donc tu écrases le variable masse.

merci beaucoup,cela fonctionne et le sujet n'est pas à sa place effectivement.