#include <Arduino.h>
#include <WiFi.h>
#include <WiFiMulti.h>
#include <HTTPClient.h>

WiFiMulti wifiMulti;

#include <Wire.h>
int16_t X,Y,Z;

void setup() {
 // put your setup code here, to run once:
 
 pinMode(33,OUTPUT);//RED
 pinMode(32,OUTPUT);//GREEN
 pinMode(25,OUTPUT);//BLUE
 Wire.begin(26,27,400000);
 Wire.beginTransmission(0x68);
 Wire.write(0x6B);
 Wire.write(0);
 Wire.endTransmission(true);
 Serial.begin(115200);
 delay(500);
 Serial.println("Program Start");

 for(uint8_t t = 4; t > 0; t--) {
   Serial.printf("[Setup] WAIT %d…\n", t);
    Serial.flush();
    delay(1000);
  }
  wifiMulti.addAP("OSU_Secure", "NomoBeaver2744");

}

 int16_t myArray[100];
 float average1 = 0;
 float average2 = 0;
 float average3 = 0;
 
void loop() {
 // put your main code here, to run repeatedly:
if((wifiMulti.run() == WL_CONNECTED)) { // wait for WiFi connection
    HTTPClient http; // Creates an HTTPClient object to be used
    //Begins a request we will eventually POST
    http.begin("https://web.engr.oregonstate.edu/~morrisno/Assignment3.php");
    //Setup this request to look like an HTML form
    http.addHeader("Content-Type", "application/x-www-form-urlencoded");
    //Data to send with HTTP POST
    String httpRequestData = "sonar=45 && temp=0";
    //Send HTTP POST request
    int httpCode = http.POST(httpRequestData);
    if(httpCode > 0) { //Did we get a valid response?
      if(httpCode == HTTP_CODE_OK) { //The POST happened correctly
        String payload = http.getString();
        Serial.println(payload);
      } else {
        Serial.printf("[HTTP] GET… code: %d\n", httpCode);
      }

    }
    http.end(); // End this request.
  }
  delay(5000);



 
 for(int i = 0; i < 100; i++){
 Wire.beginTransmission(0x68);
 Wire.write(0x3B);
 Wire.endTransmission(false);
 Wire.requestFrom(0x68,6,true);
 
for(int k = 0; k < 100; k++){
 Wire.beginTransmission(0x68);
 Wire.write(0x3B);
 Wire.endTransmission(false);
 Wire.requestFrom(0x68,6,true);
 
for(int l = 0; l < 100; l++){
 Wire.beginTransmission(0x68);
 Wire.write(0x3B);
 Wire.endTransmission(false);
 Wire.requestFrom(0x68,6,true);
 
 X=Wire.read()<<8|Wire.read();
 Y=Wire.read()<<8|Wire.read();
 Z=Wire.read()<<8|Wire.read();
 
 myArray[i] = X;
 average1 = 0;
 
 for(int j = 0; j < 100; j++){
 average1 = myArray[j] + average1;
 }
 myArray[k] = Y;
 average2 = 0;
 for(int j = 0; j < 100; j++){
 average2 = myArray[j] + average2;
 } 
 myArray[l] = Z;
 average3 = 0;
 for(int j = 0; j < 100; j++){
 average3 = myArray[j] + average3;
 }
 if((Z > 7000) && (Z < 9000)){
 Serial.println("We Should Go That Way");
 digitalWrite(33,HIGH);
}
else if((Y > 7000) && (Y < 9000)){
 Serial.println("You Are Doing A Good Job, Keep It Up!");
 digitalWrite(32,HIGH);
}
else if((X > 7000) && (X < 9000)){
 Serial.println("I Want You To Come Over Here!");
 digitalWrite(25,HIGH);
}
else{
 Serial.println("UNKNOWN");
 digitalWrite(33,LOW);
 digitalWrite(32,LOW);
 digitalWrite(25,LOW);
}
}
}
 }
}
 
