Ir al contenido principal

PROGRAMA TERMINADO PARA ARDUINO

Aquí dejamos el código final que hemos programado en IDE de Arduino. Después de varias pruebas e ideas con Scrach y LadderMaker hemos optado por lo siguiente,






// PROGRAMA PARA ENERGY SAVER ARM
// FPBE2 IES PABLO SERRANO, ANDORRA
// ELENA BARON
// IONUT VOIVU, JUAN GABARRI, CANDELA SOSA


#include <DHT.h>  //Añadimos la libreria con la cual trabaja el sensor temperatura y humedad
#include <Stepper.h>

#define STEPS 2048 // libreria para motor paso a paso
#define HT1 12  // pin en el que esta el sensor interior
#define HT2 13  // pin sensor exterior
#define DHTTYPE DHT11   // DHT 11 El sensor que vamos a utilizar, hay varios en la libreria

const int sensorlluvia = 9; // pin sensor de lluvia
const int fincarrera1 = 10; // pinfinal de carrera si abierto
const int fincarrera2 = 11; // pin final de carrera si cerrado
char blue;
const int stepsPerRevolution = 200;  // definir la velocidad del motor paso a paso
Stepper myStepper(stepsPerRevolution, 4, 5, 6, 7); // inicializar motor paso a paso pin 4 hasta 7

DHT dht1 (HT1, DHTTYPE);  //Indica el pin con el que trabajamos y el tipo de sensor
DHT dht2 (HT2, DHTTYPE);  //definiendo dos variables de tipo sensor DHT



void setup()
{

  dht1.begin();  //Iniciamos los sensores
  dht2.begin();

  pinMode(sensorlluvia, INPUT);  // definir pin 9 como entrada
  pinMode(fincarrera1, INPUT);  // definir pin 10 como entrada
  pinMode(fincarrera2, INPUT);  // definir pin 11 como entrada

  myStepper.setSpeed(60);

  Serial.begin(9600);
  blue = 2; //valor que no nos puede enviar desde el smartphone (es texto)

}



void loop()
{
  float h1, h2, t1, t2, lluvia, cerrada, abierta = 0;

  h1 = dht1.readHumidity();  //Guarda la lectura de la humedad en la variable float h dentro
  t1 = dht1.readTemperature();  //Guarda la lectura de la temperatura en la variable float t

  h2 = dht2.readHumidity();  //Guarda la lectura de la humedad en la variable float h fuera
  t2 = dht2.readTemperature();  //Guarda la lectura de la temperatura en la variable float t

  lluvia = digitalRead(sensorlluvia);  //lectura digital de pin
  //si (lluvia == LOW) Se habra detectado lluvia, habrá que cerrar la ventana si estaba abierta

  abierta = digitalRead(fincarrera1);  //if (abierta == HIGH) La ventana esta cerrada
  cerrada = digitalRead(fincarrera2);  //if (cerrada == HIGH) La ventana esta cerrada

  if ( Serial.available() ) {  //leer entrada bluetooth que cambie el valor de señalbluetooth
    blue = Serial.read();
  }




  switch (blue) {
    case '2':
      if ((cerrada == HIGH) and (lluvia == HIGH) and (((h1 > 60 or h1 < 50) and (t1 > 18 and t1 > 24)) or (t1 > 27 and t2 < t1) or (t1<22 and t2>t1))) //--> abrir
      { while (abierta == LOW) {
          myStepper.step(stepsPerRevolution); //girarmotorparabrir;
          abierta = digitalRead(fincarrera1);
        }
      }

      else if ((abierta == HIGH) and (lluvia == LOW) or (t1 < 22 and t1 < t2) or (t1 > 27 and t1 > t2) or ((h1<50 or h1>60) and (t1 > 18 and t1 > 24))) //--> cerrar
      { while (cerrada == LOW) {
          myStepper.step(-stepsPerRevolution); //girarmotorparcerrar;
          cerrada = digitalRead(fincarrera2);
        }
      }
      break;

    case '0':
      if (cerrada == HIGH) { //--> abrir
        while (abierta == LOW) {
          myStepper.step(stepsPerRevolution); //girarmotorparabrir;
          abierta = digitalRead(fincarrera1);
        }
        blue = '2';
        delay(600000);
      }
      else {}
      break;


    case '1':
      if (abierta == HIGH) { //--> cerrar
        while (cerrada == LOW) {
          myStepper.step(-stepsPerRevolution); //girarmotorparacerrar;
          cerrada = digitalRead(fincarrera2);
        }
        blue = '2';
        delay(600000);
      }
      else {}
      break;

    default:  //--> hacer nada
      break;

  }

  delay(1000);

}

Comentarios