#include <Arduino.h>
#include <WiFi.h>
#include <WiFiMulti.h>
#include <HTTPClient.h>

WiFiMulti wifiMulti;

const int TRIG = 25;
const int ECHO = 32;
const int DISTANCE_THRESHOLD = 500;  //centimeters
float duration_us, distance_cm;

void setup() {
  // put your setup code here, to run once:
    Serial.begin(115200);
    pinMode(TRIG, OUTPUT);
    pinMode(ECHO, INPUT);

    for(uint8_t t = 4; t > 0; t--){
      Serial.printf("[SETUP] WAIT %d...\n", t);
      Serial.flush();
      delay(1000);
    }
    wifiMulti.addAP("OSU_Access", "");
    
}


void loop() {
  if((wifiMulti.run() == WL_CONNECTED)) {  //wait for WIFI connection
    HTTPClient http;
    http.begin("https://web.engr.oregonstate.edu/~howarsky/ENGR103/FinalProject.php");
    http.addHeader ("Content-Type", "application/x-www-form-urlencoded");
    String myString = "sonar45";

    
    digitalWrite(TRIG, HIGH);
    delay(10);
    digitalWrite(TRIG, LOW);

    duration_us = pulseIn(ECHO, HIGH);
    distance_cm = 0.017 * duration_us;

    if(distance_cm < DISTANCE_THRESHOLD){
      
   Serial.print("distance:");
   Serial.print(distance_cm);
   Serial.println("cm");
   delay(500);
    }
    
    myString = "sonar=";
    myString = myString + distance_cm;
    Serial.print("POST data to send: ");
    Serial.println(myString);
    int httpCode = http.POST(myString);
    if(httpCode > 0) {
      if(httpCode == HTTP_CODE_OK) {
        String payload = http.getString();
        Serial.println(payload);
      } else{
        Serial.printf("[HTTP] GET... code: %d\n", httpCode);
      }
      http.end();
    }
    delay(5000);
  }
  else{
    Serial.println("not connected :(");
    }


    
  
   
}
