Documentos de Académico
Documentos de Profesional
Documentos de Cultura
PROYECTO FINAL
CONTROL DOMÓTICO DE UNA CASA
INTEGRANTES:
OBJETIVOS
#include <string.h>
//Defines
#define alarma 22
#define puertas 23
#define patio 24
#define luces 25
#define abrir_persianas 26
#define cerrar_persianas 27
#define alarma_encendida 33
#define puertas_cerradas 35
#define motor_patio 37
#define valvula_abierta 39
#define luces_encendidas 43
#define persianas_abiertas 45
#define persianas_cerradas 47
#define BTNREMOTOLOCAL 3
#define BTNALARMA 4
#define BTNPUERTA 5
#define BTNPATIO 6
#define BTNLUCES 7
#define BTNPERSIANAS 8
//Declarations
int var_alarma, var_puertas, var_motor_patio;
int var_valvula, var_luces, var_persianas_abiertas;
int var_persianas_cerradas, var, comando;
void setup() {
//Iniciar comunicación serial
Serial.begin(9600);
//Configurar puertos:
pinMode(alarma, OUTPUT);
pinMode(puertas, OUTPUT);
pinMode(patio, OUTPUT);
pinMode(luces, OUTPUT);
pinMode(abrir_persianas, OUTPUT);
pinMode(cerrar_persianas, OUTPUT);
pinMode(2, INPUT_PULLUP);
pinMode(3, INPUT_PULLUP);
pinMode(4, INPUT_PULLUP);
pinMode(5, INPUT_PULLUP);
pinMode(6, INPUT_PULLUP);
pinMode(7, INPUT_PULLUP);
pinMode(alarma_encendida, INPUT);
pinMode(puertas_cerradas, INPUT);
pinMode(motor_patio, INPUT);
pinMode(valvula_abierta, INPUT);
pinMode(luces_encendidas, INPUT);
pinMode(persianas_abiertas, INPUT);
pinMode(persianas_cerradas, INPUT);
}
void loop() {
//Leer SW local/remoto
//Caso 0, modo remoto, sw presionado
if(digitalRead(BTNREMOTOLOCAL)==0){
if(Serial.available()){
var=Serial.read();
}
funcionMilagrosa();
}
//Caso 1, modo local, sw no presionado
else{
//Alarma
if (digitalRead(BTNALARMA)==0){
var='a';
}
else{
var='b';
}
funcionMilagrosa();
//Puertas
if (digitalRead(BTNPUERTA)==0){
var='c';
}
else{
var='d';
}
funcionMilagrosa();
//Regar patio
if (digitalRead(BTNPATIO)==0){
var='e';
}
else{
var='f';
}
funcionMilagrosa();
//Luces
if (digitalRead(BTNLUCES)==0){
var='g';
}
else{
var='h';
}
funcionMilagrosa();
//Persianas
if (digitalRead(BTNPERSIANAS)==0){
var='i';
}
else{
var='j';
}
funcionMilagrosa();
}
}
void funcionMilagrosa(void){
activar_alarma();
detectar_alarma();
cerrar_puertas();
detectar_puertas();
regar_patio();
detectar_patio();
prender_luces();
detectar_luces();
abrir_cerrar_persianas();
detectar_persianas();
enviar_datos();
}
void activar_alarma(){
if(var=='a'){
digitalWrite(alarma, HIGH);
}
if(var=='b'){
digitalWrite(alarma, LOW);
}
}
void detectar_alarma(){
if(digitalRead(alarma_encendida)==HIGH){
var_alarma = 1;
}
if(digitalRead(alarma_encendida)==LOW){
var_alarma = 0;
}
}
void cerrar_puertas(){
if(var=='c'){
digitalWrite(puertas, HIGH);
}
if(var=='d'){
digitalWrite(puertas, LOW);
}
}
void detectar_puertas(){
if(digitalRead(puertas_cerradas)==HIGH){
var_puertas = 1;
}
if(digitalRead(puertas_cerradas)==LOW){
var_puertas = 0;
}
}
void regar_patio(){
if(var=='e'){
digitalWrite(patio, HIGH);
}
if(var=='f'){
digitalWrite(patio, LOW);
}
}
void detectar_patio(){
if(digitalRead(motor_patio)==HIGH){
var_motor_patio = 1;
}
if(digitalRead(motor_patio)==LOW){
var_motor_patio = 0;
}
if(digitalRead(valvula_abierta)==HIGH){
var_valvula = 1;
}
if(digitalRead(valvula_abierta)==LOW){
var_valvula = 0;
}
}
void prender_luces(){
if(var=='g'){
digitalWrite(luces, HIGH);
}
if(var=='h'){
digitalWrite(luces, LOW);
}
}
void detectar_luces(){
if(digitalRead(luces_encendidas)==HIGH){
var_luces = 1;
}
if(digitalRead(luces_encendidas)==LOW){
var_luces = 0;
}
}
void abrir_cerrar_persianas(){
if(var=='i'){
digitalWrite(cerrar_persianas, LOW);
delay(10);
digitalWrite(abrir_persianas, HIGH);
}
if(var=='j'){
digitalWrite(abrir_persianas, LOW);
delay(10);
digitalWrite(cerrar_persianas, HIGH);
}
}
void detectar_persianas(){
if(digitalRead(persianas_cerradas)==HIGH){
var_persianas_cerradas = 1;
}
if(digitalRead(persianas_cerradas)==LOW){
var_persianas_cerradas = 0;
}
if(digitalRead(persianas_abiertas)==HIGH){
var_persianas_abiertas = 1;
}
if(digitalRead(persianas_abiertas)==LOW){
var_persianas_abiertas = 0;
}
}
void enviar_datos(){
Serial.print("A");
Serial.print(var_alarma);
Serial.print("B");
Serial.print(var_puertas);
Serial.print("C");
Serial.print(var_motor_patio);
Serial.print("D");
Serial.print(var_valvula);
Serial.print("E");
Serial.print(var_luces);
Serial.print("F");
Serial.print(var_persianas_abiertas);
Serial.print("G");
Serial.print(var_persianas_cerradas);
Serial.println("H");
}
CONCLUSIONES PERSONALES
Abrahamsz, Salvador
Briceño, Luis
Navarro, Carlos
Rincón, Ernesto