//#include <Wire.h>
#include <Adafruit_BME280.h>
#include<OneWire.h> 
OneWire ds(A1);

Adafruit_BME280 bme;

float bme_T = 0,bme_H = 0;
float ambient, windspeed;
  byte data[9];
  byte addr[8];
  int16_t raw;


void setup() {
  // put your setup code here, to run once:
  Serial.begin(9600);
  bme.begin(0x76);
  analogReadResolution(12);
  pinMode(A2, INPUT);
     bme.setSampling(Adafruit_BME280::MODE_FORCED,
                    Adafruit_BME280::SAMPLING_X1, // temperature
                    Adafruit_BME280::SAMPLING_X1, // pressure
                    Adafruit_BME280::SAMPLING_X1, // humidity
                    Adafruit_BME280::FILTER_OFF   );

  
  
}

void loop() {

  sensor_scan();

  Serial.print("BME_Temperature :"); Serial.print(bme_T); Serial.println(" C");
  Serial.print("BME_Humidity :"); Serial.print(bme_H); Serial.println(" %rH");
  Serial.print("Ambient :"); Serial.print(ambient); Serial.println(" C");
  Serial.print("Wind :");Serial.print(windspeed);Serial.println();

  delay(500);
   


}

void sensor_scan()
{
  bme.init();

  bme_T = bme.readTemperature();
  bme_H = bme.readHumidity();
  
  

  int sensorValue = analogRead(0);       // read analog input pin 0
  Serial.println(sensorValue);
//  float rawVal = sensorValue * 0.003225806; // constant = max voltage / 1023
  float rawVal = sensorValue * 3.3/4096; // constant = max voltage / 4096
//  windspeed = (rawVal - 0.3935) / 1.6065 * 32.4; //(output voltage -0.3935)/1.6065*32.4
  windspeed = (rawVal - 0.4044) / 1.6065 * 32.4; //(output voltage - 0.3935)/1.6065*32.4
  if(sensorValue <500){windspeed  = 0;}

  ds.search(addr);
  ds.reset();
  ds.select(addr);
  ds.write(0x44, 1);        // start conversion, with parasite power on at the end
  
  ds.reset();
  ds.select(addr);    
  ds.write(0xBE);         // Read Scratchpad
  
  for ( int i = 0; i < 9; i++) {           // we need 9 bytes
    data[i] = ds.read();

    raw = (data[1] << 8) | data[0];
  }
  ambient = (float)raw / 16.0;


}
