Sindicador de canales de noticias

Control lavavajillas con arduino

fuentes rss - Jue, 12/02/2021 - 19:49

//Lavabajillas6_logica_directa_mensaje01.ino

#include <Wire.h>
#include <LiquidCrystal_I2C.h>
LiquidCrystal_I2C lcd(0x27,16,2);  // set the LCD address to 0x27 for a 16 chars and 2 line display

unsigned long tiempo = 0;     //VARIABLES DE MILLIS
unsigned long time = 0;

int puerta; //contacto puerta
int bahoA; //contacto baho
int termop=-28;
byte Temp;
int ib=0; // for baho
int vandera[4];
byte desborde=0;
byte marcha=0;
int menu=0;
int d2;
int i2;
int ib2;
int llena2;
int opcion=0;
#include <math.h>
 
int sensorPin = A1; // Declaration of the input pin
 
// These function translates the recorded analog measurement
// into the right Tempture in °C and gives it out.
double Thermistor(int RawADC)
{
    double Temp;
    Temp = log(10000.0 * ((1024.0 / RawADC -1)));
    Temp = 1 / (0.001129148 + (0.000234125 + (0.0000000876741 * Temp * Temp )) * Temp );
    Temp = Temp - 273.15;            // convert from Kelvin to Celsius
    return Temp;
}
 

void setup() {
 
     Serial.begin(9600);
     
     
      pinMode(2, OUTPUT); // motor lavado
      pinMode(3, OUTPUT); // Valvula entrada agua
      pinMode(4, OUTPUT); // Motor Desague
      pinMode(5, OUTPUT); // Selenoide Sal
      pinMode(6, OUTPUT); // Selenoide Pastilla //DETERGENTE
      pinMode(7, OUTPUT); // Resistencia
      
      pinMode(8, INPUT); // BahoA Llenado
      pinMode(9, INPUT); // termop
      pinMode(10, INPUT); // Puerta
      pinMode(A0, INPUT); // Selector programa
      pinMode(A1, INPUT); // Sensor Temptura1
      pinMode(11, INPUT); // Sensor Desvordamiento
      pinMode(12, INPUT); // Pulsador de marcha

//----------ESTADO INICIAL ------------------
      digitalWrite(2, HIGH);// motor lavado
      digitalWrite(3, HIGH); // Valvula entrada agua
      digitalWrite(4, HIGH); // Motor Desague
      digitalWrite(5, HIGH); // Selenoide Sal
      digitalWrite(6, HIGH); // Selenoide Pastilla
      digitalWrite(7, HIGH); // Resistencia
      bahoA = digitalRead(8); // sensor baho
      termop = digitalRead(9); // termostato
      puerta = digitalRead(10); // Estado de la puerta        
      desborde= digitalRead(11); // Sensor Desvordamiento
      marcha= digitalRead(12); // pulsador marcha
      //Temp = analogRead(A1); // Sensor Temptura

      Serial.println("Iniciado");
   

//------DISPLAY-------------------
        lcd.init();
        lcd.backlight();
        lcd.clear();
        lcd.setCursor(2,0);
        lcd.print("LAVAVAJILLAS");
        lcd.setCursor(5,1);
        lcd.print("BOSCH");//"WWW.MIGUELDC.COM"
        delay (5000);
        lcd.clear();
//-----------------------------------        
        

}

void loop() {
    mensaje();
    int selector= analogRead(A0); //byte
     puerta = digitalRead(10);
     desborde = digitalRead(11);
     marcha = digitalRead(12);
      Serial.println(selector);
      int readVal = analogRead(sensorPin);
    double temp =  Thermistor(readVal);
 
    // Output on the serial interface
    Serial.print("La Temptura es:");
    Serial.print(temp);
    Serial.print(" º"); //Output <°> Symbol
    Serial.println("C");
    Serial.println("---------------------------------------");
      
//-----------------------------------------
//--------SELECCION DE PROGRAMAS-----------    
     if ((puerta == HIGH)&& (desborde ==LOW)){    // si la pueerta esta cerrada continuamos
         if (selector <= 270){
     
      
      menu=1;
      if (marcha==HIGH) Programauno();
      }
         
         else if ((selector > 270) && (selector <= 700)){
       
      lcd.setCursor(2,0);
      lcd.print("PROGRAMA DOS   ");
      lcd.setCursor(2,1);
      lcd.print("PULSA MARCHA");
      if (marcha==HIGH) Programados();
      }
      
         
         else if (selector >700){
       
      lcd.setCursor(2,0);
      lcd.print("PROGRAMA TRES   ");
      lcd.setCursor(2,1);
      lcd.print("PULSA MARCHA");
      if (marcha==HIGH) Programatres();
      }
     }

     else if ((puerta == LOW)&& (desborde ==LOW))
     {Serial.println("Puerta abierta");
          Parotemporal();   // Si la puerta esta abierta se para el programa
     }
     else
     {Serial.println("Desbordamiento");
          Desbordamiento();   // Si la puerta esta abierta se para el programa
     }

} // fin loop

