Hola buenas tardes
Estoy intentando un sistema de monitoreo de entrada y salidas
tengo 8 entrada y 3 salidas, es para un HVAC
tengo que tener 7 entradas abiertas y 1 cerrada que seria el control de temperatura.
hay funciones que se ejecutan cuando se activa alguna de las 7 entradas
mandando abrir las salidas.
pero al momento de usarlo y cargarlo en mi VBB VIRTUAL BREADBOARD se estanca al cerrar las entradas en las funciones que solo deberían de desplegarse cuando se esta "HIGH" no?
dejo mi codigo y conexiones quisiera saber si es por que no lo estoy probando en fisico y no por errores de codigo.
saludos.
#include <Wire.h>
#include <LiquidCrystal.h>
//LCD pin a Arduino
const int pin_RS = 12;
const int pin_EN = 3;
const int pin_d4 = 4;
const int pin_d5 = 5;
const int pin_d6 = 6;
const int pin_d7 = 7;
LiquidCrystal lcd( pin_RS, pin_EN, pin_d4, pin_d5, pin_d6, pin_d7);
//Entradas
const int CtrlTemp = 13; int CtrlState = 0;
const int PsttoAlta = A0; int PsAlState = 0;
const int PsttoBaja = A1; int PsBjState = 0;
const int CmpsParo = A2; int CompState = 0;
const int PalFlujo = A3;int FluState = 0;
const int FailVent1 = A4;int Vent1State = 0;
const int FailVent2 = A5;int Vent2State = 0;
const int FailComp = 2;int CompFState = 0;
//Salidas
const int Vnt1 = 8;
const int Vnt2 = 9;
const int Cmps = 10;
//Estatos GLOBALES
bool Inicio_st = false;
bool Paro_st = true;
bool alarma = false;
void setup() {
//lcd y logo
Serial.begin(9600);
attachInterrupt(digitalPinToInterrupt(2),Interupt, RISING);
lcd.begin(16,2);
lcd.setCursor(2, 0);
lcd.print("DEVELOPED");
lcd.setCursor(2, 1);
lcd.print("by COSEIR");
Serial.print("ffsfs");
//Pines
pinMode(CtrlTemp, INPUT);
pinMode(PsttoAlta, INPUT);
pinMode(PsttoBaja, INPUT);
pinMode(CmpsParo, INPUT);
pinMode(PalFlujo, INPUT);
pinMode(FailVent1, INPUT);
pinMode(FailVent2, INPUT);
pinMode(FailComp, INPUT);
pinMode(Vnt1, OUTPUT);
pinMode(Vnt2, OUTPUT);
pinMode(Cmps, OUTPUT);
digitalWrite(Cmps, HIGH);
digitalWrite(Vnt1, HIGH);
digitalWrite(Vnt2, HIGH);
delay(1000);
lcd.clear();
}
void loop() {
//VISOR
//LECTURA DE ESTADOS DE ENTRADAS
CtrlState = digitalRead(CtrlTemp);
PsAlState= digitalRead(PsttoAlta);
PsBjState= digitalRead(PsttoBaja);
CompState= digitalRead(CmpsParo);
FluState= digitalRead(PalFlujo);
Vent1State= digitalRead(FailVent1);
Vent2State= digitalRead(FailVent2);
CompFState= digitalRead(FailComp);
//TODO SIN ALARMAS
// if(PsAlState == LOW && PsBjState == LOW && CompState == LOW && FluState == LOW && Vent1State == LOW && Vent2State == LOW && CompFState == LOW){
// alarma = false;
// Inicio_st = true;
//CAMBIO DE ESTADO CONTROL TEMPERATURA
if (CtrlState == HIGH && alarma== false ) {
Inicio(Inicio_st);
} else {}
// lcd.print("listo");
// }else {
// alarma = true;
// Inicio_st = false;
//}
//CAMBIO DE ESTADO PRESOSTADO ALTA
if (PsAlState == HIGH) {
PresionAlta();
}else { alarma = true;
Inicio_st = false;}
//CAMBIO DE ESTADO PRESOSTADO BAJA
if (PsBjState == HIGH) {
PresionBaja();
} else { alarma = true;
Inicio_st = false;}
//CAMBIO DE ESTADO DANFOSS CMPRESOR
if (CompState == HIGH) {
ParoComp();
} else { alarma = true;
Inicio_st = false;}
//CAMBIO DE ESTADO PALETA DE FLUJO
if (FluState == HIGH) {
ParoFlu();
} else { alarma = true;
Inicio_st = false;}
//CAMBIO DE ESTADO ALGUN CONTACOR
if (Vent1State == HIGH) {
Contactores();
} else { alarma = true;
Inicio_st = false;}
if (Vent2State == HIGH) {
Contactores();
} else { alarma = true;
Inicio_st = false;}
if (CompFState == HIGH) {
Contactores();
} else { alarma = true;
Inicio_st = false;}
}
void Paro(){
digitalWrite(Cmps, LOW);
digitalWrite(Vnt1, LOW);
digitalWrite(Vnt2, LOW);
}
void ParoComp(){
Paro();
lcd.clear();
lcd.setCursor(4, 0);
lcd.print("FALLO 75");
lcd.setCursor(1, 1);
lcd.print("IN DANFOSS");
alarma = true;
delay(500);
}
void ParoFlu(){
Paro();
lcd.clear();
lcd.setCursor(4, 0);
lcd.print("FALLO 74");
lcd.setCursor(1, 1);
lcd.print("FLUJO");
alarma = true;
delay(500);
}
void PresionAlta(){
Paro();
lcd.clear();
lcd.setCursor(4, 0);
lcd.print("FALLO 77");
lcd.setCursor(1, 1);
lcd.print("PSTO ALTA");
alarma = true;
delay(500);
}
void PresionBaja(){
Paro();
lcd.clear();
lcd.setCursor(4, 0);
lcd.print("FALLO 77");
lcd.setCursor(1, 1);
lcd.print("PSTO BAJA");
alarma = true;
delay(500);
}
void Contactores(){
Paro();
lcd.setCursor(0, 0);
lcd.print("FALLO 73-71");
lcd.setCursor(1, 1);
lcd.print("CONTACTORES");
alarma = true;
delay(500);
}
void CtrlTmp(){
DelayParo();
lcd.clear();
lcd.setCursor(0, 1);
lcd.print("Iniciando...");
}
void DelayParo(){
// bool stat = false;
for (int i = 60; i>0; i--){
// int d = i/1000;
Serial.print(i);
lcd.setCursor(1, 0);
lcd.print(i);
delay(250);
// if (d=59){
//
// }
}
}
void Inicio(bool stat){
if (stat = true){
DelayParo();lcd.clear();
lcd.setCursor(0, 0);
lcd.print("Sistema Listo");
lcd.setCursor(0, 1);
lcd.print("Trabajando");
digitalWrite(Cmps, HIGH);
digitalWrite(Vnt1, HIGH);
digitalWrite(Vnt2, HIGH);
}
}
void Interupt(){
digitalWrite(Cmps, LOW);
digitalWrite(Vnt1, LOW);
digitalWrite(Vnt2, LOW);
}
