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 ?
//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
}
}
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.