# data[].attributes.body
//    iQuarium   //

///Codis bluetooth ///

//m = color dels leds RGB Manual

//+ = fixar colors leds

//F = ençendre filtre

//f = apagar filtre

//z = inici missatge personalitzat

//# = final missatge personalitzat

///  Variables ///

//Variables

float temperatura = 0;

String estatBomba = "Inactiu";

int voltes = 0;

String colorRGB = "?";

long tempsFalta = 86400000;

long counterGlobal = 0;

int sensorAigua = 600;

char codiBT;

int tempsBotoPremut = 0;

int tempsBuzzer = 300;

char temperaturaBTchar [6];

char aiguaBTchar [4];

char tempsFaltaBTchar [9];

String missatgePersonalitzat ="(Personalitza aixo)";

int maximNivellAigua = 510;

//Pins:

//const int btTX = 11; // * TX is digital pin 3 (connect to RX of other device)

//const int btRX = 10; // * RX is digital pin 2 (connect to TX of other device)

const int pinVerd = 2;

const int pinBlau =3;

const int pinVermell = 4;

const int pinTemperatura = 13;

const int pinBombaOutput = 34;

const int pinBombaInput = 5;

const int pinCountdown = 50;

const int pinSensorAigua = 7;

const int pinBombaSecundaria = 53;

const int pinBotoCountdown = 52;

const int pinBuzzer = 9;

const int ledTemps = 6;

//Libreries

#include <OneWire.h>

#include <DallasTemperature.h>

#include <Wire.h>

#include <LCD.h>

#include <LiquidCrystal_I2C.h>

#define I2C_ADDR    0x27

LiquidCrystal_I2C             lcd(I2C_ADDR,2, 1, 0, 4, 5, 6, 7);

#define ONE_WIRE_BUS pinTemperatura

OneWire oneWire(ONE_WIRE_BUS);

DallasTemperature sensors(&oneWire);

void setup(){

//LCD display

lcd.begin (20,4);

lcd.setBacklightPin(3,POSITIVE);

lcd.setBacklight(HIGH);

//Sensor de temperatura

sensors.begin();

Serial1.begin(38400);

pinMode(pinBlau,OUTPUT);

pinMode(pinVerd,OUTPUT);

pinMode(pinVermell,OUTPUT);

pinMode(pinTemperatura,INPUT);

pinMode(pinBombaOutput,OUTPUT);

pinMode(pinBombaInput,INPUT);

pinMode(pinSensorAigua,INPUT);

pinMode(pinBombaSecundaria,OUTPUT);

pinMode(pinBotoCountdown,INPUT);

pinMode(6,OUTPUT);

pinMode(pinBuzzer,OUTPUT);

Serial.begin(9600);

}