//-------------------------------------------------
//-----------EJECUCION PROGRAMA UNO---------------------
//-------------------------------------------------
void Programauno(){
    if( vandera[1]==0){
      Serial.println("Programa uno ");
      lcd.clear();
      lcd.setCursor(2,0);
      lcd.print("PROGRAMA UNO   ");
      lcd.setCursor(2,1);
      lcd.print("EN PROCESO");
      delay(5000); //8000
      
      //-------Enguaje---------
      Llenaragua(2);   // llenado de agua
      delay(1000);
      Lavado(9);     // remojar platos
       delay(1000);
      Desague();// desagua el agua
       delay(1000);
      
      //--------Lavado----------
      Llenaragua(2);   // llenado de agua
       delay(3000);
       digitalWrite(6, LOW); // Selenoide Pastilla abre
       delay(3000);
       digitalWrite(6, HIGH); // Selenoide Pastilla cierra
       delay(100);
       digitalWrite(7, LOW); // Resistencia conecta
       delay(5000);
      Lavado(50);         //lavado en profundidad
        digitalWrite(7, HIGH); // Resistencia desconecta
        delay(5000);
      Desague();   // desagua el agua
       
       //-------Enguaje---------
        delay(5000);
      Llenaragua(2);   // llenado de agua
       delay(5000);
      Lavado(9);         //lavado en Enguaje
       delay(5000);
      Desague();   // desagua el agua
      
      vandera[1]=1;     // con el valor 1 terminamos el programa
      lcd.clear();
      lcd.setCursor(1,0);
      lcd.print("LAVADO TERMINADO");
      lcd.setCursor(0,1);
      lcd.print("Casi lavado");
    }
}
// FIN programauno

//-------------------------------------------------
//-----------EJECUCION PROGRAMA DOS---------------------
//-------------------------------------------------

void Programados(){
      Serial.println("Programa dos ");
     lcd.clear();
      lcd.setCursor(1,0);
      lcd.print("PROGRAMA DOS   ");
      lcd.setCursor(0,1);
      lcd.print("ENTRADA DE AGUA ");
      delay (5000);
      lcd.clear();
 
}// FIN programados

//-------------------------------------------------
//-----------EJECUCION PROGRAMA TRES---------------------
//-------------------------------------------------
void Programatres(){
      Serial.println("Programa tres ");
      lcd.clear();
      lcd.setCursor(1,0);
      lcd.print("PROGRAMA TRES  ");
      lcd.setCursor(0,1);
      lcd.print("ENTRADA DE AGUA ");
      delay (5000);
      lcd.clear();
 
}// FIN programatres

//--------------------------------------------------
//-------CARGA DE AGUA EN BAHO---------------------
//-------------------------------------------------
void Llenaragua(int llena){
      
      if( ib == 0){
          
          for(; ib<llena; ib++){         // carga de agua en baho
            Serial.print("Entrada de agua: ");
            Serial.println(ib);
                puerta = digitalRead(10);  // Estado de la puerta
                if (puerta==LOW)Parotemporal();  // puerta abierta para el programa
                bahoA = digitalRead(8);   // lee estado contacto baho
                lcd.clear();
                lcd.setCursor(0,0);
                lcd.print("ENTREDA DE AGUA " );
                lcd.setCursor(0,1);
                lcd.print("CARGA AGUA: ");
                lcd.setCursor(13,1);
                lcd.print(llena-ib);
                delay(50);      // espera recuperacion del deposito baho
                while (bahoA == LOW){
                      puerta = digitalRead(10);  // Estado de la puerta
                      if (puerta==LOW)Parotemporal();  // puerta abierta para el programa
                      delay(100);
                      desborde= digitalRead(11); // Sensor Desvordamiento
                      if (desborde==HIGH)Desbordamiento();
                      delay(100);
                      bahoA = digitalRead(8); // lee estado contacto baho
                      delay(200);
                      if(digitalRead(3)== HIGH) digitalWrite(3, LOW); // abre valvula entrada agua
                      
                      delay(500);
                  
                 }
                 Serial.println("cierra agua");
                    digitalWrite(3, HIGH);   //cierra valvula entrada agua
                    desborde= digitalRead(11); // Sensor Desvordamiento
                    if (desborde==HIGH)Desbordamiento();
                    delay(10000);      // espera recuperacion del deposito baho
                } //fin for
      
      }// fin if ib

 
} //fin llenar agua

