ESP8266 ARDUINO CON WIFI



CARACTERÍSTICAS DEL ESP8266


Ultrasonidos Sketch


const int TriggerPin = 12;   // Asigna el pin de disparo
  const int EchoPin = 13;      // Asignamos el pin de escucha

  long duracion, distanciaCm;           // Iniciamos variables en 0

  void setup() {
     Serial.begin(9600);  // Iniciamos la comunicación serial
     pinMode(TriggerPin, OUTPUT); // El disparo es de salida
     pinMode(EchoPin, INPUT);     // La escucha es de entrada
  }

  void loop() {
     int cm = ping(TriggerPin, EchoPin);
     Serial.print("Distancia: "); // Imprime el texto
     Serial.println(cm);          // 
     delay(1000);                 // Espera 1 segundo para una nueva lectura
  }

  int ping(int TriggerPin, int EchoPin) { // Función ping, parámetros disparo/escucha

     digitalWrite(TriggerPin, LOW);   // Apagamos el pulso(LOW)
     delayMicroseconds(4);            // Esperamos 4 microsegundos
     digitalWrite(TriggerPin, HIGH);  // Encendemos el pulso (HIGH)
     delayMicroseconds(10);           // Esperamos 10 microsegundos
     digitalWrite(TriggerPin, LOW);   // Apagamos el pulso

     duracion = pulseIn(EchoPin, HIGH);  //medimos el tiempo entre el disparo y la escucha pulsos

     distanciaCm = duracion * 10 / 292/ 2;   //convertimos a distancia, en cm
     return distanciaCm;
  }

1 - Creamos 2 variables uno para el pin "disparador" y otro para pin de "escucha" llamados TriggerPin y EchoPin , respectivamente. El pin de disparo lo conectamos al Pin digital 12 , y los pin de escucha lo conectamos al Pin digital 13.


const int TriggerPin = 12;   // Asigna el pin de disparo
const int EchoPin = 13;      // Asignamos el pin de escucha

2 - También creamos 2 variables de tipo long, "duracion" y "distanciaCm". La variable de duración es el tiempo entre la emisión (disparo) y la recepción (escucha) del pulso. La variable distanciaCm guardará la distancia en centímetros.


long duracion, distanciaCm;           // Iniciamos variables en 0

3 - En void setup(), inicializamos el puerto serie a una velocidad en baudios de 9600 y configuramos el TriggerPin como salida y el EchoPin como entrada.


void setup() {
   Serial.begin(9600);  // Iniciamos la comunicación serial
   pinMode(TriggerPin, OUTPUT); // El disparo es de salida
   pinMode(EchoPin, INPUT);     // La escucha es de entrada
}

4 - En void loop(), disparamos el sensor enviando un pulso HIGH de 10 microsegundos. Pero, antes de eso, le damos un pulso LOW corto para asegurarse de obtener un pulso ALTO limpio


int ping(int TriggerPin, int EchoPin) { // Función ping, parámetros disparo/escucha

   digitalWrite(TriggerPin, LOW);   // Apagamos el pulso(LOW)
   delayMicroseconds(4);            // Esperamos 4 microsegundos
   digitalWrite(TriggerPin, HIGH);  // Encendemos el pulso (HIGH)
   delayMicroseconds(10);           // Esperamos 10 microsegundos
   digitalWrite(TriggerPin, LOW);   // Apagamos el pulso

digitalWrite()


5 - Escribe un valor encedido "HIGH" (5 voltios) o apagado "LOW" (0 voltios) un pin digital.

Ahora ya podemos escuchar el disparo del sensor: un pulso HIGH cuya duración es en microsegundos el tiempo entre el disparo hasta la escucha el pulso.


duracion = pulseIn(EchoPin, HIGH);  //medimos el tiempo entre el disparo y la escucha pulsos

pulseIn()


6 - Lee un pulso (ya sea HIGH o LOW) en un pin. Por ejemplo, si el valor es HIGH, pulseIn() espera a que el pin pase de LOW a HIGH, comienza a cronometrar, luego espera a que el pin se vaya LOW y detiene el cronometraje. Devuelve la duración del pulso en microsegundos o se da por vencido y devuelve 0 si no se recibió un pulso completo dentro del tiempo de espera. El tiempo de esta función se ha determinado empíricamente y probablemente mostrará errores en pulsos más largos. Funciona en pulsos de 10 microsegundos a 3 minutos de duración.

7 - Finalmente, solo necesitamos convertir la duración en una distancia. Podemos calcular la distancia usando la siguiente fórmula (La velocidad del sonido es: 343 m/s).




distanciaCm = duracion * 10 / 292/ 2;   //convertimos a distancia, en cm
   return distanciaCm;
}