Show Posts
Pages: [1]
1  International / Français / Problème d'affichage html pour un projet on: May 06, 2013, 05:09:21 am
Bonjour, je suis débutant dans la programmation arduino, je cherche a fabriquer un "chasse pigeon". C'est a dire un appareil capable d'émettre un son d'une fréquence aléatoire dans une plage donné pour effrayer ces animaux sans leur faire de mal. De plus, je cherche a ce que ce système soit pilotable par internet.
Ce système est composé d'une carte Mega, d'une horloge interne, d'un shield ethernet.

Le code est bien avancé mais lors de nos tests nous ne parvenons pas à afficher la page html via le navigateur Firefox, alors que sur le moniteur Arduino il est indiqué qu'un nouveau client est connecté.
Si au passage vous repérez des erreurs je vous en serais reconnaissant. Je précise que le code html a été vérifié plusieurs fois et ne présente apparemment pas d'erreurs (apparemment).
Merci d'avance pour votre aide.

Voici le code complet :

Code:
#include <String.h>
#include <SPI.h>
#include <Ethernet.h>
#include <Server.h>
#include <Wire.h>
#include <Client.h>
#define MaxHeaderLenght 16


byte mac[] = { 0x90, 0xA2, 0xDA, 0x00, 0x9D, 0xFC };
byte ip[] = {169,254,60,96};
byte subnet[] = {255, 255, 0, 0};
byte gateway[] = {169,254,60,96};
EthernetServer server(80);



byte h=0;
byte d=0;
byte f=0;
byte t=0;

 
 
String HttpHeader = String(16);




void setup() {
HttpHeader="";
  pinMode (A7,OUTPUT);
  Serial.begin(9600);
  Ethernet.begin(mac, ip, subnet, gateway);
  server.begin();
  Serial.print("Le serveur est a l'adresse: ");
  Serial.println(Ethernet.localIP());

}



void loop() {
 
               
  EthernetClient client = server.available();
       if (client) {
       Serial.println("new client");
 
        boolean currentLineIsBlank = true;
        while (client.connected()) {
        if (client.available()) {
        char c= client.read();
       
          if (HttpHeader.length() <16)    {     
            HttpHeader = HttpHeader + c;
          }
         
            if (c=='\n'&& currentLineIsBlank) {
              Serial.println(HttpHeader); }
             
             
             
             
              if (HttpHeader.indexOf("h=0") > 0) { (h=0); }
                else if (HttpHeader.indexOf("h=1") > 0) { (h=1); }
                   else if (HttpHeader.indexOf("h=2") > 0) { (h=2); }
                      else if (HttpHeader.indexOf("h=3") > 0) { (h=3); }
                         else if (HttpHeader.indexOf("h=4") > 0) { (h=4); }
                            else if (HttpHeader.indexOf("h=5") > 0) { (h=5); }
                               else if (HttpHeader.indexOf("h=6") > 0) { (h=6); }
                                  else if (HttpHeader.indexOf("h=7") > 0) { (h=7); }
                                     else if (HttpHeader.indexOf("h=8") > 0) { (h=8); }
                                        else if (HttpHeader.indexOf("h=9") > 0) { (h=9); }
                                           else if (HttpHeader.indexOf("h=10") > 0) { (h=10); }
                                              else if (HttpHeader.indexOf("h=11") > 0) { (h=11); }
                                                 else if (HttpHeader.indexOf("h=12") > 0) { (h=12); }
                                                    else if (HttpHeader.indexOf("h=13") > 0) { (h=13); }
                                                       else if (HttpHeader.indexOf("h=14") > 0) { (h=14); }
                                                          else if (HttpHeader.indexOf("h=15") > 0) { (h=15); }
                                                            else if (HttpHeader.indexOf("h=16") > 0) { (h=16); }
                                                               else if (HttpHeader.indexOf("h=17") > 0) { (h=17); }
                                                                  else if (HttpHeader.indexOf("h=18") > 0) { (h=18); }
                                                                     else if (HttpHeader.indexOf("h=19") > 0) { (h=19); }
                                                                        else if (HttpHeader.indexOf("h=20") > 0) { (h=20); }
                                                                           else if (HttpHeader.indexOf("h=21") > 0) { (h=21); }
                                                                              else if (HttpHeader.indexOf("h=22") > 0) { (h=22); }
                                                                                 else if (HttpHeader.indexOf("h=23") > 0) { (h=23); }
                                                                                   
       
   
       
           
             if (HttpHeader.indexOf("d=15") > 0) { (d=15); }
                else if (HttpHeader.indexOf("d=30") > 0) { (d=30); }
                  else if (HttpHeader.indexOf("d=45") > 0) { (d=45); }
                    else if (HttpHeader.indexOf("d=59") > 0) { (d=59); }
                   
       
   
          client.println("HTTP/1.1 200 OK");
          client.println("<!DOCTYPE HTML>");
          client.println("Content-Type: text/html");
          client.println("<HTML>");
          client.println("<HEAD><title>Configuration du chasse nuisibles </title></HEAD>");
          client.println("<BODY>");
          client.println("<h3>Panneau de configuration du chasse nuisibles</h3>");
          client.println("<FORM ACTION='sitechassenuisible.html' METHOD='GET'>");
          client.println("<P>Heure de debut :");
          client.println("<SELECT NAME='h' multiple size=1>");
          client.println("<OPTION VALUE='00'>00:00");
          client.println("<OPTION VALUE='01'>01:00");
          client.println("<OPTION VALUE='02'>02:00");
          client.println("<OPTION VALUE='03'>03:00");
          client.println("<OPTION VALUE='04'>04:00");
          client.println("<OPTION VALUE='05'>05:00");
          client.println("<OPTION VALUE='06'>06:00");
          client.println("<OPTION VALUE='07'>07:00");
          client.println("<OPTION VALUE='08'>08:00");
          client.println("<OPTION VALUE='09'>09:00");
          client.println("<OPTION VALUE='10'>10:00");
          client.println("<OPTION VALUE='11'>11:00");
          client.println("<OPTION VALUE='12'>12:00");
          client.println("<OPTION VALUE='13'>13:00");
          client.println("<OPTION VALUE='14'>14:00");
          client.println("<OPTION VALUE='15'>15:00");
          client.println("<OPTION VALUE='17'>17:00");
          client.println("<OPTION VALUE='18'>18:00");
          client.println("<OPTION VALUE='19'>19:00");
          client.println("<OPTION VALUE='20'>20:00");
          client.println("<OPTION VALUE='21'>21:00");
          client.println("<OPTION VALUE='22'>22:00");
          client.println("<OPTION VALUE='23'>23:00");
          client.println("</SELECT> </P>");
          client.println("<P>Duree :");
          client.println("<SELECT NAME='d' multiple size=1>");
          client.println("<OPTION VALUE='0'>00:00");
          client.println("<OPTION VALUE='15'>00:15");
          client.println("<OPTION VALUE='30'>00:30");
          client.println("<OPTION VALUE='45'>00:45");
          client.println("<OPTION VALUE='59'>00:59");
          client.println("</SELECT> </P>");
          client.println("<INPUT TYPE='submit' VALUE='Envoyer la requete'>");
          client.println("</FORM>");
          client.println("</BODY>");
          client.println("</HTML>");
         
         

      }
   
            Wire.beginTransmission(0x68);
          Wire.write(0);
          Wire.endTransmission();
       

         
          Wire.requestFrom(0x68, 7);  // demander si tout est nécessaire
          byte secs = Wire.read();
          byte mins = Wire.read();
          byte hrs = Wire.read();
          byte jour = Wire.read();
          byte date = Wire.read();
          byte mois = Wire.read();
          byte annee = Wire.read();
         
          byte t = hrs*60 + mins ;
          while ( t > h*60 && t < h*60 + d ) {
            byte f = random(200,15000);
            byte l = random(60000,180000);
            tone(A7, f, l);
            Wire.beginTransmission(0x68);
            Wire.write(0);
            Wire.endTransmission();
       
            Wire.requestFrom(0x68, 7);
            byte secs = Wire.read();
            byte mins = Wire.read();
            byte hrs = Wire.read();
            byte jour = Wire.read();
            byte date = Wire.read();
            byte mois = Wire.read();
            byte annee = Wire.read();
            byte t = hrs*60 + mins ;
             }




}
delay(1);
    // close the connection:
    client.stop();
    Serial.println("client disonnected");
  }}