void loop() {

Serial.println(sensorAigua);

//Enviar BT

dtostrf(temperatura, 6, 2, temperaturaBTchar);

Serial1.write(temperaturaBTchar);

Serial1.write('|');

dtostrf(sensorAigua, 4, 0, aiguaBTchar);

Serial1.write(aiguaBTchar);

Serial1.write('|');

dtostrf(tempsFalta, 9, 0, tempsFaltaBTchar);

Serial1.write(tempsFaltaBTchar);

Serial.println(tempsFalta);

//Countdown

if (digitalRead(pinBotoCountdown)==1){

if (tempsBotoPremut < 4){

Serial.println("Boto premut, countdown resetejat");

tempsBotoPremut = tempsBotoPremut + 1;

Serial.println("Temps boto premut " + String(tempsBotoPremut));

digitalWrite(ledTemps,0);

if(tempsBotoPremut ==1){

tempsBuzzer=300;

}

else if (tempsBotoPremut ==2){

tempsBuzzer=250;

}

else if (tempsBotoPremut ==3){

tempsBuzzer=200;

}

tone(pinBuzzer,400,tempsBuzzer);

}

else {

counterGlobal = millis();

Serial.println("Avasador de menjar fixat a aquesta hora");

tempsBotoPremut = 0;

tone(pinBuzzer,400);

delay(350);

noTone(pinBuzzer);

delay(150);

tone(pinBuzzer,400);

delay(350);

noTone(pinBuzzer);

delay(150);

tone(pinBuzzer,400);

delay(600);

noTone(pinBuzzer);

}

}else{

tempsBotoPremut=0;

}

if (millis() - counterGlobal > 86400000){

digitalWrite(ledTemps,1);

counterGlobal = millis();

}

tempsFalta = (86400000 - (millis() - counterGlobal));

//Sensor d'aigua

sensorAigua = analogRead(pinSensorAigua);

if (sensorAigua < maximNivellAigua){

digitalWrite(pinBombaSecundaria,1);

}else{

digitalWrite(pinBombaSecundaria,0);

}

if (voltes < 40){

voltes = voltes + 1;

}else{

voltes=0;

}

//Text display

if( voltes == 0){

lcd.setCursor(0,0);

lcd.print("-                   ");

}

if( voltes == 1){

lcd.setCursor(0,0);

lcd.print("--                  ");

}

if( voltes == 2){

lcd.setCursor(0,0);

lcd.print(">--                 ");

}

if( voltes == 3){

lcd.setCursor(0,0);

lcd.print("m>--                ");

}

if( voltes == 4){

lcd.setCursor(0,0);

lcd.print("um>--               ");

}

if( voltes == 5){

lcd.setCursor(0,0);

lcd.print("ium>--              ");

}

if( voltes == 6){

lcd.setCursor(0,0);

lcd.print("rium>--             ");

}

if( voltes == 7){

lcd.setCursor(0,0);

lcd.print("arium>--            ");

}

if( voltes == 8){

lcd.setCursor(0,0);

lcd.print("uarium>--           ");

}

if( voltes == 9){

lcd.setCursor(0,0);

lcd.print("Quarium>--          ");

}

if( voltes == 10){

lcd.setCursor(0,0);

lcd.print("iQuarium>--         ");

}

if( voltes == 11){

lcd.setCursor(0,0);

lcd.print("<iQuarium>--        ");

}

if( voltes == 12){

lcd.setCursor(0,0);

lcd.print("-<iQuarium>--       ");

}

if( voltes == 13){

lcd.setCursor(0,0);

lcd.print("--<iQuarium>--      ");

}

if( voltes == 14){

lcd.setCursor(0,0);

lcd.print(" --<iQuarium>--     ");

}

if( voltes == 15){

lcd.setCursor(0,0);

lcd.print("  --<iQuarium>--    ");

}

if( voltes == 16){

lcd.setCursor(0,0);

lcd.print("   --<iQuarium>--   ");

}

if( voltes == 25){

lcd.setCursor(0,0);

lcd.print("    --<iQuarium>--  ");

}

if( voltes == 26){

lcd.setCursor(0,0);

lcd.print("     --<iQuarium>-- ");

}

if( voltes == 27){

lcd.setCursor(0,0);

lcd.print("      --<iQuarium>--");

}

if( voltes == 28){

lcd.setCursor(0,0);

lcd.print("       --<iQuarium>-");

}

if( voltes == 29){

lcd.setCursor(0,0);

lcd.print("        --<iQuarium>");

}

if( voltes == 30){

lcd.setCursor(0,0);

lcd.print("         --<iQuarium");

}

if( voltes == 31){

lcd.setCursor(0,0);

lcd.print("          --<iQuariu");

}

if( voltes == 32){

lcd.setCursor(0,0);

lcd.print("           --<iQuari");

}

if( voltes == 33){

lcd.setCursor(0,0);

lcd.print("            --<iQuar");

}

if( voltes == 34){

lcd.setCursor(0,0);

lcd.print("             --<iQua");

}

if( voltes == 35){

lcd.setCursor(0,0);

lcd.print("              --<iQu");

}

if( voltes == 36){

lcd.setCursor(0,0);

lcd.print("               --<iQ");

}

if( voltes == 37){

lcd.setCursor(0,0);

lcd.print("                --<i");

}

if( voltes == 38){

lcd.setCursor(0,0);

lcd.print("                 --<");

}

if( voltes == 39){

lcd.setCursor(0,0);

lcd.print("                  --");

}

if( voltes == 40){

lcd.setCursor(0,0);

lcd.print("                   -");

}

lcd.setCursor (0,1);

lcd.print("                    ");

lcd.setCursor (0,1);

lcd.print(missatgePersonalitzat);

lcd.setCursor (0,3);

lcd.print("Estat filtre="+ estatBomba);

sensors.requestTemperatures();

temperatura = sensors.getTempCByIndex(0);

lcd.setCursor (0,2);

lcd.print("Temperatura="+ String(temperatura)+ "C  ");

while (Serial1.available()>0)

{

codiBT = Serial1.read();

if (codiBT == 'm'){

Serial.print("RGB Changed");

Serial.println();

int ledVermell = Serial1.parseInt(); //Guardem valors a les variables

int ledVerd = Serial1.parseInt();

int ledBlau = Serial1.parseInt();

//Quan hi ha + s'acaba

if (Serial1.read() == '+')

{

Serial.flush();

//Modifiquem els leds

analogWrite(pinVermell,ledVermell);

analogWrite(pinVerd,ledVerd);

analogWrite(pinBlau,ledBlau);

}

}

if (codiBT == 'F'){

Serial.println("Filter turned ON");

digitalWrite(pinBombaOutput,1);

estatBomba = " Actiu ";

}

if (codiBT == 'f'){

Serial.println("Filter turned OFF");

digitalWrite(pinBombaOutput,0);

estatBomba = "Inactiu";

}

if (codiBT=='z'){

missatgePersonalitzat ="";

char d = Serial1.read();

while(true){

d = Serial1.read();

if (d=='#') break;

missatgePersonalitzat = missatgePersonalitzat + d;

}

Serial.println("hola" + missatgePersonalitzat);

}

}

}

# data[].attributes.body
Treball de Recerca