Casa Domòtica

int ledPati = 2; //led del patio
int ldrPati = A0; //sensor ldr del pati
int ledSala = 3; //led de la sala d'estar
int ledHabitacio1 = 4; //led de la habitació amb balcó
int ledHabitacio2 =6 ; //led de la habitació amb la finestra gran
int estado = 0; // estat del modul bluetooh
int trigPin = 9; // sensor ultrasònic
int echoPin = 10; // sensor ultrasònic
int alarma = 11; //alarma que provoca un soroll agut
int ledAlarma = 13; //led que s'encen en cas que s'activi l'alarma
//servo motor que acciona el garatge
#include <SoftwareSerial.h> // incluir entrada i sortida per el bluetooth

#include <Servo.h> //incluir servo
Servo myservo; // servo nom

int bluetoothTx = 0; // bluetooth tx al 0 pin
int bluetoothRx = 1; // bluetooth rx al 1 pin

SoftwareSerial bluetooth(bluetoothTx, bluetoothRx);

// variables
long duration;
int distance;
int safetyDistance;
int pos = 0;

void setup() {

Serial.begin (9600) ;
pinMode(ledPati, OUTPUT) ; //sortida de la led del pati
pinMode(ldrPati, INPUT) ; // lectura de la lluminositat del pati
pinMode(ledSala, OUTPUT) ; //sortida de la sala d'estar
pinMode(ledHabitacio1, OUTPUT) ; //sortida de la led habitació petita
pinMode(ledHabitacio2, OUTPUT) ; //sortida de la led habitació gran
pinMode(trigPin, OUTPUT); //sortida del modul bluetooh
pinMode(echoPin, INPUT); //entrada del modul
pinMode(alarma, OUTPUT); //sortida de l'alarma
pinMode(ledAlarma, OUTPUT); //sortida de la led de l'alarma

myservo.attach(12); // sortida servomotor al pin 9

//Connexió del bluetooh amb l'android
bluetooth.begin(9600);

}

void loop() {

int ldrNivell = analogRead(ldrPati) ; //PATI
if (ldrNivell <=120){ //Si el nivell de lluminositat és inferior a 120
digitalWrite(ledPati, HIGH) ; //Encendre LED del pati
Serial.println("A la nit no hi ha llum, LED encesa") ; //I escriure això al serial println
}
else{ //Sino...
digitalWrite(ledPati, LOW) ; //La LED s'apaga
Serial.println("Durant el dia hi ha llum, LED apagada");
}

if(Serial.available()>0){ //Si es troba disponible...
estado = Serial.read(); //Actuació sobre la sala d'estar
}
if (estado =='1'){ //Si enviem senyal 1 desde l'app
digitalWrite(ledSala,HIGH); //S'encen el LED de la Sala
}
if(estado=='2'){ //Si enviem senyal 2 desde l'app
digitalWrite(ledSala,LOW); //S'apaga el LED de la sala
}

if(Serial.available()>0){ //Si es troba disponible...
estado = Serial.read(); //Actuació sobre habitació1, habitació amb balcó
}
if (estado =='3'){
digitalWrite(ledHabitacio1,HIGH);
}
if(estado=='4'){
digitalWrite(ledHabitacio1,LOW);
}

if(Serial.available()>0){ //Si es troba disponible...
estado = Serial.read(); //Actuació sobre habitació2,habitació gran
}
if (estado =='5'){
digitalWrite(ledHabitacio2,HIGH);
}
if(estado=='6'){
digitalWrite(ledHabitacio2,LOW);
}

//ALARMA

{
// Esborra el trigPin, per generar un impuls ''nou''
digitalWrite(trigPin, LOW);
delayMicroseconds(2);

// Estableix el trigPin en estat high per a 10 microsegons, generem un tir,impuls
digitalWrite(trigPin, HIGH);
delayMicroseconds(10);
digitalWrite(trigPin, LOW); //Acabem amb l'impuls

//Llegeix l'echoPin, retorna el temps de desplaçament de l'ona sonora en microsegons
duration = pulseIn(echoPin, HIGH);

// Calcular la distancia, la passem a cm
distance= duration*0.034/2;

if(Serial.available()>0){ //Si es troba disponible la connexió bluetooh
estado = Serial.read(); //Llegeix els bytes donat per el modul bluetooh, rep la informació
}
safetyDistance = distance; //distancia de seguretat és igual a la distància que hi ha

if (estado =='7'){ //Si rep la senayl 7 (alarma activada)
if (safetyDistance <= 5){ //I la distancia de seguretat són 5 o menys...
digitalWrite(alarma, HIGH); //Encen el soroll de l'alarma(buzzer)
digitalWrite(ledAlarma, HIGH); //Encen la LED

}

}
else{ //Sino, mantent-lo tot apagat
digitalWrite(alarma, LOW);
digitalWrite(ledAlarma, LOW);
}
}
if (estado =='8') { //I si es troba la senyal 8 (alarma desactivada), apaga tot

digitalWrite(alarma,LOW) ;
digitalWrite(ledAlarma,LOW) ;
}

// Posar la distancia en el Serial Monitor
Serial.print("Distance: ");
Serial.println(distance);

{

//GARATGE
//LLegir el numero bluetooh i escriure la senyal
if(bluetooth.available()> 0 ) // rebre el numero del bluetooh si es troba disponible
{
int servopos = bluetooth.read(); // guardar el nombre
Serial.println(servopos); // serial print rebut pel bluetooh
myservo.write(servopos); // rotar el servo a l'angle demanat per l'app
}
}
}