#include <ESP32Servo.h>
#define pinMotor 14
#define pinPotenciometro 4
const float BETA = 3950; // should match the Beta Coefficient of the thermistor
int valorPotenciometro = 0;
int valorMapeado = 0;
int analogValue = 0.0;
int valorPWM = 0;
float diferenciaTemperatura = 0.0;
const int servoPin = 23;
Servo servo;
void setup() {
Serial.begin(115200);
//analogReadResolution(10);
//pinMode(14,OUTPUT);
servo.attach(servoPin, 500, 2400);
servo.write(0);
}
void loop() {
//-----------------------------Punto 1 --------------------------------
//medirTemperatura();
Serial.print("Temperatura: ");
Serial.print(Temperatura());
Serial.println(" ℃");
//----------------------------------------------------------------------
//-----------------------------Punto 3 --------------------------------
/*
if(Temperatura() >= 20)
{
Serial.println("Temp >= 20 grados");
analogWrite(pinMotor, 100);
servo.write(90);
}
else
{
Serial.println("Temp < 20 grados");
analogWrite(pinMotor, 0);
servo.write(0);
}
*/
//----------------------------------------------------------------------
//-----------------------------Punto 4 --------------------------------
valorPotenciometro = analogRead(pinPotenciometro);
Serial.printf("Valor Potenciometro = %d \n",valorPotenciometro);
valorMapeado = map(valorPotenciometro,0,4095,0,100);
Serial.printf("Valor mapeado = %d \n",valorMapeado);
/*
if(Temperatura()> valorMapeado)
{
Serial.printf("Temperatura es > que %d \n", valorMapeado);
analogWrite(pinMotor, 255);
}
else
{
Serial.printf("Temperatura es < que %d \n", valorMapeado);
analogWrite(pinMotor, 10);
}
*/
//----------------------------------------------------------------------
//-----------------------------Punto 5 --------------------------------
diferenciaTemperatura = abs(int(Temperatura()) - valorMapeado);
Serial.printf("Diferencia de Temperatura = %.0f \n", diferenciaTemperatura);
valorPWM = map(diferenciaTemperatura, 0, 100, 0, 255);
Serial.printf("valor del PWM = %d \n", valorPWM);
analogWrite(pinMotor,valorPWM);
int posicionServo = map(diferenciaTemperatura, 0, 100, 0,180);
servo.write(posicionServo);
Serial.printf("valor de posicion deñ servo = %d \n", posicionServo);
delay(300);
}
float Temperatura()
{
analogValue = analogRead(15);
float celsius = 1 / (log(1 / (4095. / analogValue - 1)) / BETA + 1.0 / 298.15) - 273.15;
return celsius;
}
//Fuentes
// https://wokwi.com/projects/317578590427284033
//https://wokwi.com/projects/323706614646309460