#include <PID_v1.h>
#include <DHT.h>
#include "EEPROM.h"
#define EEPROM_SIZE 64
//#define LDR_INPUT 15
#define LED_OUTPUT 2
int boton1= 5;
int boton2= 18;
double Setpoint, Input, Output;
double Kp =.00008, Ki = 1.3, Kd = 0.0004;
PID myPID(&Input, &Output, &Setpoint, Kp, Ki, Kd, DIRECT);
#define DHTPIN 15 // Definimos el pin digital donde se conecta el sensor
#define DHTTYPE DHT22 // Dependiendo del tipo de sensor
DHT dht(DHTPIN, DHTTYPE); // Inicializamos el sensor DHT11
void setup()
{
Serial.begin(115200);
EEPROM.begin(EEPROM_SIZE);
//pinMode(LED_OUTPUT, OUTPUT);
//Set point (brightness target)
//Input = analogRead(LDR_INPUT);
Input = dht.readTemperature(); // Leemos la temperatura en grados centígrados (por defecto)
Setpoint = EEPROM.read(0);
//Turn the PID on
myPID.SetMode(AUTOMATIC);
//Adjust PID values
myPID.SetTunings(Kp, Ki, Kd);
}
void loop() {
int b1=digitalRead(boton1);
int b2=digitalRead(boton2);
if (b1==0){
Setpoint = Setpoint-1;
EEPROM.write(0, Setpoint);
EEPROM.commit();
}
if (b2==0){
Setpoint = Setpoint+1;
EEPROM.write(0, Setpoint);
EEPROM.commit();
}
delay(100);
Input = map(analogRead(dht.readTemperature()), 0, 1024, 0, 255);
if (Input >= 255) {
Input=255;
}
if (Input <= 0) {
Input=0;
}
//PID calculation
myPID.Compute();
//Write the output as calculated by the PID function
analogWrite(LED_OUTPUT, Output);
//Send data for serial monitoring
Serial.print("Intensidad:");Serial.print(Input);Serial.print(",");
Serial.print("SetPoint:");Serial.println(Setpoint);
}