Arduino Mega 2560 + ethernet shield; Bouton formulaire

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é les 9500 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 on/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("
");
            client.print("Temperature : ");
            client.print((float)sensorReading*(500.0/1023.0));
            client.print(" C");
            client.println("
"); 
     //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 :slight_smile:

Bonjour,

Attention vous utilisez une Mega donc les broche SPI ne sont pas les mêmes que une Uno (10: SS, 11: MOSI, 12: MISO, 13: SCK). Pour la Arduino mega les broches SPI sont 50: MISO, 51: MOSI, 52: SCK, 53: SS.
Pour ce qui est du reste du code ça semble bon.

Il ne manque pas des > sur la ligne <Form … Et la ligne <input … ?