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);
}
// 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
Publicar un comentario