Partage
  • Partager sur Facebook
  • Partager sur Twitter

Arduino Mega 2560 + ethernet shield

bouton formulaire pour requête

    1 juin 2014 à 20:35:49

    Bonsoir,
    Mon but étant de commander une prise avec son émetteur à partir d'une page html héberger par l'Arduino (+ capteur de température) , donc voilà j'ai fait tous ça mais je pense que mes boutons sont faux, je voudrais qu'il déclenche sois la Void bpon ou Void bpoff, (pour le code entier j'ai supprimer la Void bpon et un peu la Void bpoff car je dépassé le nombre maximal de caractères autorisée mais c'est très similaires à la Void bpoff).
     //bouton on prise   
        client.println("<FORM METHOD=GET ACTION=priseon ");
        client.println("<input type=submit value=ON ");
         client.println("</FORM>");
     
     
     
     client.println("<FORM METHOD=GET ACTION=priseon " );
        client.println("<input type=submit value=OFF " );
          client.println("</FORM>");     
            
    

        
    ce que donne le code entier avec Void off et bouton :
    /*
      Serveur Web
     
     Un serveur web simple qui montre la valeur des broches d'entrée analogiques .
     l'aide d'un bouclier Arduino Ethernet Wiznet .
     
     circuit :
     * Blindage Ethernet attaché aux broches 10 , 11 , 12 , 13
     * Entrées analogiques attachés aux broches A0 à A5 (facultatif )
     
     */
    
    
    #include <SPI.h>
    #include <Ethernet.h>
    
    // initialisition des ports arduino pour l'emetteur de la prise et les boutons poussoirs on et off qui seront simuler par un bouton type submit 
    
    int signal = 2;
    int bpon = 3;
    int bpoff = 4;
    
    // Entrez une adresse MAC et l'adresse IP de votre commande ci-dessous.
    // L'adresse IP sera fonction de votre réseau local ==> LAN
    byte mac[] = { 0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED };
    IPAddress ip(192,168,2,177);
    
    // Initialisation de la bibliothèque du serveur Ethernet
    // Avec l'adresse IP et le port que vous souhaitez utiliser
    // ( Le port 80 est par défaut pour HTTP ) :
    EthernetServer server(80);
    
    // La routine d'installation s'exécute une fois lorsque vous appuyez sur reset:
    void setup() {
     // Initialiser l'axe numérique comme une sortie. 
       pinMode (signal, OUTPUT); 
       pinMode (bpon, INPUT_PULLUP); 
       pinMode (bpoff, INPUT_PULLUP); 
    
     // Ouvrir les communications série et attendre pour le port à ouvrir :
      Serial.begin(9600);
       while (!Serial) {
        ;  // Attendre pour le port série pour connecter .
      }
    
    
    // Lancer la connexion Ethernet et le serveur ://////////////////////////////////////////////////////////////////////////////////////////////  
      Ethernet.begin(mac, ip);
      server.begin();
      Serial.print("server is at ");
      Serial.println(Ethernet.localIP());
    }
    
    //on créé une boucle dédié à l'allumage de la prise /////////////////////////////////////////////////////////////////////////////////////////////
    
    ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    //on créé une boucle dédié à éteindre la prise 
    
    void priseoff() {
        digitalWrite(signal, LOW);
      delay(10);
      
      digitalWrite(signal, HIGH);
      delayMicroseconds(300);
      
     
      digitalWrite(signal, LOW);
      delayMicroseconds(250);
      
      digitalWrite(signal, HIGH);
      delayMicroseconds(300);
      
      digitalWrite(signal, LOW);
      delayMicroseconds(1290);
       
      digitalWrite(signal, HIGH);
      delayMicroseconds(300);
      
      digitalWrite(signal, LOW);
      delayMicroseconds(250);
      
      digitalWrite(signal, HIGH);
      delayMicroseconds(300);
      
      digitalWrite(signal, LOW);
      delayMicroseconds(1290);
      
        digitalWrite(signal, HIGH);
      delayMicroseconds(300);
      
      digitalWrite(signal, LOW);
      delayMicroseconds(250);
      
      digitalWrite(signal, HIGH);
      delayMicroseconds(300);
      
      digitalWrite(signal, LOW);
      delayMicroseconds(1290);
      
      digitalWrite(signal, HIGH);
      delayMicroseconds(300);
      
      
        digitalWrite(signal, LOW);
      delayMicroseconds(250);
      
      digitalWrite(signal, HIGH);
      delayMicroseconds(300);
      
      digitalWrite(signal, LOW);
      delayMicroseconds(1290);
      
        digitalWrite(signal, HIGH);
      delayMicroseconds(300);
      
        digitalWrite(signal, LOW);
      delayMicroseconds(250);
      
      digitalWrite(signal, HIGH);
      delayMicroseconds(300);
      
        digitalWrite(signal, LOW);
      delayMicroseconds(250);
      
      digitalWrite(signal, HIGH);
      delayMicroseconds(300);
      
      digitalWrite(signal, LOW);
      delayMicroseconds(1290);
      
      digitalWrite(signal, HIGH);
      delayMicroseconds(300);
      
      digitalWrite(signal, LOW);
      delayMicroseconds(1290);
      
       digitalWrite(signal, HIGH);
      delayMicroseconds(300);
      
        digitalWrite(signal, LOW);
      delayMicroseconds(250);
      
      digitalWrite(signal, HIGH);
      delayMicroseconds(300);
      
      digitalWrite(signal, LOW);
      delayMicroseconds(1290);
      
       digitalWrite(signal, HIGH);
      delayMicroseconds(300);
      
        digitalWrite(signal, LOW);
      delayMicroseconds(250);
      
      digitalWrite(signal, HIGH);
      delayMicroseconds(300);
      
        digitalWrite(signal, LOW);
      delayMicroseconds(250);
      
      digitalWrite(signal, HIGH);
      delayMicroseconds(300);
      
      digitalWrite(signal, LOW);
      delayMicroseconds(1290);
      
       digitalWrite(signal, HIGH);
      delayMicroseconds(300);
      
        digitalWrite(signal, LOW);
      delayMicroseconds(250);
      
      digitalWrite(signal, HIGH);
      delayMicroseconds(300);
      
      digitalWrite(signal, LOW);
      delayMicroseconds(1290);
      
      digitalWrite(signal, HIGH);
      delayMicroseconds(300);
      
       digitalWrite(signal, LOW);
      delayMicroseconds(250);
      
      digitalWrite(signal, HIGH);
      delayMicroseconds(300);
      
      digitalWrite(signal, LOW);
      delayMicroseconds(1290);
      
      digitalWrite(signal, HIGH);
      delayMicroseconds(300);
      
        digitalWrite(signal, LOW);
      delayMicroseconds(250);
      
      digitalWrite(signal, HIGH);
      delayMicroseconds(300);
      
    
    }
    
    
    
    void loop() { 
      // Écoute des clients entrants
      EthernetClient client = server.available();
      if (client) {
        Serial.println("new client");
       // Une requête http se termine par une ligne vide
        boolean currentLineIsBlank = true;
        while (client.connected()) {
          if (client.available()) {
            char c = client.read();
            Serial.write(c);
            // Si vous avez obtenu à la fin de la ligne ( reçu une nouvelle ligne
            // Caractère ) et la ligne est vide , la requête HTTP est terminée,
            // De sorte que vous pouvez envoyer une réponse
            if (c == '\n' && currentLineIsBlank) {
               // Envoyer un en-tête de réponse HTTP standard/////////////////////////////:
              client.println("HTTP/1.1 200 OK");
              client.println("Content-Type: text/html");
              client.println("Connection: close");  // La connexion est fermée après l'achèvement de la réaction:////////////////////////////////////////////////////////////
    	  client.println("Refresh: 3");   // Actualise la page automatiquement toutes les "x" seconde////////////////////////////////////////////////////////////
              client.println();
              client.println("<!DOCTYPE HTML>");
              client.println("<html>");
       // Sortie la valeur de chaque broche d'entrée analogique///////////////////////////////////////////////////////////////////////////////////////////////////////////////
              client.println("Bonjour");
               for (int analogChannel = 0; analogChannel < 1; analogChannel++) {
                int sensorReading = analogRead(analogChannel);
                client.println("<br />");
                client.print("Temperature : ");
                client.print((float)sensorReading*(500.0/1023.0));
                client.print(" C");
                client.println("<br />"); 
         //bouton on prise   
        client.println("<FORM METHOD=GET ACTION=priseon ");
        client.println("<input type=submit value=ON ");
         client.println("</FORM>");
     
     
     
     client.println("<FORM METHOD=GET ACTION=priseon " );
        client.println("<input type=submit value=OFF " );
          client.println("</FORM>");     
            
          
        }
              client.println("</html>");
              break;
            }
            if (c == '\n') {
               // Vous commencez une nouvelle ligne
              currentLineIsBlank = true;
            } 
            else if (c != '\r') {
              // you've gotten a character on the current line
              currentLineIsBlank = false;
            }
          }
        }
         // Vous avez obtenu un caractère sur la ligne courante
        delay(1);
         // Fermeture de la connexion :
        client.stop();
        Serial.println("client disonnected");
      }
    }
    es-ce bon ? car je n'ai pas le moyen de tester, mais je doute pour les formulaires.
    Merci :) 
    • Partager sur Facebook
    • Partager sur Twitter
      2 juin 2014 à 21:10:38

      Déplacé vers Electronique

      • Partager sur Facebook
      • Partager sur Twitter

      Je ne suis plus modérateur, ne me contactez plus pour des demandes, je n'y répondrai pas.

        3 juin 2014 à 1:36:00

        A part priseoff() tu as écris quelque chose toi-même ?

        Car ton priseoff() peut s'optimiser grâce à une boucle...

        Je n'ai plus en tête le fonctionnement de la requête avec le GET mais si tu met "priseon" et que la seule fonction de ton code s'appelle "priseoff" je doute que ca fonctionne ne serait-ce que rien ne s'appelle "priseon" dans ton code.

        Enfin je ne comprend pas les personnes qui demandent si leur code est bon alors qu'elles pensent qu'il est faux. Nous ne sommes pas des debuggers humain bénévoles.

        Vous avez une carte, le shield, et bien balancez le code dans votre arduino et testez !!! Si vous n'avez pas fait de montage à la con avec du 220V, il ne vous arrivera rien et dans le pire du pire des cas avec une bonne grosse loi de murphy vous pèterez une Arduino (mais il faut y aller).

        J'ai mis en route un protototype à 5000€ pour la première fois, bah on a une procédure de première mise en route où l'on met les alimentations au fur et à mesure et on démarre tout progressivement, mais de base on fout le jus dans la carte et le programme.

        Là c'est que du code, il n'y a aucun risque, donc faut pas hésiter à compiler et charger le code...
        • Partager sur Facebook
        • Partager sur Twitter
          3 juin 2014 à 8:22:33

          Surtout : Faut pas hesiter a compiler ! Meme si tu l'envoies pas dans ta carte, ca coute rien, tu peteras rien et au moins ca donneras des codes d'erreurs a ruminer pour ceux qui veulent t'aider !

          • Partager sur Facebook
          • Partager sur Twitter

          Retrouvez moi sur mon blog et ma chaine Youtube !

          Arduino Mega 2560 + ethernet shield

          × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
          × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
          • Editeur
          • Markdown