//--------------------------------------------
//------------DESAGUE AGUA----------------
//-------------------------------------------
void Desague(){
      Serial.println ("desaguando");
      delay(50);
      lcd.clear();
      lcd.setCursor(0,0);
      lcd.print("LAVADO PARADO   ");
      lcd.setCursor(0,1);
      lcd.print("DESAGUANDO      ");
      delay(50);
     digitalWrite(7, HIGH); // Resistencia
     digitalWrite(2, HIGH);// motor lavado
     delay(1000);
     for(int i=0; i<40; i++){    // Desaguando       
          puerta = digitalRead(10);  // Estado de la puerta
          if (puerta==LOW)Parotemporal();  // puerta abierta para el programa
         if( digitalRead(4)== HIGH)digitalWrite(4, LOW);  // Motor Desague
          delay(1000);       
       } //fin for  
       
     digitalWrite(4, HIGH);// Motor Desague
     delay(10000);

     for(int i=0; i<10; i++){    // Desaguando  
       Serial.print("desague: ");      
          Serial.println(i);     
          puerta = digitalRead(10);  // Estado de la puerta
          if (puerta==LOW)Parotemporal();  // puerta abierta para el programa
          if( digitalRead(4)== HIGH)digitalWrite(4, LOW);  // Motor Desague
          delay(1000);     
       } //fin for  
       
     digitalWrite(4, HIGH);// Motor Desague
     delay(200);
     ib=0;     // variable de llenado agua
} //fin desague

//--------------------------------------------
//------------LAVADO----------------
//-------------------------------------------

 void Lavado(int d){
      Serial.println ("Lavando");
      delay(50);
      for(int i=0; i<d; i++){
        Serial.print("Lavado: ");
        Serial.println(i);
            puerta = digitalRead(10);  // Estado de la puerta
            if (puerta==LOW)Parotemporal();  // puerta abierta para el programa
            termop = digitalRead(9); // Estado termostato
            if (termop==HIGH)digitalWrite(7, HIGH); // Resistencia desconecta
            if (digitalRead(2)==HIGH)digitalWrite(2, LOW);// motor lavado
            delay(200);
            Serial.println("Motor lavado funcionando" );
            delay(100);
            Temp = analogRead(A1); // Sensor Temptura
            delay(300);
            
            lcd.clear();
            lcd.setCursor(0,0);
            lcd.print("LAVADO EN MARCHA");
            
            lcd.setCursor(0,1);
            lcd.print(Temp);  // grados resistencia variable
            lcd.setCursor(3,1);
            lcd.print("C");
            
            
            lcd.setCursor(5,1);
            lcd.print("R:");
            lcd.setCursor(7,1);
            lcd.print(termop);      //estado de termostator

            lcd.setCursor(9,1);
            lcd.print("AV:");
            lcd.setCursor(13,1);
            lcd.print(d-i);       // avance del lavado
            
             
            delay(2000);       //tiempo unidad
            Serial.print("Temptura: ");
            Serial.println(Temp);
            delay(200);
          
        }
        digitalWrite(7, HIGH); // Resistencia desconecta
        digitalWrite(2, HIGH);// motor lavado
 }
 
//--------------------------------------------
//------------PUERTA ABIERTA----------------
//-------------------------------------------

void Parotemporal(){
  Serial.print("Puerta abierta ");
      lcd.clear();
      lcd.setCursor(0,0);
      lcd.print("PARO EMERGENCIA ");
      lcd.setCursor(0,1);
      lcd.print("PUERTA ABIERTA  ");
      delay(200);
      while (puerta==LOW){
          puerta = digitalRead(10);  // Estado de la puerta
          
          digitalWrite(2, HIGH);// motor lavado
          digitalWrite(3, HIGH); // Valvula entrada agua
          digitalWrite(4, HIGH); // Motor Desague
          digitalWrite(5, HIGH); // Selenoide Sal
          digitalWrite(6, HIGH); // Selenoide Pastilla
          digitalWrite(7, HIGH); // Resistencia
          delay(200);
      }
      delay(200);
      lcd.clear();
      lcd.setCursor(0,0);
      lcd.print("PUERTA CERRADA   ");
      lcd.setCursor(0,1);
      lcd.print("MARCHA REINICIADA  ");
      delay(2000);
      //lcd.clear();
}

//--------------------------------------------
//------------PARA EMERGENCIA----------------
//-------------------------------------------

