Arduino + Ethernet Shield + Page web

Bonjour à tous, cela fait un petit moment que je bidouille mon arduino grâce à mon-club-elec.fr
Je souhaiterais faire une "textbox" (je ne suis pas bien sur du nom ^^) la petite barre à gauche du bouton Search en haut de cette page :slight_smile:

J'ai réussi tout ce qui est connexion avec le Shield Ethernet,
Cependant je ne sais pas comment coder cette petite partie, j'ai réussi à insérer des checkbox et autre mais je bloque totalement aprés.
Le but de se programme serait d'envoyer une chaine de caractère à l'arduino pour l'afficher sur un ecran LCD 16*2.

Si quelqu'un à une piste ou un petit bout de sketch pour me lancer ce serait vraiment sympa car je suis dessus depuis 2 jours ^^

Cordialement,
Trigger

[EDIT] je pensais que certaines personnes avaient déjà tenté l'experience ...

J'ai trouvé l'erreur pour afficher le label et la textbox, voici le code :

client.println(F("<label for="chaine">Chaine : <input type="text" name="chaine" id="chaine" />"));
client.println(F("<INPUT type="submit" value="Valider chaine">"));

En espérant que quelqu'un puisse aider pour la récupération de la chaine

Bonjour,

Cette partie nécessite des compétences en langage HTML (c'est un langage qui s'exécute coté client, avec ton navigateur web)
Pour afficher un "textbox", comme tu dis,c'est simple, ce qu'y l'ai moins, c'est d'exploiter les données ; car normalement, il faut réaliser un formulaire en HTML avec des balises ; les champs du formulaire sont ensuite envoyés au serveur en "GET" ou "POST".

Je te conseil "le site du zero" pour tout ce qui est gestion des formulaire en HTML.

bonjour,
qui dit input dit formulaire avec method POST ou GET

en html ca donne ceci

<form method="POST" action="">
<input type="checkbox" name="option1" value="toto"> toto

<input type="checkbox" name="option2" value="titi" checked> titi

<input type="submit" value="envoyer">
</form>

Bonjour et merci d'avoir preté attention à mon post.

@jmatgou : oui je me suis rendu compte de cela et je effectivement sur le site du zéro pour ce qui est du HTML

@infobarquee : Merci pour ton exemple, cependant j'ai un petit bout de code que j'ai récupérer sur mon-club-elec et dont je m'inspire beaucoup :

client.println(F("<form method="post" action="http://192.168.1.10">));
client.println(F("<p>));
client.println(F("<label for="chaine">Chaine</label> : <input type="text" name="chaine" id="chaine" />));
client.println(F("<INPUT type="submit" value="Valider chaine">)); 
client.println(F("</p>));
client.println(F("</form>));

La page web s'affiche correctement avec la textbox et le label cependant je n'ai aucune idée de comment récuperer la chaine saisie dans la textbox, une piste ou une idée serait le bien venu :slight_smile:

Amicalement,
Trigger

essaye avec un GET au lieu de POST, pas la peine de mettre l'ip non plus.

client.println(F("<form method="get" action="">));
client.println(F("<p>));
client.println(F("<label for="chaine">Chaine</label> : <input type="text" name="chaine" id="chaine" />));
client.println(F("<INPUT type="submit" value="Valider chaine">)); 
client.println(F("</p>));
client.println(F("</form>));
      if (client.available()) {
        char c = client.read();
        if (readString.length() < 100) 
        {
          //store characters to string 
          readString += c; //replaces readString.append(c);
        }  
        //output chars to serial port
        Serial.print(c);
 //if HTTP request has ended
        if (c == '\n') {
          if (readString.indexOf("?") <0)
          {
            //on fait rien
          }
          }
          else
            //lets check if LED should be lighted
            if(readString.indexOf('chaine=test"))//test est la chaine rentrée par exemple
            {
//on fait quelque chose
}

Yeah merci beaucoup :slight_smile:

Cependant il semble que quelque chose m’échappe, je tente de rajouter un morceau de code a celui que j'ai récupérer sur mon-club-elec ( au passage grand bravo pour les tutos de cette mine d'or).

Du coup sur la page j'ai deux boutons mais lorsque je clique sur l'un l'autre devient inexistant, il a des astuces pour lier les boutons ?

Amicalement

Salut salut,
Merci à vous pour les réponses.

Je reviens pour dire que j'arrive bien à déterminer si il y eu saisie de texte ou non et faire une action en suivant.
Cependant je n'arrive pas à récupérer la chaine de caractères (pour ensuite l'afficher sur un LCd) quelqu'un à une idée ?

Bonjour,
Je vais avoir le même problème que toi.
Je participe à la gestation du projet de ce topic : http://arduino.cc/forum/index.php/topic,80422.0.html
Je vais avoir besoin de transférer des données depuis le web (ou au moins le réseau local dans un premier temps) qui correspondent à des plages horaires : heures et minutes de début de plage horaire et heures et minutes de fin de plage horaire.
Une (ou des) sortie(s) de l’Arduino devront être activées durant la plage horaire.
Je vais commencer d’ici peu à chercher des solutions et faire des essais, et ton travail va bien m’aider, merci.
Je me permettrai de te recontacter, d’ici quelques temps, lorsque j’en serai là, et que j’aurai très certainement des difficultés.

Salut salut,

Content que tu trouves des inos utiles ici, cependant si quelqu'un à une piste pour extraire la chaine de caractère saisie dans la textbox je suis preneur parce que je trottine depuis deux jours ....

Amicalement

Bonsoir tout le monde !!!

Après plusieurs heures à chercher et manipuler les chaines j'ai bricolé une solution qui fonctionne !

Si ça intéresse du monde (bon ok c'est vraiment du bricolage ^^ ) :

  • Il faut chercher les symboles qui sont aux extrémités de la chaine
  • Couper entre ces bornes
  • Et magie on récupère la chaine
  • Par contre attention à la saisie de plusieurs mots à la suite ( cf code)
    En gros ça donne un truc comme ça :
       int debutChaine= chaineRecue.indexOf('='); // cherche debut
       int finChaine= chaineRecue.indexOf(' ',6); // cherche fin 

       maChaine = chaineRecue.substring(debutChaine+1,finChaine); // la chaine se trouve entre 
       maChaineCorrige = maChaine.replace("+", " "); // les espaces sont des + dans l'url

En espérant que ça aidera du monde ++