Go Down

Topic: Leer valores sensor ultrasónico en servidor arduino (Read 1 time) previous topic - next topic

Anrafel

Hola, buenas tardes a todos.
.
Estoy haciendo algunos experimentos con la tarjeta ethernet de arduino.
Bueno ahora estoy tratando de enviar los valores que arroja (distancias) el sensor ultrasonico HR-SC04 al servidor web creado en mi tarjeta.
El código del sensor ultrasónico es este (y funciona sin inconveniente):
.
Code: [Select]
// HR-SC04 Sensor Ultrasonico
#include <Ultrasonic.h>

Ultrasonic ultrasonic(9,8,17400); // (Trig PIN,Echo PIN)

void setup() {
  Serial.begin(9600);
}
void loop()
{
  Serial.print(ultrasonic.Ranging(CM)); // CM or INC
  Serial.println(" cm" );
  delay(200);
}

.
Este código ya lo he implemnetado (luego pongo una foto del circuito) y funciona como deseo.

Anrafel

Bien, el código anterior arroja los valores medidos (distancias) impresos en el "monitor serial" que posee el ide de arduino.
Bueno como mi intención es mostrar estos valores por la web, he utilizado y modificado el programa del servidor web que viene como ejemplo en el cual muestra en la web los valores que lee de los 6 pines analógicos que tiene la tarjeta arduino.
Bueno agregandole el programa anterior de tal manera que también muestre los valores del ultrasónico por la web, tengo este código de programa:
Code: [Select]
//Mostrar valores del ultrasónico en servidor arduino
#include <SPI.h>
#include <Ethernet.h>
#include <Ultrasonic.h>

Ultrasonic ultrasonic(9,8,17400); // (Trig PIN,Echo PIN)
byte mac[] = { 0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED };
IPAddress ip(192,168,1,4);

EthernetServer server(80);

void setup()
{
  // start the Ethernet connection and the server:
  Serial.begin(9600);
  Ethernet.begin(mac, ip);
  server.begin();
}

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

.
Bueno el detalle es que al armarlo, no funciona; es decir que los valores del sensor ultrasónico no se muestran en el servidor web...
Talvés tenga que agregar algunas funciones de código más, no sé. Espero puedan orientarme al respecto...
Desde ya muchas gracias a todos los que deseen orientarme

Anrafel

Acá les dejo la imagen del montaje que he hecho.
.

.
Bueno el detalle es que no muestra los valores del sensor ultrasónico en el servidor web
Talvés tenga que agregar algunas funciones de código más, no sé. Yo no soy un experto en htlm...Espero puedan orientarme al respecto...  :~

Sergegsx

porque no sacas la lectura del sensor fuera del if client. y cada x loops lo lees y lo guardas en una variable. y cuando se conecte un cliente, entonces muestras el valor de la variable

Go Up