Fecha de publicación: Jun 06, 2021 1:35:5 AM
Siguiendo con los hilos de controladores de temperatura, a los ya anteriormente compartidos ( Termometro - Termostato con DS18B20 - Automatización de Invernadero - Control Temperatura PCD8544 LM35 Arduino NANO y Sensor FLAMA ); Ahora le llego el turno a un controlador de temperatura estilo termostato, pero controlado por un ESP8266 NodeMCU v3.
//por: ETI-Patagonia prof.martintorres@educ.ar
//CTRL TEMPERATURA con PCD8544 - DHT11 - ESP8266 NodeMCU v3 #include <SPI.h> // include Arduino SPI library #include <Adafruit_GFX.h> // include adafruit graphics library #include <Adafruit_PCD8544.h> // include adafruit PCD8544 (Nokia 5110) library #include <DHT.h> // include adafruit DHT library code// Nokia 5110 LCD module connections (CLK, DIN, D/C, CS, RST) Adafruit_PCD8544 display = Adafruit_PCD8544(D4, D3, D2, D1, D0); #define DHTPIN D5 // DHT11 data pin is connected to NodeMCU pin D5#define DHTTYPE DHT11 // DHT11 sensor is used DHT dht11(DHTPIN, DHTTYPE); // configure DHT library const int SetTempUp = D6; // pin 6 de Arduino con boton de incremento de temperatura const int SetTempDown = D7; // pin 7 de Arduino con boton de decremento de temperatura const int ledPin = D8; int TemButtonCounter = 19; // contador de veces que se incrementa o decrementa el ajuste de temperatura (valor inicial es de 19 grados) bool TempButtonUpState = 0; // estado actual del boton de incremento de temperatura bool TempButtonDownState = 0; // estado actual del boton de decremento de temperatura bool lastTempButtonUpState = 0; // ultimo estado (si se incremento o decremento la temperatura) bool lastTempButtonDownState = 0; void setup() { pinMode(ledPin, OUTPUT); pinMode(SetTempUp, INPUT); pinMode(SetTempDown, INPUT); Serial.begin(9600); Serial.println("-----------"); Serial.println("Termostato Digital"); Serial.println("Torres Ale Martin"); Serial.println("-----------"); dht11.begin(); digitalWrite(ledPin, LOW); display.begin(); display.setContrast(60); display.clearDisplay(); // clear the screen and buffer delay(2000); digitalWrite(ledPin, LOW); display.clearDisplay(); // clear the screen and buffer display.setTextSize(0); } void loop() { int TemButtonCounter2 = TemButtonCounter*10 ; // read humidity int Humi = dht11.readHumidity() * 10; // read temperature in degree Celsius int Temp = dht11.readTemperature() * 10; if ( Temp > TemButtonCounter2 ) { digitalWrite(ledPin, HIGH); } else { digitalWrite(ledPin, LOW); } display.drawFastHLine(0, 0, display.width(), BLACK); display.setTextSize(0); display.setTextColor(BLACK, WHITE); display.setCursor(2, 2); display.print("TEMP:"); if(Temp < 0) display.printf("-%02u.%1uC", (abs(Temp)/10)%100, abs(Temp) % 10); else display.printf("%02u.%1u C", (Temp/10)%100, Temp % 10); display.drawRect(58, 2, 3, 3, BLACK); display.setCursor(2, 12); display.print("SET:"); display.print(TemButtonCounter); display.drawRect(38, 12, 3, 3, BLACK); display.setCursor(42, 12); display.print("C"); display.drawFastHLine(0, 21, display.width(), BLACK); display.setCursor(0, 23); display.print("Sistema OK"); display.drawFastHLine(0, 37, display.width(), BLACK); display.setCursor(0, 39); display.print("HUMEDAD:"); display.printf("%02u.%1u %%", (Humi/10)%100, Humi % 10); display.drawFastHLine(0, 47, display.width(), BLACK); display.display(); //lectura de pulsadores para el set de temperatura TempButtonUpState = digitalRead(SetTempUp); // lectura del boton de incremento de temperatura if (TempButtonUpState != lastTempButtonUpState) { // comparar TempButtonState con su estado previo if (TempButtonUpState == 1) { // si el ultimo estado cambio, incrementar el contador TemButtonCounter ++; delay(50); } } // guardar el estado actual como ultimo estado,para la proxima vez que se ejecute el lazo lastTempButtonUpState = TempButtonUpState; // lectura del boton de decremento de temperatura TempButtonDownState = digitalRead(SetTempDown); if (TempButtonDownState != lastTempButtonDownState) { // compara el estado del boton (incremento o decremento) con el ultimo estado if (TempButtonDownState == 1) { // si el ultimo estado cambio, decrementar el contador TemButtonCounter--; delay(50); } } // guardar el estado actual como ultimo estado, // para la proxima vez que se ejecute el lazo lastTempButtonDownState = TempButtonDownState; }
Algunas imágenes de como funciona: