Κώδικας:
void loop() {
analogReference(DEFAULT); // ορίζουμε ότι η τάση αναφοράς του μετατροπεα είναι η προκαθορισμενη 5V
temptrValue = analogRead(temptr); // aisthitiras thermokrasias trofodotikou
lights = analogRead(light); // aisthitiras fotos
ldr = analogRead(14); // aisthitiras thermokrasias trofodotikou (allagi mono stin onomasia, idio me temptr)
nRainVal = analogRead(A15); // aisthitiras ugrasias
RawValue = analogRead(analogIn); // metritis Ampere
VoltageValue = analogRead(VoltPin); // metritis 12 Volt
value = analogRead(analogInput); // metritis 24 Volt
t = rtc.getTime(); // roloi
/***upologismos ton ampere***/
Voltage = (RawValue / 1023.0) * 5000; // Gets you mV
Amps = ((Voltage - ACSoffset) / mVperAmp);
/***upologismos ton ampere***/
voltage = VoltageValue * (4.90 / 1023.0) * kVD; // υπολογισμός τάσης 12V
/***upologizei tis antistasis kai tin metrisi sto analogiko pin gia tin metrisi ton 24V***/
vout = (value * 4.97) / 1023.0; // see text
vin = vout / (R2/(R1+R2));
if (vin<0.09) {
vin=0.0;//Δήλωση αναιρεί ανεπιθύμητη ανάγνωση!
}
/***upologizei tis antistasis kai tin metrisi sto analogiko pin gia tin metrisi ton 24V***/
bIsRaining = !(digitalRead(nRainDigitalIn)); //Cheks Digital Pin 2, Output D0
if (bIsRaining) { //Cheks Digital Pin 2, Output D0
strRaining = "YES";
}
else {
strRaining = "NO";
}
/***ruthmisi fotismou othonis***/
lights = 1023 - lights;
LEDbrightness = map(lights, 0, 1023, 0, 255);
analogWrite(11, LEDbrightness);
/***ruthmisi fotismou othonis***/
/***anemistiras***/
{
if (temptrValue <= 470.0)
analogWrite(12, 0);
if (temptrValue <= 465.0)
analogWrite(12, 30);
if (temptrValue <= 460.0)
analogWrite(12, 50);
if (temptrValue <= 450.0)
analogWrite(12, 70);
if (temptrValue <= 440.0)
analogWrite(12, 100);
if (temptrValue <= 430.0)
analogWrite(12, 170);
if (temptrValue <= 420.0)
analogWrite(12, 210);
if (temptrValue <= 410.0)
analogWrite(12, 240);
if (temptrValue <= 400.0)
analogWrite(12, 255);
}
/***anemistiras***/
/* kostas */
{
if(t.hour >= 00 )
analogWrite(ledR, 30);
analogWrite(ledG, 20);
analogWrite(ledB, 100);
if(t.hour >= 00 && t.min >=30 )
analogWrite(ledR, 20);
analogWrite(ledG, 10);
analogWrite(ledB, 100);
if(t.hour >=1 )
analogWrite(ledR, 10);
analogWrite(ledG, 0);
analogWrite(ledB, 100);
if(t.hour >= 2 )
analogWrite(ledR, 0);
analogWrite(ledG, 0);
analogWrite(ledB, 120);
if(t.hour >= 3 )
analogWrite(ledR, 0);
analogWrite(ledG, 20);
analogWrite(ledB, 120);
if(t.hour >= 4 )
analogWrite(ledR, 0);
analogWrite(ledG, 50);
analogWrite(ledB, 110);
if(t.hour >= 4 && t.min >=20)
analogWrite(ledR, 0);
analogWrite(ledG, 65);
analogWrite(ledB, 105);
if(t.hour >= 5 )
analogWrite(ledR, 0);
analogWrite(ledG, 80);
analogWrite(ledB, 100);
if(t.hour >= 6 )
analogWrite(ledR, 0);
analogWrite(ledG, 100);
analogWrite(ledB, 70);
if(t.hour >= 6 && t.min >=30 )
analogWrite(ledR, 0);
analogWrite(ledG, 120);
analogWrite(ledB, 50);
if(t.hour >= 7 )
analogWrite(ledR, 0);
analogWrite(ledG, 130);
analogWrite(ledB, 30);
if(t.hour >= 7 && t.min >=30)
analogWrite(ledR, 0);
analogWrite(ledG, 140);
analogWrite(ledB, 15);
if(t.hour >= 8 )
analogWrite(ledR, 0);
analogWrite(ledG, 150);
analogWrite(ledB, 0);
if(t.hour >= 8 && t.min >=10)
analogWrite(ledR, 20);
analogWrite(ledG, 150);
analogWrite(ledB, 20);
if(t.hour >= 8 && t.min >=20)
analogWrite(ledR, 40);
analogWrite(ledG, 145);
analogWrite(ledB, 40);
if(t.hour >= 8 && t.min >=40)
analogWrite(ledR, 50);
analogWrite(ledG, 145);
analogWrite(ledB, 50);
if(t.hour >= 9 )
analogWrite(ledR, 60);
analogWrite(ledG, 140);
analogWrite(ledB, 60);
if(t.hour >= 9 && t.min >=20)
analogWrite(ledR, 60);
analogWrite(ledG, 145);
analogWrite(ledB, 70);
if(t.hour >= 9 && t.min >=30)
analogWrite(ledR, 70);
analogWrite(ledG, 145);
analogWrite(ledB, 85);
if(t.hour >= 9 && t.min >=40)
analogWrite(ledR, 80);
analogWrite(ledG, 150);
analogWrite(ledB, 95);
if(t.hour >= 10 )
analogWrite(ledR, 90);
analogWrite(ledG, 150);
analogWrite(ledB, 100);
if(t.hour >= 10 && t.min >=30)
analogWrite(ledR, 10);
analogWrite(ledG, 150);
analogWrite(ledB, 115);
if(t.hour >= 11 )
analogWrite(ledR, 110);
analogWrite(ledG, 150);
analogWrite(ledB, 130);
if(t.hour >= 12 )
analogWrite(ledR, 150);
analogWrite(ledG, 150);
analogWrite(ledB, 150);
if(t.hour >= 13 )
analogWrite(ledR, 150);
analogWrite(ledG, 100);
analogWrite(ledB, 130);
}
/***pollaples entoles dokimastiko***/
/*if(lights >= 311 && lights <=14){
digitalWrite(voithitikoled1, LOW);
//κώδικας
}
else
digitalWrite(voithitikoled1, HIGH);
}*/
z=0;
y=0;
tecla=customKeypad.getKey();
MSNinicio();
if(tecla) // Check for a valid key.
{
switch(tecla)
{
case '#': // SELECCION PARA LEER SENSORES 3 Y 4
digitalWrite(BZ, HIGH);
delay(40);
digitalWrite(BZ, LOW);
lcd.clear();
sensor();
break;
/* case 'B': // SELECCION PARA LEER SENSORES 3 Y 4
digitalWrite(BZ, HIGH);
delay(40);
digitalWrite(BZ, LOW);
lcd.clear();
lcd.setCursor (6, 0);
lcd.print("EPILOGI");
lcd.setCursor (3, 1);
lcd.print("XROMATOS");
delay(500);
lcd.clear();
lcd.setCursor (0, 0);
lcd.print("1: KOKKINO");
lcd.setCursor (0, 1);
lcd.print("2: MPLE");
lcd.setCursor (0, 2);
lcd.print("3: LEYKO");
lcd.setCursor (0, 3);
lcd.print("**EPILOGI XROMATON**");
xroma();
break;
*/
case 'D': // SELECCION PARA LEER SENSORES 3 Y 4
digitalWrite(BZ, HIGH);
delay(40);
digitalWrite(BZ, LOW);
lcd.clear();
lcd.setCursor (6, 0);
lcd.print("EPILOGI");
lcd.setCursor (3, 1);
lcd.print("REYMATOS 220V");
delay(500);
lcd.clear();
lcd.setCursor (0, 0);
lcd.print("*: INVERTER");
lcd.setCursor (0, 1);
lcd.print("#: D.E.H.");
lcd.setCursor (0, 2);
lcd.print("D: EXIT");
lcd.setCursor (0, 3);
lcd.print("**EPILOGI PAROXIS**");
ZoneSense1();
break;
case '1': // SELECCION PARA LEER SENSORES 3 Y 4
digitalWrite(BZ, HIGH);
delay(40);
digitalWrite(BZ, LOW);
lcd.clear();
digitalWrite(voithitikoled1, !digitalRead(voithitikoled1));
lcd.setCursor (0, 1);
lcd.print("*** FOS ASFALEIAS***");
delay(800);
lcd.clear();
break;
case '2': // SELECCION PARA LEER SENSORES 3 Y 4
digitalWrite(BZ, HIGH);
delay(40);
digitalWrite(BZ, LOW);
lcd.clear();
digitalWrite(saloni2, !digitalRead(saloni2));
lcd.setCursor (3, 1);
lcd.print("*** SALONI ***");
delay(800);
lcd.clear();
break;
case '3': // SELECCION PARA LEER SENSORES 3 Y 4
digitalWrite(BZ, HIGH);
delay(40);
digitalWrite(BZ, LOW);
lcd.clear();
digitalWrite(trapezi3, !digitalRead(trapezi3));
lcd.setCursor (3, 1);
lcd.print("*** TRAPEZI ***");
delay(800);
lcd.clear();
break;
case '4': // SELECCION PARA LEER SENSORES 3 Y 4
digitalWrite(BZ, HIGH);
delay(40);
digitalWrite(BZ, LOW);
lcd.clear();
digitalWrite(kouzina4, !digitalRead(kouzina4));
lcd.setCursor (2, 1);
lcd.print("*** KOYZINA ***");
delay(800);
lcd.clear();
break;
case '5': // SELECCION PARA LEER SENSORES 3 Y 4
digitalWrite(BZ, HIGH);
delay(40);
digitalWrite(BZ, LOW);
digitalWrite(kouzinapagos5, !digitalRead(kouzinapagos5));
lcd.clear();
lcd.setCursor (0, 1);
lcd.print("*** PAGOS KOYZINA***");
lcd.clear();
break;
case '7': // SELECCION PARA LEER SENSORES 3 Y 4
digitalWrite(BZ, HIGH);
delay(40);
digitalWrite(BZ, LOW);
digitalWrite(relay7, !digitalRead(relay7));
lcd.clear();
lcd.setCursor (0, 1);
lcd.print("*** keno ***");
delay(800);
lcd.clear();
break;
case '0': // SELECCION PARA LEER SENSORES 3 Y 4
digitalWrite(BZ, HIGH);
delay(40);
digitalWrite(BZ, LOW);
lcd.clear();
digitalWrite(voithitikoled1, !digitalRead(voithitikoled1));
digitalWrite(saloni2, !digitalRead(saloni2));
digitalWrite(trapezi3, !digitalRead(trapezi3));
digitalWrite(kouzina4, !digitalRead(kouzina4));
digitalWrite(kouzinapagos5, !digitalRead(kouzinapagos5));
lcd.setCursor (0, 1);
lcd.print("*** OLA TA FOTA***");
delay(800);
lcd.clear();
break;
}
}
}
void ZoneSense1() {
while(y<1)
{
tecla=customKeypad.getKey(); //CHOOSE SENSOR
if(tecla =='*'){
digitalWrite(BZ, HIGH);
delay(10);
digitalWrite(BZ, LOW);
lcd.clear();
lcd.setCursor (0, 0);
lcd.print("220 V");
lcd.setCursor (1, 6);
lcd.print("Apo Inverter");
delay(800);
lcd.setCursor (0, 0);
lcd.print(" ");
lcd.setCursor (0, 1);
lcd.print(" ");
lcd.setCursor (0, 2);
lcd.print(" ");
for(i=0; i < 1; i++){
digitalWrite(inverter6, LOW);
lcd.setCursor (0, 1);
delay(200);
lcd.print(i);
}
y=1;
z=1;
}
if(tecla =='#'){
digitalWrite(BZ, HIGH);
delay(10);
digitalWrite(BZ, LOW);
lcd.clear();
lcd.setCursor (0, 0);
lcd.print("220 V");
lcd.setCursor (1, 6);
lcd.print("Apo D.E.H.");
delay(800);
lcd.setCursor (0, 0);
lcd.print(" ");
lcd.setCursor (0, 1);
lcd.print(" ");
lcd.setCursor (0, 2);
lcd.print(" ");
for(i=0; i < 1; i++){
digitalWrite(inverter6, HIGH);
lcd.setCursor (0, 1);
delay(200);
lcd.print(i);;
}
y=1;
z=1;
}
if(tecla =='D'){
digitalWrite(BZ, HIGH);
delay(10);
digitalWrite(BZ, LOW);
lcd.clear();
lcd.setCursor (0, 0);
lcd.print("EXIT MENU");
delay(800);
lcd.setCursor (0, 0);
lcd.print(" ");
lcd.setCursor (0, 1);
lcd.print(" ");
lcd.setCursor (0, 2);
lcd.print(" ");
for(i=0; i < 1; i++){
MSNinicio();
lcd.setCursor (0, 1);
delay(200);
lcd.print(i);
}
y=1;
z=1;
}
}
}
/***********************************************************************FUNCION BIENVENIDA*********************************************************/
void sensor(){
/* lcd.setCursor (0, 0);
lcd.print(" ");
*/
while(y<1)
{
tecla=customKeypad.getKey();
lcd.setCursor(13, 2);
lcd.print("A");
lcd.print(Amps);
lcd.setCursor(12, 1);
lcd.print("");
lcd.print(nRainVal);
lcd.setCursor(0, 2);
lcd.print("V");
lcd.print(vin);
lcd.setCursor(10, 2);
lcd.print(char(1));
delay(500);
lcd.clear();
if(tecla =='*'){
digitalWrite(BZ, HIGH);
delay(10);
digitalWrite(BZ, LOW);
lcd.clear();
for(i=0; i < 1; i++){
MSNinicio();
lcd.setCursor (0, 1);
delay(200);
lcd.print(i);
}
y=1;
z=1;
}
}
}
void MSNinicio(){
/* lcd.setCursor (0, 0);
lcd.print(" ");
*/
lcd.setCursor(10, 0);
// print the number of seconds since reset:
lcd.print(t.date, DEC);
lcd.print("/");
lcd.print(rtc.getMonthStr());
lcd.print("/");
lcd.print(t.year, DEC);
lcd.setCursor(0, 1);
lcd.setCursor(0, 0);
lcd.print("");
lcd.print(t.hour, DEC);
lcd.print(":");
lcd.print(t.min, DEC);
lcd.print(":");
lcd.print(t.sec, DEC);
lcd.print(" ");
lcd.setCursor(0, 1);
lcd.print(char(10));
lcd.print(temptrValue);
lcd.setCursor(6, 1);
lcd.print(char(10));
lcd.print(rtc.getTemp());
lcd.setCursor(13, 1);
lcd.print((char)9);
lcd.print(lights);
lcd.setCursor(0, 2);
lcd.print("V:");
lcd.print(vin);
lcd.setCursor(7, 2);
lcd.print(" - ");
lcd.print(voltage);
if(digitalRead(voithitikoled1 ) == LOW)
{
lcd.setCursor(0, 3);
lcd.print("1");
}
if(digitalRead(saloni2 ) == LOW)
{
lcd.setCursor(2, 3);
lcd.print("2");
}
if(digitalRead(trapezi3 ) == LOW)
{
lcd.setCursor(4, 3);
lcd.print("3");
}
if(digitalRead(kouzina4 ) == LOW)
{
lcd.setCursor(6, 3);
lcd.print("4");
}
if(digitalRead(kouzinapagos5 ) == LOW)
{
lcd.setCursor(8, 3);
lcd.print("5");
}
if(digitalRead(inverter6 ) == LOW)
{
lcd.setCursor(10, 3);
lcd.print((char)9);
}
if(digitalRead(relay7 ) == LOW)
{
lcd.setCursor(12, 3);
lcd.print("7");
}
{
if(digitalRead(relay8 ) == LOW)
{
lcd.setCursor(14, 3);
lcd.print("8");
}
else
lcd.setCursor(14, 3);
lcd.print(" ");
}
/*** fos mikro. anoigei mono sto skotadi kai otan uparxei kinisi ***/
{
if (lights <=200 && nRainVal <= 900)
{
digitalWrite(relay8, LOW);
}
else
digitalWrite(relay8, HIGH);
}
/*** fos mikro. anoigei mono sto skotadi kai otan uparxei kinisi ***/
}