Problema Sensor JSN-SR04T en placa Shield Ethernet arduino Uno R3

Hola buenas, necesito orientación con respecto a un proyecto en el que estoy en donde tengo un semáforo el cual enciendo mediante reles de 5v conectado al arduino entonces con un sensor JSN-SR04T detecta el paso de un camión en este caso y me saca del loop de espera de que pase algún objeto a x distancia para volver a rojo mi semáforo y apagar el verde a continuación dejo el código en cuestión. (el problema es que el sensor cuando lo conecto a la corriente mediante un cargador de 9v 1a)

#include <SPI.h>
#include <Ethernet.h>
const int trigPin = 8;//cable cafe
const int echoPin = 9;//cable blanco cafe

int RELE2 = 4;			// Rele Rojo                  
int RELE3 = 5;      // Rele Amarillo                
int RELE4 = 6;      // Rele Verde  //  Cable Blanco-Azul

byte mac[] = { xxxxxxx };   //mac address
byte ip[] = {xxxxxxxxxx};  
byte gateway[] = { xxxxxxxxx};
byte subnet[] = { xxxxxxxxxxx};                  //subnet mask
EthernetServer server(80);                             //server port     
String readString;

void setup() {
  Serial.begin(9600);
 
  pinMode(RELE2, OUTPUT);	// pin 2 como salida
  pinMode(RELE3, OUTPUT);	// pin 3 como salida
  pinMode(RELE4, OUTPUT);	// pin 4 como salida
  pinMode(trigPin, OUTPUT); //  Pin de Trigger Sensor Ultrasonico
  pinMode(echoPin, INPUT);  //  Pin de Echo Sensor Ultrasonico
  Ethernet.begin(mac, ip, gateway, subnet);
  server.begin();
  Serial.println();
  Serial.print("WEBSERVER es: ");
  Serial.println(Ethernet.localIP());

  digitalWrite(RELE2, HIGH);	
  digitalWrite(RELE3, LOW);	 
  digitalWrite(RELE4, LOW);	
}

void loop() { 


                  digitalWrite(trigPin, LOW);
                  //delay(3000);
                  delayMicroseconds(2);
                  digitalWrite(trigPin, HIGH);
                  delayMicroseconds(15);
                  digitalWrite(trigPin, LOW);
                  long duration = pulseIn(echoPin, HIGH);
                  long distance = duration * 0.034 / 2;
                  Serial.println(distance);
                  int paso = distance;
                  delay(100);

  EthernetClient client = server.available();       
  if (client) {
    while (client.connected()) {   
      if (client.available()) {
        char c = client.read();
        if (readString.length() < 100) {
          readString += c;
        }
         if (c == '\n') {          
          Serial.println(readString); //print to serial monitor for debuging
          client.println("HTTP/1.1 200 OK"); //send new page
          client.println("Content-Type: text/html");
          client.println();     
          client.println("<HTML>");
          client.println("<HEAD>");
          client.println("<meta name='apple-mobile-web-app-capable' content='yes' />");
          client.println("<meta name='apple-mobile-web-app-status-bar-style' content='black-translucent' />");
          client.println("<link rel='stylesheet' type='text/css' href='https://randomnerdtutorials.com/ethernetcss.css' />");
          client.println("<TITLE>SEMAFORO 4 LUCES</TITLE>");
          client.println("</HEAD>");
          client.println("<BODY>");
          client.println("<H1>Prueba Semaforo 4 Colores</H1>");
          client.println("<hr />");
          client.println("<br />");  
          client.println("<H2>Shield Ethernet</H2>");
          client.println("<br />");  
          client.println("<a href=\"/?C3\"\">AMARILLO EN ESPERA</a>");
          client.println("<a href=\"/?C4\"\">VERDE APROBADO</a>");
          client.println("<a href=\"/?C5\"\">ROJO RECHAZADO</a>");
          client.println("<br />");     
          client.println("<br />"); 
          client.println("</BODY>");
          client.println("</HTML>");
          delay(1);
          client.stop();
         
               
          if (readString.indexOf("?C3") >0){  /////////////////////////////////////////////////////////////////////////////////////enciende rele amarillo
                digitalWrite(RELE2, LOW);	
                digitalWrite(RELE3, HIGH);	
                digitalWrite(RELE4, LOW);
          }
          if (readString.indexOf("?C4") >0){  /////////////////////////////////////////////////////////////////////////////////////Cierra Barrera
                // digitalWrite(RELE1, LOW);//Prende luz RELE 4 Flecha Derecha
                digitalWrite(RELE2, LOW);	
                digitalWrite(RELE3, LOW);	
                digitalWrite(RELE4, HIGH);
                if (paso<800) {
                  delayMicroseconds(10);
                  delay(500);//
                  while(distance>200){//mientras haya algo
                        Serial.println("Esperando Paso de Camión");
                        digitalWrite(trigPin, LOW);
                        delayMicroseconds(2);
                        digitalWrite(trigPin, HIGH);
                        delayMicroseconds(20);
                        digitalWrite(trigPin, LOW);
                        duration = pulseIn(echoPin, HIGH);
                        distance = duration * 0.034 / 2;
                        paso=distance;
                        Serial.println(paso);
                        delay(100);
                  }
                }
                  Serial.println("Camion pasando");
                  Serial.println(paso);
                  delay(100);//
                digitalWrite(RELE4, LOW);
                digitalWrite(RELE2, HIGH);
          }
          if (readString.indexOf("?C5") >0){  /////////////////////////////////////////////////////////////////////////////////////Rojo titilante
                // digitalWrite(RELE1, LOW);//Prende luz RELE 2 Rechazo error
                digitalWrite(RELE3, LOW);	
                digitalWrite(RELE4, LOW);
                digitalWrite(RELE2, LOW);
                  for (int i=0; i<4; i++){
                  digitalWrite(RELE2, HIGH);
                  delay(500);
                  digitalWrite(RELE2, LOW);
                  delay(500);
                  }
                  digitalWrite(RELE2, HIGH);
          }
            readString="";    //limpieza para la proxima lectura
         }
       }
    }
  }
}

He trasladado su tema de una categoría de idioma inglés del foro a la categoría International > Español @theholbaph.

En adelante por favor usar la categoría apropiada a la lengua en que queráis publicar. Esto es importante para el uso responsable del foro, y esta explicado aquí la guía "How to get the best out of this forum".
Este guía contiene mucha información útil. Por favor leer.

De antemano, muchas gracias por cooperar.

Moderador:
Por favor, lee las Normas del foro
Si posteas en el foro en inglés usa idioma inglés para expresarte.
Si escribes en español debes usar el foro Arduino en español.
Edita también tu código/error usando etiquetas de código.
Ve a edición, luego selecciona todo el código que has publicado, lo cortas y click en <CODE/>



Este mensaje lo envío porque tu hilo fue movido del foro en inglés y por eso tenemos una respuesta anterior en ese idioma.
A partir de ahora todos responden en español.

Y la duda es?

no terminaste la consulta!! No revisas lo que escribes?

This topic was automatically closed 180 days after the last reply. New replies are no longer allowed.