Go Down

Topic: [Question] .c et .h ?? (Read 1 time) previous topic - next topic

Ak-47

Bonjour à tous.

Je commence à avoir un sketch où c'est un peu le bordel et je voudrais savoir si il est possible de mettre ses fonctions dans un autre fichier ?

Bon journée,
Amicalement,
Ak-47

skywodd

Bonjour,


Je commence à avoir un sketch où c'est un peu le bordel et je voudrais savoir si il est possible de mettre ses fonctions dans un autre fichier ?

Oui tu peut sans probléme ;)

Au choix :
- Tu met tes fonctions dans un .c ou .cpp sans oublier de faire #include <Arduino.h> ou #include <WProgram.h> (suivant si tu est sous arduino 1.0 ou 002x) au debut du code, et tu met tout les prototypes de tes fonctions dans un .h, que tu inclut dans ton sketch principal.
- Tu crée un nouveaux .pde (ou .ino) dans le même dossier que ton 1er skecth et tu relance l'ide, normalement tu aura un nouvel onglet d'ouvert ;)
Des news, des tutos et plein de bonnes choses sur http://skyduino.wordpress.com !

Ak-47

Merci beaucoup pour ta réponse :)

Comme je suis pas super calé en info j'ai choisis la seconde solution ^^
Cependant j'ai un petit soucis pour l'affichage de mes pages web :(

J'utilise ce code :

Code: [Select]
          switch(page){
          case 0: // affichage de la page Menu     
            Affichage_page_menu();
            break; // fin de case =0


et ma fonction Affichage_page_menu() ressemble à ça :

Code: [Select]
client.println(F("<body style=\"background : url(http://pasvyro9.jpg) fixed no-repeat;\">"));
          client.println(F("<center>"));
          client.println(F("<FORM method=\"get\" action=/>"));
          client.println(F("<p>"));
          client.println(F("<input src=\"http://i45.servimg.com/u/1.png\" type=\"image\" name=\"one\" >"));
          client.println(F("</p>"));
          client.println(F("</FORM>"));


le debuggeur me dit que client n'est pas définie mais si je rajoute :
Code: [Select]

Client client = serveurHTTP.available();


au début de ma fonction ça compile mais plus rien ne marche ...

Une idée ?
Amicalement,
Ak-47

Snootlab

Bonjour,

Il serait bien que tu nous donnes un petit peu plus d'informations.
Poste tes codes, dis nous si tu es en version 022 ou 1.0, etc etc :)

-----
Stéphane.
- Distributeur officiel Arduino - France

Ak-47

Bonjour

@Stephan

Mon code est assez simple je souhaite afficher des pages web dans mon navigateur :

Code: [Select]
#include <SPI.h>
#include <Ethernet.h>

byte mac[] = { 0x90, 0xA2, 0xDA, 0x00, 0x4D, 0x7F };
byte ip[] = { 192, 168, 1, 10 };
byte passerelle[] = { 192,168,1,254 };
byte masque[] = { 255, 255, 255, 0 };
Server server(80);

void setup()
{
 delay(100);  // allow chip to hardware reset
 Ethernet.begin(mac, ip, passerelle, masque);
 server.begin();
}

void loop()
{
 Client client = server.available();
 if (client) {
   // an http request ends with a blank line
   boolean current_line_is_blank = true;
   while (client.connected()) {
     if (client.available()) {
       char c = client.read();
       // if we've gotten to the end of the line (received a newline
       // character) and the line is blank, the http request has ended,
       // so we can send a reply
       if (c == '\n' && current_line_is_blank) {
         // send a standard http response header
         client.println("HTTP/1.1 200 OK");
         client.println("Content-Type: text/html");
         client.println();
         
         // output the value of each analog input pin
         for (int i = 0; i < 6; i++) {
           client.print("analog input ");
           client.print(i);
           client.print(" is ");
           client.print(analogRead(i));
           client.println("<br />");
         }
         break;
       }
       if (c == '\n') {
         // we're starting a new line
         current_line_is_blank = true;
       } else if (c != '\r') {
         // we've gotten a character on the current line
         current_line_is_blank = false;
       }
     }
   }
   // give the web browser time to receive the data
   delay(1);
   client.stop();
 }
}


Et je souahiterais par exemple faire une fonction Affichag_page()
Code: [Select]
 
Affichage_page(){
        client.print("analog input ");
           client.print(i);
           client.print(" is ");
           client.print(analogRead(i));
           client.println("<br />");
}

Qui se trouve dans un autre .pde (merci skywodd)

Mais il me redemande de déclarer l'objet client dans la fonction et si je le fais ça compile mais ne fonctionne plus :(

Ak-47

Tout bête il faut juste placer le client en paramètre de la fonction ^^

Si ça peut aider quelqu'un :

Code: [Select]
          switch(page){
          case 0: // affichage de la page Menu     
            Affichage_page_menu(client);
            break; // fin de case =0


et

Code: [Select]
void Affichage_page_menu(Client client)

Bon journée tout le monde !
Amicalement,
AK-47

Go Up