Termostato zona 3 Arduino Powered (7 / 10 paso)

Paso 7: Añadir en la pantalla LCD

Así que con nuestro reloj y nuestros sensores de temperatura de trabajo, vamos a entrar alguna salida hacia el controlador del LCD.

La primera parte de esto es determinar lo que quiero decir. El espacio es algo limitado ya que solo tengo un total de 32 caracteres en 2 líneas, así que la primera pregunta que tenía que responder era cómo mostrar todo lo que necesito para mostrar en los 32 caracteres.

Aquí está mi finales lecturas LCD:

Zone1: ()

Modo de:

Zone2: ()

Horno:

Zone3: ()

Abierto: < 1,2,3 / ninguno >

donde T1 es la temperatura de la zona 1, TT es la temperatura objetivo, modo es el modo actual se está ejecutando (despierto, lejos, casa, dormir, anulación o espera.

Abierto se refiere a que las zonas están abierto y recibir calor (si el horno está funcionando).

Esto era en realidad bastante sencillo. Tengo algunos calcular hacer hasta un símbolo personalizado se refiere, pero es bastante más abajo en mi lista de prioridades.

< Tt >< tt >< tt > / * esta es la aplicación que utilizará para controlar el horno. El concepto es la siguiente: tengo 3 zonas monitorizará. Cada zona tendrá al menos un regulador de zona que será controlado por la aplicación de arduino. Cada zona tendrá un único termómetro que presentará un informe al regulador. Dependiendo de la lectura del termómetro y el termostato, los amortiguadores se abierto o cerrado y se encenderá el horno central. Una vez que se haya alcanzado una temperatura aceptable en todas las zonas, el horno se apagará. Además de ciclos de calefacción general, el sistema es programable. En este momento, sin embargo, el ciclo de programación se atenderán aquí, no a través del termostato. IMPORTANTES casos de prueba: (añadir como que piensan venir a través de ellos * necesita asegurarse de que el horno siempre está apagado si se cierran todos los 3 amortiguadores. * amortiguadores deben estar abiertos a menos que específicamente tienen que ser cerrado. * / #include < LiquidCrystal.h > //This es una librería para el LCD pantalla #include < OneWire.h > //This es una librería necesaria para el termómetro lecturas #include < DallasTemperature.h > //This es una biblioteca de temperatura #include < Wire.h > #include " RTClib.h"/ / conexiones: / / rs (pin 4 del LCD) para Arduino pin 12 / / rw (pin 5 del LCD) para Arduino pin 11 / / habilitar (pin 6 del LCD) a pin 10 del Arduino / / LCD pin 15 al pin 13 de Arduino / / LCD pines d4, d5, d6, d7 a los pines de Arduino 5, 4, 3, 2 lcd LiquidCrystal (12, 11, 10, 5, 4, 3, 2); grados de Byte [8] = {B01000 B10100, B01000, B00111, B00100, B00110, B00100, B00100}; const int contraluz = 13; controles de retroiluminación #define THERM_BUS 6 / / todas las lecturas de temperatura llegan a través de este pin único. OneWire oneWire(THERM_BUS); DallasTemperature sensors (& oneWire); DeviceAddress zone1Therm = {0x28, 0x48, 0 x 39, 0x11, 0 x 04, 0 x 00, 0 x 00, 0x94}; DeviceAddress zone2Therm = {0x28, 0xF2, 0x1F, 0x11, 0 x 04, 0 x 00, 0 x 00, 0x38}; DeviceAddress zone3Therm = {0x28, 0xBA, 0xF3, 0 x 10, 0 x 04, 0 x 00, 0 x 00, 0x98}; RTC_DS1307 RTC; Inicio programación / veces son 6 AM, 8:00, 15:00 y 21:00 int * PROGRAMMED_VALUES [7]; int SUNDAY_VALUES [4] = {67, 67, 67, 60}; int MONDAY_VALUES [4] = {67, 67, 67, 60}; int TUESDAY_VALUES [4] = {67, 67, 67, 60}; int WEDNESDAY_VALUES [4] = {67, 67, 67, 60}; int THURSDAY_VALUES [4] = {67, 67, 67, 60}; int FRIDAY_VALUES [4] = {67, 67, 90, 75}; int SATURDAY_VALUES [4] = {67, 67, 67, 60}; PROGRAMACIÓN final float zone1Temp = 0; Float zone2Temp = 0; Float zone3Temp = 0; Boolean z1Check = 0; Boolean z2Check = 0; Boolean z3Check = 0; Boolean isOverrideHeld = false; Boolean isOverridden = false; Boolean furnaceState = false; con furnaceState, false significa que es en la actualidad, verdad significa su en la actualidad. int overrideValue = 0; const int furnacePin = 1; int zoneCounter = 0; void setup() {Serial.begin(57600); / / Esto conecta el arduino al ordenador //TEMPERATURE configuración de SENSOR sensors.begin(); sensors.setResolution (zone1Therm, 10); lcd.createChar (0, grados); / / configurar RTC. Wire.Begin(); RTC.begin(); if (!. RTC.isrunning()) {registro ("ERROR", "RTC no corre!"); //RTC.adjust (DateTime (__DATE__, __TIME__)); //THIS sólo necesita a ser línea si usted son ajuste hasta su RTC por primera vez! UNA VEZ QUE, ESTA DEBE ESTAR DESACTIVADA
! } //SETUP salidas pinMode (furnacePin, salida); pinMode (luz de fondo, salida); digitalWrite (luz de fondo, alto); CONFIGURACIÓN DE LA PROGRAMMED_VALUES PROGRAMA SEMANAL [0] = SUNDAY_VALUES; PROGRAMMED_VALUES [1] = MONDAY_VALUES; PROGRAMMED_VALUES [2] = TUESDAY_VALUES; PROGRAMMED_VALUES [3] = WEDNESDAY_VALUES; PROGRAMMED_VALUES [4] = THURSDAY_VALUES; PROGRAMMED_VALUES [5] = FRIDAY_VALUES; PROGRAMMED_VALUES [6] = SATURDAY_VALUES; } / / Esto funciona el bucle continua void loop() {delay(3000); //DELAY actualmente establecido a 10 segundos. Registrará //DATE/TIME ajuste necesario como lógica ("tiempo", "Bucle iniciado en" + getDateAndTime()); Sensors.requestTemperatures() de temperatura lógica; zone1Temp = getTemperature(zone1Therm); zone2Temp = getTemperature(zone2Therm); zone3Temp = getTemperature(zone3Therm); logTemperatureData(); getScreenOutput(); z1Check = checkZoneTemp(zone1Temp); z2Check = checkZoneTemp(zone2Temp); z3Check = checkZoneTemp(zone3Temp); Si (z1Check || z2Check || z3Check) {startFurnace();} else {stopFurnace();} si (z1Check & & furnaceState) {closeDamper(1);} else {openDamper(1);} si (z2Check & & furnaceState) {closeDamper(2);} else {openDamper(2);} si (z3Check & & furnaceState) {closeDamper(3);} else {openDamper(3);}} Boolean checkZoneTemp (int temperatura) {int temp = getTargetTemperature(); if(temperature > temp) {vuelta falso;} verdaderas;} void logTemperatureData() {registro ("Zone1Temp", (String)(int)zone1Temp); registro ("Zone2Temp", (String)(int)zone2Temp); registro ("Zone3Temp", (String)(int)zone3Temp);} void getScreenOutput() {zoneCounter ++; if(zoneCounter == 1) {String val = "Zone1:" + (String) (int) zone1Temp; Val += "(" + (String)getTargetTemperature(); += de Val (cadena) ")"; toScreen (val, "modo de:" + getModeString());} else if (zoneCounter == 2) {String val = "Zone2:" + (String) (int) zone2Temp; Val += "(" + (String)getTargetTemperature(); += de Val (cadena) ")"; toScreen (val, "horno de:" + getFurnaceState());} Else {zoneCounter = 0; Cadena val = "Zone3:" + (String) (int) zone3Temp; Val += "(" + (String)getTargetTemperature(); += de Val (cadena) ")"; toScreen (val, "abrir:" + getActiveZonesForScreen());}} int getTargetTemperature() {int modo = getMode(); Fecha y hora = ahora RTC.now(); fecha de int = now.dayOfWeek(); int * valores = {0}; log ("info", fecha (cadena)); valores = PROGRAMMED_VALUES [fecha]; log ("info", "conseguir la temperatura objetivo:" + (String)values[mode]); devolver valores [modo]; } String getActiveZonesForScreen() {String retVal = ""; Si (z1Check & &! furnaceState) {retVal += "1";} si (z2Check & &! furnaceState) {retVal += "2,";} si (z3Check & &! furnaceState) {retVal += "3";} if(retVal.length() == 0) {retVal += 'None';} vuelta retVal; } String getFurnaceState() {if(furnaceState) {return "On";} else {return "Off";}} String getModeString() {int modo = getMode(); switch (modo) {caso 0: volver "Wake", caso 1: volver 'Cantar'; caso 2: volver a "Inicio"; caso 3: volver a "Dormir"; por defecto: volver "N/A";}} int getMode() {DateTime ahora = RTC.now(); int hora = now.hour(); si (hora < 6 || hora > = 21) {regresar 3;} si (hora > = 6 & & hora < 8) {return 0;} si (hora > = 8 & & hora < 15) {Regresar 1;} si (hora > = 15 & & hora < 21) {volver 2;}} flotador getTemperature (DeviceAddress deviceAddress) {float tempC = sensors.getTempC(deviceAddress); / / Serial.println(tempC); si (tempC ==-127) {Serial.println ("ERROR al obtener la temperatura.");} vuelta DallasTemperature::toFahrenheit(tempC);} //convenience función. Se encarga de todo el modelo para escribir en el LCDScreen void toScreen (String line1Value, String line2Value) {lcd.begin(16,2); lcd.clear(); lcd.setCursor(0,0); lcd.print(line1Value); lcd.setCursor(0,1); lcd.print(line2Value);} String getDateAndTime() {DateTime ahora = RTC.now(); volver String(now.year()) + "/" + String(now.month()) + "/" + String(now.day()) + "" + String(now.hour()) + ":" + String(now.minute()) + ":" + String(now.second());} void openDamper (int apagador) {/ / si (amortiguador == damper1Pin || amortiguador == damper2Pin || amortiguador == damper3Pin) {/ / digitalWrite (apagador, HIGH); / /} otro {/ / log ("problema al abrir el apagador. Amortiguador que no se encuentra. Esperaba 1, 2 o 3. Tiene "+ amortiguador); }} void closeDamper (int apagador) {/ / si (amortiguador == damper1Pin || amortiguador == damper2Pin || amortiguador == damper3Pin) {/ / digitalWrite (apagador, LOW); / /} otro {/ / log ("problema de amortiguador de cierre. Amortiguador que no se encuentra. Esperaba 1, 2 o 3. Tiene "+ amortiguador); }} //function para los mensajes de registro a la consola. Finalmente planea escribir al archivo de registro en RPi registro vacío (código de cadena, String mensaje) {Serial.println (código + ":" + mensaje);} anular recordData (tipo cadena, objeto String, String valor) {/ / TODO - salida a base de datos de RPi} void startFurnace() {//Send la señal adecuada para el horno para poner en marcha if(!furnaceState) {furnaceState = ! furnaceState; log ("INFO", "A partir de horno"); digitalWrite (furnacePin, HIGH); }} void stopFurnace() {//Send señal adecuada al horno dejar if(furnaceState) {furnaceState =! furnaceState; registro ("INFO", "Horno de detener"); digitalWrite (furnacePin, LOW);}} < TT >< TT >< TT >

Artículos Relacionados

Orientada a solar, reloj de Arduino-Powered

Orientada a solar, reloj de Arduino-Powered

esto es un reloj diseñado para mantener la hora exacta (independiente de atómico o GPS), Mostrar la salida local del sol, el mediodía solar y puesta de sol y también sí mismo ajustar horario de verano.Quería el reloj para ser fácil de usar y flexible
Cómo construir un Arduino Powered ajedrez jugar Robot

Cómo construir un Arduino Powered ajedrez jugar Robot

a juzgar por el número de ajedrez Instructables relacionados, creo que es seguro decir que la comunidad disfruta el juego.  Sin embargo, puede ser difícil, encontrar alguien que juega en el mismo nivel te.  Para resolver este dilema y para aumentar m
Arduino Powered Infared cosa

Arduino Powered Infared cosa

Hola, este es mi primer instructible. Voy a mostrar cómo hacer un lector de arduino powered sensor análogo (va a utilizar un fotodiodo infrarrojo).Paso 1: partes Necesita varias cosas para hacerlo:1. algún tipo de caja o caja de2. un escudo de Adafru
Arduino Powered trazadores de líneas del guante Heated

Arduino Powered trazadores de líneas del guante Heated

Arduino Powered Guantes calientesEste proyecto es sobre cómo hacer las más inteligente del mundo calienta guante los trazadores de líneas para condiciones de frío extremo como los de Minnesota o personas que tienen syndrome(like me) de Raynaud. Estos
Arduino powered calabaza de Halloween con detección de movimiento

Arduino powered calabaza de Halloween con detección de movimiento

Hola,Este Instructable le mostrará cómo hacer algunos Halloween decoraciones incluyendo arduino powered calabaza de Halloween con detección de movimiento.Paso 1: Hacer calabaza de Halloween Materiales:Globo redondoPeriódicos viejosHarina suaveAguaTém
Un controlado inalámbricamente, tablero de mensajes Arduino-Powered

Un controlado inalámbricamente, tablero de mensajes Arduino-Powered

usted mismo construir un tablero de mensajes controlados de forma inalámbrica, Arduino powered!Aquí es un proyecto fácil que crea una tabla de forma inalámbrica programable del mensaje. Utiliza los módulos XBee para un enlace serial inalámbrico entre
3 canal arduino Powered controlador de luces de Navidad!

3 canal arduino Powered controlador de luces de Navidad!

Para Navidad este año, quise hacer un proyecto genial pero bastante no sabía qué hacer. Como me estaba poniendo la salida de luces de Navidad para decorar, había un viejo temporizador de luz de Navidad roto. Tomé distancia y miró a su alrededor en el
Arduino Powered RGB humor lámpara además Simon

Arduino Powered RGB humor lámpara además Simon

esto es básicamente una lámpara de estado de ánimo de arduino powered RGB y el simon dice juego, dos en uno.Modo de empleo: El dispositivo se inicia con el programa de humor de RGB lámpara por defecto, al pulsar cualquiera de las cuatro teclas en la
Arduino powered tanque RC

Arduino powered tanque RC

este es mi primer instructable así que por favor oso conmigo. Mi nombre es Stanley Deakins y he estado jugando con la electrónica desde hace algún tiempo, aunque fue hace años. Debido a mi trabajo reciente he reavivar esa pasión. He conseguido mis ma
Reloj de LED Arduino powered

Reloj de LED Arduino powered

Un divertido y sencillo reloj LED, que te dará la hora a la media hora más cercana utilizando LEDs solo-color. Piezas necesarias son las siguientes:Arduino NanoTablero de 400 puntos de amarreCable de cintaDS1307 RTC IC32,768 kHz cristal(12) 10mm LEDs
La más terrorífica, arduino powered, intermitente y gritando calabaza de halloween!

La más terrorífica, arduino powered, intermitente y gritando calabaza de halloween!

Aquí le damos un instructivo para un proyecto por la tarde que tenía que hacer: intermitente, gritando, arduino powered calabaza de halloween. Es muy divertido, consiste en un poquito de soldadura y es ideal para aprender sobre sensores y salida de l
Arduino Powered Gainclone (amplificador)

Arduino Powered Gainclone (amplificador)

para aquellos de ustedes que no saben y no lo hice hasta hace poco, un Gainclone es un amplificador que es un 'clon' del original diseño de un amplificador de 47 laboratorios llamados un Gaincard y está basado en amplificadores de único chip de Natio
Termómetro binario Arduino Powered

Termómetro binario Arduino Powered

recientemente adquirí un Arduino Uno y estaba buscando un proyecto "getting started" cool. Decidí hacer un termómetro, como el kit he tenido todas las piezas necesarias (termistor, cables, resistencias, LEDs). A través de iteraciones de un par,
Arduino Powered RGB LED Vodka estante

Arduino Powered RGB LED Vodka estante

este instructable conseguir va hacer su propio arduino powered proyecto rojo verde y azul LED. Incluso no tiene que ser un estante! Botellas de vodka se suceden iluminar muy bien así que es lo que elegí hacer.En este proyecto utilizamos cada pin en e