que tal espero su ayuda o sugerencia , quiero controlar la temperatura dentro de una cuna térmica mi codigo me deja subir o bajar la temperatura y la muestra en un display de 7 segmentos pero tengo problema para asociar un sensor lm35 junto con un led que simulara una resistencia de calor y a su vez también comparar la temperatura seleccionada, he denominado la variable cuenta como temperatura seleccionada ,la variable temperatura c como temperatura proporcionada por el sensor y el led en el pin digital 0, espero su ayuda como siempre muchísimas gracias.
#include <SevSeg.h>
SevSeg sevseg;
float temperaturaC = 0;
int temperaturaPin = 0;
const int botonIncremento = 6;
const int botonDecremento = 13;
const int tiempoAntirebote = 10;
float cuenta = 22;
int estadoBotonIncremento;
int estadoBotonAnteriorIncremento;
int estadoBotonDecremento;
int estadoBotonAnteriorDecremento;
boolean antirebote(int pin) {
int contador = 0;
boolean estado;
boolean estadoAnterior;
do {
estado = digitalRead(pin);
if(estado != estadoAnterior) {
contador = 0;
estadoAnterior = estado;
}
else {
contador = contador + 1;
}
delay(1);
} while(contador < tiempoAntirebote);
return estado;
}
void setup() {
byte numDigits = 3;
byte digitPins[] = {12, 9, 8};
byte segmentPins[] = {11, 7, 4, 2, 1, 10, 5, 3};
bool resistorsOnSegments = true; // 'false' means resistors are on digit pins
byte hardwareConfig = COMMON_CATHODE; // See README.md for options
sevseg.begin(hardwareConfig, numDigits, digitPins, segmentPins, resistorsOnSegments);
pinMode(botonIncremento, INPUT);
pinMode(botonDecremento, INPUT);
pinMode(0, OUTPUT);
}
void loop() {
estadoBotonIncremento = digitalRead(botonIncremento);
if(estadoBotonIncremento !=estadoBotonAnteriorIncremento)
{temperaturaC = analogRead(temperaturaPin); // captura temperatura del sensor
temperaturaC = (5.0 * temperaturaC * 100.0)/1024.0; // convierte a grados centígrados
{
if(antirebote(botonIncremento))
{
cuenta++;
if(cuenta > 39)
{
cuenta = 39;
}
}
}
if(temperaturaC == cuenta)
digitalWrite(0, LOW);
else digitalWrite(0, HIGH);
}
estadoBotonAnteriorIncremento = estadoBotonIncremento;
estadoBotonDecremento = digitalRead(botonDecremento);
if(estadoBotonDecremento !=estadoBotonAnteriorDecremento) {
if(antirebote(botonDecremento)) {
cuenta--;
if(cuenta < 0) {
cuenta = 0;
}
}
}
estadoBotonAnteriorDecremento = estadoBotonDecremento;
sevseg.setNumber(cuenta, 1);
sevseg.setBrightness(90);
sevseg.refreshDisplay(); // Must run repeatedly
}