bonjour.Voici mon programme.
Il affiche les données de mon capteur ultrason, MAIS PAS SUR MA BASE DE DONNée ! (ce qui est très embêtant). Je pense qu'il contient une erreur, mais je la trouve pas.
Ma base de donnée est faite comme sur Partie 2.2 : arduino en mode client |. Et quand je tape une donnée dans la base de donnée, elle s'affiche sur le site.
#include <SPI.h>
#include <Ethernet.h> //Inclure la bibliothèque Ethernet
// Adresse MAC du shield (ici choisie par défaut), l'adresse IP dépend de votre réseau local
byte mac[] = { 0x90, 0xA2, 0xDA, 0x0D, 0xEE, 0xD0 }; //90-A2-DA-0F-15-15
byte ip[] = { 10, 139, 55, 222 }; //de 220 à 229 à choisir sur votre réseau local
byte server[] = { 10, 139, 53, 129 };
//L'adresse MAC du shield est associée à une adresse IP réseau
byte subnet[]= {255, 255, 252, 0};//mask reseau 255.255.252.0
byte gateway[]={10,139,55, 254};//passrelle 10.139.55.254
/*int CAPTEUR_TEMP_PIN = 4; // adressage du capteur de temperature (PIN) //
int temp = 0; //définition de la variable entière (integer) //
float temperature = 0; // variable temperature en flottant //
float const_can = 0.0048828; // constante du convertisseur //
*/
unsigned long echo = 0;
int ultraSoundSignal = 4; //Emmeteur avec entrer 4.
unsigned long ultrasoundValue = 5;//Résepteur avec sorti 5.
int pourcent = NULL; //Varible pourcentage (ni entrer; ni sortie)
EthernetClient client;
String data;
String stringVal;
//EthernetServer server(80); //Initialise le serveur Ethernet, port 80 par défaut pour HTTP
//function to extract decimal part of float
/*long getDecimal(float val)
{
int intPart = int(val);
long decPart = 1000*(val-intPart); //I am multiplying by 1000 assuming that the foat values will have a maximum of 3 decimal places
//Change to match the number of decimal places you need
if(decPart>0)return(decPart); //return the decimal part of float number if it is available
else if(decPart<0)return((-1)*decPart); //if negative, multiply by -1
else if(decPart=0)return(00); //return 0 if decimal part of float number is not available
}*/
unsigned long ping() // déclare une variable de type long non signé appelée time
{
pinMode(ultraSoundSignal, OUTPUT); // Mettre le signal en sortie.
digitalWrite(ultraSoundSignal, LOW); // Envoyer une impulsion faible.
delayMicroseconds(2); // Attendre 2 microsecondes.
digitalWrite(ultraSoundSignal, HIGH); // Envoyer une impulsion élevée.
delayMicroseconds(5); // Attende 5 microsecondes.
digitalWrite(ultraSoundSignal, LOW); // Arrêter.
pinMode(ultraSoundSignal, INPUT); // Mettre le signal en entrée.
digitalWrite(ultraSoundSignal, HIGH); // Activer la résistance d'extraction.
echo = pulseIn(ultraSoundSignal, HIGH); //Écouter l'écho.
ultrasoundValue = echo / 58.138 ;
//Calcule la distance parcourut par l'onde dans le conteneur.
pourcent = (ultrasoundValue*100)/107.7 ; //Calcule le taux de remplisage en %.
return pourcent ;// affiche le résultat.
}
void setup()
{
Serial.begin(9600); //Affichage écran du PC
Ethernet.begin(mac, ip, subnet, gateway); //Démarer la connexion Ethernet et le serveur
//analogRead(CAPTEUR_TEMP_PIN);
pinMode(ultraSoundSignal,OUTPUT); //Inisialisation d'un pin
}
void loop()
{
/*temp = analogRead(CAPTEUR_TEMP_PIN); // lecture du capteur de température //
temperature = (((temp*const_can)*1000)-500)/100; //calcul//*/
if (client.connect(server,80)) { // remplacer par l'adresse IP de votre serveur-ordi
client.print( "GET /conteneur/add.php");
client.print("pour1=");
client.print(pourcent);
client.println( " HTTP/1.1");
client.println( "Host: 10.139.53.129" );
client.println( "Content-Type: application/x-www-form-urlencoded" );
client.println( "Connection: close" );
client.println();
client.println();
client.stop();
Serial.print("donnee ecrite=");
Serial.println(pourcent);
int x = 0;
x = ping();
}
else
{
Serial.println("problème de connection");
}
if (client.connected()) {
client.stop(); // DISCONNECT FROM THE SERVER
}
//delay(3000); // attente en millisecondes
delay(250); //Délai de 1/4 secondes.
}