#include <Servo.h>
#include <ESP8266WiFi.h>
#include <WiFiClient.h>
#include <ESP8266WebServer.h>

// defines pins numbers
const int trigPin = 2;  //D4
const int echoPin = 0;  //D3
// defines variables
long duration;
int distance;

Servo servo;

// Replace with your network credentials
const char* ssid = "botnetcam";
const char* password = "12345678990";
 
ESP8266WebServer server(80);  

String page = "";

void setup(void) {
  page = "<center><a href=\"GO?alfa=5\"><button>5</button></a><a href=\"GO?alfa=15\"><button>15</button></a><a href=\"GO?alfa=45\"><button>45</button></a><a href=\"GO?alfa=90\"><button>90</button></a><a href=\"GO?alfa=180\"><button>180</button></a></center>";
  
  pinMode(trigPin, OUTPUT); 
  pinMode(echoPin, INPUT); 
  servo.attach(14); //D5 

  servo.write(0); //ставим вал под 0 градусов
  delay(1000); //ждем 1 секунду

  WiFi.begin(ssid, password);
 
  while (WiFi.status() != WL_CONNECTED) {
    delay(500);
  }
  
  
  server.on("/", [](){
    server.send(200, "text/html", page);
  });

  server.on("/GO", [](){

  // usage: http://ip/GO?alfa=10
  String sval = server.arg("alfa");
  int intalfa = sval.toInt();
  Serial.print("alfa: ");
  Serial.println(intalfa);

  servo.write(intalfa); //ставим вал под угол intalfa переданный get запросом
  delay(1000); //ждем 2 секунды

  // Измеряем расстояние
  digitalWrite(trigPin, LOW);
  delayMicroseconds(2);
  digitalWrite(trigPin, HIGH);
  delayMicroseconds(10);
  digitalWrite(trigPin, LOW);
  duration = pulseIn(echoPin, HIGH);
  distance= duration*0.034/2;

  server.send(200, "text/html", page+"distance: "+distance+" santimetrov<br>alfa: "+intalfa);
  });
 
   server.begin();
}

void loop(void){
server.handleClient();
}
