Leer valores sensor ultrasónico en servidor arduino

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):
.

// 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.

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:

//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("
");
          // 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("
");
          }
          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

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... :~

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

Hola Anrafel,

yo estoy realizando un proyecto similar, el problema no esta en el servidor web, al conectar el shield de Ethernet (sin el código de este solo el del ultrasonido) el monitor serial deja de mostrar los datos del sensor de distancia...

Osea, cuando uso el Arduino UNO solo para medir la distancia el sensor de ultrasonido arroja bien la distancia, al momento de colocar el shiel de Ethernet deja de funcionar correctamente.

Tuve la precaución de no utilizar los pines 13,12,11,10 y 4 que podrían ser causa del error ya que son los que utiliza el shield de Etheernet para comunicarse con el Arduino, pero aún así sigue fallando.

Pudiste solucionar este tema?

Saludos!

te aconsejo que uses la lectura del sensor con una variable... si no, yo no he tenido mas que problemas, ya que si lo estas leyendo todo el rato te puede dar datos muy dispares, si lo lees cada 5 segundos y lo metes en una variable, tendrás unos valores muy reales y un código muy estable..
:wink: