#include <Arduino.h>
#include "DHT_Async.h"
#include <avr/wdt.h>

//Modded by Aera23 from library default. ``sudo cat /dev/ttyACM0 > o5.txt`` captures output on normal arduino for php script
//but I use /dev/ttyUSB0 for the arduino clone

/* Uncomment according to your sensortype. */
//#define DHT_SENSOR_TYPE DHT_TYPE_11
//#define DHT_SENSOR_TYPE DHT_TYPE_21
#define DHT_SENSOR_TYPE DHT_TYPE_22

static const int DHT_SENSOR_PIN = 3;
DHT_Async dht_sensor(DHT_SENSOR_PIN, DHT_SENSOR_TYPE);


/*
 * Initialize the serial port.
 */
void setup() {wdt_enable(7);
    //Save power
    pinMode(LED_BUILTIN, OUTPUT);
    digitalWrite(LED_BUILTIN, LOW);
    Serial.begin(9600);
    wdt_reset();
}


/*
 * Poll for a measurement, keeping the state machine alive.  Returns
 * true if a measurement is available.
 */
static bool measure_environment(float *temperature, float *humidity) {
    static unsigned long measurement_timestamp = millis();

    // Measure once every four seconds. 
   // if (millis() - measurement_timestamp > 10ul)/home/aera23/Arduino/sketch_may19b/sketch_may19b.ino {
        if (dht_sensor.measure(temperature, humidity)) {
            measurement_timestamp = millis();
            return (true);
        }
  //}

    return (false);
}


/*
 * Main program loop.
 */
void loop() {
    float temperature;
    float humidity;
wdt_reset();
    /* Measure temperature and humidity.  If the functions returns
       true, then a measurement is available. */
    if (measure_environment(&temperature, &humidity)) {
        Serial.print(temperature, 1);
        Serial.print("*C|");
        Serial.print(humidity, 1);
        Serial.print("%|");
        Serial.print(millis()/1000);Serial.print("s\n");
    }
   // else{Serial.println('%');delay(500);}
   wdt_reset();
}