void Paroemergencia(){
  Serial.print("Parada emergencia ");
      lcd.clear();
      lcd.setCursor(0,0);
      lcd.print("PARO EMERGENCIA ");
      lcd.setCursor(0,1);
      lcd.print("DESCONECTAR RED ");
      delay(100);
      while (true){
          digitalWrite(2, HIGH);// motor lavado
          digitalWrite(3, HIGH); // Valvula entrada agua
          digitalWrite(4, HIGH); // Motor Desague
          digitalWrite(5, HIGH); // Selenoide Sal
          digitalWrite(6, HIGH); // Selenoide Pastilla
          digitalWrite(7, HIGH); // Resistencia
          delay(200);
      }
      
}

//--------------------------------------------
//------------DEBORDAMIENTO-------------------
//-------------------------------------------

void Desbordamiento(){
  Serial.print("desbordamiento");
     lcd.clear();
     lcd.setCursor(0,0);
     lcd.print("PARO EMERGENCIA ");
     lcd.setCursor(0,1);
     lcd.print("DESBORDAMIENTO  ");
     delay(100);
     
      while (true){
          digitalWrite(2, HIGH);// motor lavado
          digitalWrite(3, HIGH); // Valvula entrada agua
          digitalWrite(4, HIGH); // Motor Desague
          digitalWrite(5, HIGH); // Selenoide Sal
          digitalWrite(6, HIGH); // Selenoide Pastilla
          digitalWrite(7, HIGH); // Resistencia
          delay(200);
      }
 
}

 

 

MESAJES

void mensaje(){
  switch (menu) {
    
  case 1:
      //lcd.clear();
      lcd.setCursor(2,0);
      lcd.print("PROGRAMA UNO   ");
      lcd.setCursor(2,1);
      lcd.print("PULSA MARCHA");
      opcion=1;
    break;
  case 2:
      //lcd.clear();
      lcd.setCursor(2,0);
      lcd.print("PROGRAMA DOS   ");
      lcd.setCursor(2,1);
      lcd.print("PULSA MARCHA");
      opcion=2;
    break;
  case 3:
      lcd.setCursor(2,0);
      lcd.print("PROGRAMA TRES   ");
      lcd.setCursor(2,1);
      lcd.print("PULSA MARCHA");
      if (marcha==HIGH) Programatres();
  break;
  case 4:
      lcd.clear();
      lcd.setCursor(2,0);
      lcd.print("PROGRAMA UNO   ");
      lcd.setCursor(2,1);
      lcd.print("EN PROCESO");
    break;
  case 5:
      lcd.clear();
      lcd.setCursor(1,0);
      lcd.print("LAVADO TERMINADO");
      lcd.setCursor(0,1);
      lcd.print("Casi lavado");
    break;
  case 6:

      lcd.clear();
      lcd.setCursor(0,0);
      lcd.print("LAVADO EN MARCHA");
        
      lcd.setCursor(0,1);
      lcd.print(Temp);  // grados resistencia variable
      lcd.setCursor(3,1);
      lcd.print("C");
      
      
      lcd.setCursor(5,1);
      lcd.print("R:");
      lcd.setCursor(7,1);
      lcd.print(termop);      //estado de termostator

      lcd.setCursor(9,1);
      lcd.print("AV:");
      lcd.setCursor(13,1);
      lcd.print(d2-i2);       // avance del lavado
            
 
  break;
  case 7:
      lcd.clear();
      lcd.setCursor(0,0);
      lcd.print("ENTREDA DE AGUA " );
      lcd.setCursor(0,1);
      lcd.print("CARGA AGUA: ");
      lcd.setCursor(13,1);
      lcd.print(llena2-ib2);
 
  break;
  case 8:
     lcd.clear();
      lcd.setCursor(0,0);
      lcd.print("LAVADO PARADO   ");
      lcd.setCursor(0,1);
      lcd.print("DESAGUANDO      ");
 
  break;
  case 9:
      lcd.clear();
      lcd.setCursor(0,0);
      lcd.print("PARO EMERGENCIA ");
      lcd.setCursor(0,1);
      lcd.print("PUERTA ABIERTA  ");
  break;
  case 10:
      lcd.clear();
      lcd.setCursor(0,0);
      lcd.print("PUERTA CERRADA   ");
      lcd.setCursor(0,1);
      lcd.print("MARCHA REINICIADA  ");
   break;

  case 11:
      lcd.clear();
      lcd.setCursor(0,0);
      lcd.print("PARO EMERGENCIA ");
      lcd.setCursor(0,1);
      lcd.print("DESCONECTAR RED ");
   break;

case 12:
     lcd.clear();
     lcd.setCursor(0,0);
     lcd.print("PARO EMERGENCIA ");
     lcd.setCursor(0,1);
     lcd.print("DESBORDAMIENTO  ");
   break;

case 13:

   break;

case 14:

   break;

}
}

Categorías: drupal