Go Down

Topic: Fusionner deux programmes (Read 137 times) previous topic - next topic

Harrysky

Bonjour, je suis en projet de bac STI2D et je dois envoyer des données capter via un shield meteo vers internet ave une carte ethernet.

J'ai 2 programmes qui marchent bien chacun de leurs cotés :


PROGRAMMES DES CAPTEURS

C'est le deuxieme programmes en partant du haut de cette page:

https://learn.sparkfun.com/tutorials/arduino-weather-shield-hookup-guide-v12?_ga=2.144108341.1246940947.1558522715-331646293.1542788229



Voici le code pour ethernet :

Code: [Select]
#include <SPI.h>
#include <EthernetV2_0.h>
#define W5200_CS 10
#define SDCARD_CS 4


byte mac[] = {0x90, 0xA2, 0xDA, 0x0D, 0x05, 0xEF};
byte ip[] = {192,168,1,103};
byte serv[] = {192, 168, 1,103} ; //Enter the IPv4 address
int val ;
float tempf;
EthernetClient cliente;


String readString;
EthernetServer server(80);


void setup()
{

   Serial.begin(9600);


   pinMode(SDCARD_CS, OUTPUT);
  digitalWrite(SDCARD_CS, HIGH);

 
  Ethernet.begin(mac, ip);
  server.begin();
  Serial.println(Ethernet.localIP());






 
}


void loop()
{
 
  EthernetClient client = server.available();
  if (client)
  {
    while (client.connected())
    {
      if (client.available())
      {
        char c = client.read();
        
        if (readString.length() < 100)
        {
          readString += c;
        }

       if (c == '\n')
        {
          
          Serial.println(readString); //print to serial monitor for debuging
          client.println("HTTP/1.1 200 OK"); //send new page
          client.println("Content-Type: text/html");
          client.println();
          client.println("<HTML>");
          client.println("<HEAD>");
          client.println("<TITLE>Temperature</TITLE>");
          client.println("<meta http-equiv=""refresh"" content=""5"">");
          client.println("</HEAD>");  
          client.println("<BODY style=""background-color:#C0FFF7;"">");
          client.println("<H1>Temperature</H1>");
          client.println("<H1>");
          client.println(tempf);
          client.println("</H1>");
          client.println("<hr />");
          client.println("<br />");
          client.println("</BODY>");
          client.println("</HTML>");
          
        
          client.stop();

          readString = "";
        }
      }
      delay(1);
      Serial.println("client disonnected");
    }
    client.stop();
  }

/* if (cliente.connect(serv, 80)) { //Connecting at the IP address and port we saved before
Serial.println("connected");
cliente.print("GET /ethernet/data.php?"); //Connecting and Sending values to database
cliente.print("temperature=");
cliente.print(tempf);
//Printing the values on the serial monitor
 }*/

else {
// if you didn't get a connection to the server:
Serial.println("connection failed");
}
delay(5000);


  
 
if (Serial.available() > 0) {
          
 val = Serial.read();
 tempf = val;
 tempf = tempf/10;
  Serial.println(tempf);
  delay(50);}

Serial.print("Temperature= ");
Serial.println(tempf);
      }
  
  
  


Pouvez vous m'aider a les fusionner afin que je puisse envoyer les données sur internet.
Merci

lesept

Pour combiner deux sketches, il existe des tutos, par exemple celui-ci.

La recette est simple mais peut nécessiter des étapes supplémentaires pour que le code final marche bien. Dans ton cas, je pense que ça devrait aller tout seul. On va supposer que tu insères le code de sparkfun dans ton code Ethernet.

  • D'abord, copier les déclarations de variables globales dans l'entête de ton code
  • Ensuite, insérer les instructions du setup sparkfun dans ton setup, et enlever les éventuels doublons. Vérifier que c'est cohérent (par exemple qu'il n'y a pas deux choses différentes branchées sur la même pin)
  • Ensuite, copier les fonctions de sparkfun (sauf la loop) dans ton fichier ino
  • Enfin, copier la loop de sparkfun comme une fonction dans ton fichier, en lui donnant un autre nom (par exemple getTemperature).
La difficulté réside dans cette dernière étape. Si tout passe par des variables globales, tu n'as rien à faire, si ce n'est mettre dans ta loop au bon endroit un appel vers cette fonction. Sinon, il faut lui passer les bons arguments, donc il faut réfléchir aux variables dont elle a besoin pour fonctionner.

Commence déjà par les 4 premières étapes pour voir si ça compile et si ça s'exécute coorectement.
A force d'essayer on finit par réussir... Donc, plus ça rate, plus on a de chances que ça marche (proverbe Sharduinok).

Go Up