Besoin d'aide décimal

Bonjour j'ai un problème .

Je dois récupérer la vitesse d'un GPS et l'afficher sur un 7 Segments .

Mais voilà lorsque je dépasse 100KMH mon afficheur met une erreur pour trop de caractères .

Y-a t-il un moyen de retirer la partie décimale de ma variable avec une fonction ?

Je vous remercie de votre aide

bonjour, oui en passant par int float vitesse = vitesse gps int affichevitesse = vitesse

D'accord je vais tester je vous redis le résultat

inutile de demander de l'aide par MP, le forum est fait pour ca.

Oui mais ce que je fais ne marche pas pour l'instant . Puis je envoyer mon code ?

Non c'est interdis par les droit de l'homme, lahaye et la cour Européenne de justice.

Blague à part, on est sur un forum pour une plateforme de développement programmable, ça serait un peu du masochisme d'interdire de poster du code non ?

D’accord donc le voilà

//Programme GPS Projet HUD
//STI2D SIN 2015 
//GPS Julien Breton
//Afficheur Florian Sénéchal
//Liaision série Yoan Desiles
//Version 19052015:1703
//Tout droit réservé 


#include <DigitShield.h> //Inclus la bibliothèque pour l'afficheur
#include <I2C.h> //Inclus la bibliothèque pour le GPS I2C
#include <SoftwareSerial.h> //Inclus la bibliothèque pour la gestion serie


#define GPS                0x29 //I2C GPS Shield I2C address
int speedK; //Déclare un entier pour la vitesse
int distance; // Déclare un entier pour la distance
int afficheur; //Déclare une variable pour la vitesse affichée

SoftwareSerial mavoieserie(11,10); // Déclare le port série virtuel sur les broches 11 et 10 .

//Create an instance of the object.
void setup()
{
DigitShield.begin(); //Initialise l'afficheur
I2c.begin();//initialise la communication I2C.
DigitShield.setPrecision(0); // Met la précision de l'afficheur à 0 décimals
Serial.begin(9600);//initialise le terminal à 9600 bauds
mavoieserie.begin(38400); //Démarre la voie serie virtuelle à 38400 Bauds 
}

void loop() 
{
  if (mavoieserie.available()) { //Si la voie serie virtuelle est disponible faire ce que contient la boucle
  I2c.end(); // Met fin au protocole I2C  
  distance=(mavoieserie.read()); //Associe la distance recue à la variable distance
  Serial.print(distance); // Affiche la distance sur le moniteur serie
  DigitShield.setValue(distance); //Affiche la valeur de la distance sur l'afficheur
  //delay(2000);
  mavoieserie.flush(); // Vide le buffer 
  delay(400);
  }
  else
{
  I2c.write(GPS,0x11); //Met le  pointeur adresse à 11 
  delay(1); //indispensable avant la relecture des données en start répeté
  I2c.read(GPS,4);//lecture de 4 octet en mode repeted start, supporté par la librairie I2C 
  
 for(int i = 0;i < 4;i++) // lecture de 4 octet contenant la vitesse

  {    
    speedK <<= 8;
    speedK |= I2c.receive();  //speedK = vitesse;
    afficheur=int(speedK);
    
  } 
  if (speedK < 500)
 
 {
    afficheur=0000; //Assoscie un chiffre à la vitesse 
    //DigitShield.setLeadingZeros(true); //Affiche les zéros la ou il n'y à pas de caractères
   // DigitShield.setDecimalPoint(2, true); // Met un point décimal au rang 2 
    //DigitShield.setDecimalPoint(3, false); // Enlève le point décimal du rang 3 
    
  }
  else 
  {
  }
    if (speedK > 10000) // Si la vitesse dépasse 100KM/H
  {
    //DigitShield.setDecimalPoint(3, true); //Met un point décimal au rang 3 
    //DigitShield.setDecimalPoint(2, false); //Enlève le point décimal du rang 2 
    
  }
  else 
  {
  }
 
  DigitShield.setValue(afficheur); // Affiche la vitesse sur l'afficheur 7 SEG
  Serial.println(speedK/100); // Affiche sur le moniteur série 
}
  
  

 
}

Donc une fois le programme mis dans la carte il m’affiche 0 ce qui est normal . Je pars faire des test ce soir pour en savoir plus .

Je vous tient au courant .

Donc ca ne marche toujours pas :(

Pas surprenant.

for(int i = 0;i < 4;i++) // lecture de 4 octet contenant la vitesse

  {    
    speedK <<= 8;
    speedK |= I2c.receive();  //speedK = vitesse;
    afficheur=int(speedK);
    
  }

speedK est un int (donc une variable sur 16 bits). Tu y ranges 4 octets (soit 32 bits). Où est l’erreur???
La même remarque s’applique pour afficheur d’ailleurs.
Si c’était moi, j’utiliserais plutôt un unsigned long pour faire ça.