2  International / Français / Projet Chasse Nuisibles on: January 31, 2013, 03:12:47 am
Bonjour,

Je suis actuellement en terminale S-SI et dans le cadre de mes PPE je dois réaliser un chasse nuisible commandé à distance(via internet).

Le projet avance plutot bien mais je bloque à un endroit.

Avant d'exposer le problème je vais vous présenter un petit peu le fonctionnement.

On a en entrée un potentionmètre. Ce potentiomètre permet de chasser 2 types de nuisibles : en fonction de la position du potentiomètre (0-2.5V,2.5-5V) on chassera un seul type de nuisible. Il faut noter que les 2 types de nuisibles (pigeons et rongeurs) ne réagissent pas aux mêmes bandes de fréquances sonores. Les pigeons entendent sur 10Hz-10KHz, et les rongeurs sur 25KHz-65KHz. On utilise donc 2 haut parleurs différents.

Petite difficulté : la fréquence de sortie (valeur aléatoire comprise dans la bande de fréquence correspondante au nuisible ) doit varier toutes les 5 à 10 minutes (valeur aléatoire elle aussi).
Voila pour les petites infos, on utlise une carte Mega(pas encore reçue).

On en est encore à l'étape de l'algorigramme.

Le potentiomètre permet de selectionner le type de nuisible.
Une fois selectionné, on va générer une valeur aléatoire entre 5 et 10 minutes affectée à "d".
On génère également une valeur entre 0.01 et 10 pour le pigeon, ce qui correspondra à la valeur de la fréquence de sortie.
Comme nous allons integrer une horloge temps réelle dans le programme, on va capturer le temps "t" et l'affecter à "l" :
Tant que "t" ne sera pas égal à "l"+"d", on continue d'émettre.
Quand t>l+d, on regarde si le potentiomèrtre n'a pas bougé, et on recommence avec de nouvelles valeurs aléatoires.

Le problème, c'est que nous n'avons aucune idée de la manière dont nous allons pouvoir exploiter cette valeur comprise entre 0.01 et 10 (appelée f)pour la transformer en la fréquence émise par le haut parleur (en KHz).

Nous n'avons que très peu de conaissances en électronique et le prof souhaite que nous trouvions des solutions par nos propres moyens. Après une semaine de recherche j'apelle à l'aide !
Nous avions pensé à affecter à la tension du HP une valeur du style <<  a sin 45000*f*t >>, la valeur "45000" faisant varier l'écart crète à crète et "a" faisant varier l'amplitude.

On obtiendrait donc un signal périodique mais ca n'est que théorique et je n'en suis vraiment pas sur !

J'espère ne pas avoir été trop ambigüe dans mes explications. Cordialement
Pages: [1]