// *****************************************************************************************
/*  Ventilatieregeling met DHT11 en relais en fan
*/

// Bibliotheek voor DHT sensor.
#include <DHT.h>  // voor het gebruik van de DHT temperatuur sensor
DHT dht;
const int analogOutPin = 9;  // D9 is pwm output voor motor
int outputValue = 0;


void setup() {
  Serial.begin(9600);  // Start seriële communicatie.
  Serial.println();    // Print lege regel.
  // Print drie kolomtitels, met \t print je een tab:
  Serial.println("Status\tRelatieve luchtvochtigheid (%)\tTemperatuur in graden Celsius\t");

  // Configureer DHT sensor en stel hem in op pin D2
  dht.setup(2);
  // Initialiseer digitale poort D7 als uitgang (OUTPUT) voor relais van ventilatormotor:
  pinMode(7, OUTPUT);
}

void loop() {
  // Pauzeer om de DHT nieuwe data te laten verzamelen:
  delay(dht.getMinimumSamplingPeriod());
  // Vraag de relatieve luchtvochtigheid op:
  float humidity = dht.getHumidity();
  // Vraag de temperatuur op:
  float temperature = dht.getTemperature();

  // Monitor de meting
  // Print status van DHT sensor op de Seriële monitor:
  Serial.print(dht.getStatusString());
  // Print een tab:
  Serial.print("\t");
  // Print relatieve luchtvochtigheid op 1 decimaal nauwkeurig:
  Serial.print(humidity, 1);
  // Print vier tabs:
  Serial.print("\t\t\t\t");
  // Print temperatuur op 1 decimaal nauwkeurig:
  Serial.print(temperature, 1);

  // ventilatormotor en servomotor
  if (temperature > 27) {
    analogWrite(analogOutPin, 255);
    Serial.println("\tFan on 255");
    delay(2000);            // Wacht (2 sec)
  }
  else if (temperature > 25) {
    analogWrite(analogOutPin, 20);
    Serial.println("\tFan on 20");
    delay(2000);            // Wacht (2 sec)
  } else {
    analogWrite(analogOutPin, 0);
    Serial.println("\tFan off");
    delay(2000);           // Wacht (2 sec)
  }
}