Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- // setup schemo lcd
- #include <Wire.h>
- #include <LiquidCrystal_I2C.h>
- #define I2C_ADDR 0x27
- #define BACKLIGHT_PIN 3
- #define En_pin 2
- #define Rw_pin 1
- #define Rs_pin 0
- #define D4_pin 4
- #define D5_pin 5
- #define D6_pin 6
- #define D7_pin 7
- LiquidCrystal_I2C schermo(I2C_ADDR,En_pin,Rw_pin,Rs_pin,D4_pin,D5_pin,D6_pin,D7_pin);
- //sensore ph
- #define sensore_ph A11
- #define Offset -0.9
- // COSTANTI
- /*
- //pin ph
- float ph_soglia_max = A6;
- float ph_soglia_min = A7;
- */
- //costanti sensori livello acqua
- int livello_contenitore_piccolo_minimo = 400;
- //costanti sensori umidità terreno
- int lettura_va = A0;
- int lettura_vb = A1;
- int lettura_vc = A2;
- int lettura_vd = A3;
- //costanti relè
- int rele_pompa_1 = 9;
- int rele_pompa_2 = 10;
- int rele_pompa_3 = 11;
- int rele_pompa_4 = 12;
- //costanti relè elettrovalvola
- int rele_elettrovalvola_1 = 47;
- int rele_elettrovalvola_2 = 49;
- int rele_elettrovalvola_3 = 51;
- int rele_elettrovalvola_4 = 53;
- // costanti relè pompe ed elettrovalvole PH
- int rele_pompa_ph_max = 30 ;
- int rele_elettrovalvola_ph_max = 32 ;
- int rele_pompa_ph_min = 28 ;
- int rele_elettrovalvola_ph_min = 26 ;
- //costanti tempo visualizzazione delle soglie regolazione trimmer
- int tempo_soglia_umdita = 5000; //VISUALIZZA IL DATO PER 5 SECONDI
- //costanti tempo sensori umidità terreno
- int tempo_attesa_lettura = 1000;
- int tempo_ciclo_lettura = 1500;
- int durata_pompa_spenta = 3000;
- int durata_pompa_attiva = 5000;
- // VARIABILI
- // variabili sensori umidità terreno
- int va = 0; //=V1
- int vb = 0; //=V2
- int vc = 0; //=V3
- int vd = 0; //=V4
- //VARIABILI LETTURE DATI (da sostituire con ciclo for)
- int va1 = 0;
- int va2 = 0;
- int va3 = 0;
- int va4 = 0;
- int va5 = 0;
- int va6 = 0;
- int vb1 = 0;
- int vb2 = 0;
- int vb3 = 0;
- int vb4 = 0;
- int vb5 = 0;
- int vb6 = 0;
- int vc1 = 0;
- int vc2 = 0;
- int vc3 = 0;
- int vc4 = 0;
- int vc5 = 0;
- int vc6 = 0;
- int vd1 = 0;
- int vd2 = 0;
- int vd3 = 0;
- int vd4 = 0;
- int vd5 = 0;
- int vd6 = 0;
- // settaggio variabili trimmer
- int prima_soglia = 0;
- int seconda_soglia = 0;
- //lettura valori di livello liquidi
- int livello_va_rimappato = 0;
- // Logo iniziale
- byte alien[8] = {
- 0b01110,
- 0b10101,
- 0b10101,
- 0b11111,
- 0b01010,
- 0b10001,
- 0b10001,
- 0b10001
- };
- int impostazioni_umidita_ph = A14;
- int riempimento_tubi_pin = A13;
- void setup() {
- // put your setup code here, to run once:
- //lettura valori umidità terra
- pinMode(lettura_va, INPUT); //sensori umidità terreno
- pinMode(lettura_vb, INPUT); //sensori umidità terreno
- pinMode(lettura_vc, INPUT); //sensori umidità terreno
- pinMode(lettura_vd, INPUT); //sensori umidità terreno
- // soglie con trimmer
- pinMode(A4, INPUT); //regolazione umidità terreno
- pinMode(A5, INPUT); //regolazione umidità terreno
- //pinMode(ph_soglia_max, INPUT); //regolazione ph max
- //pinMode(ph_soglia_min, INPUT); //regolazione ph min
- //sensori di ph
- pinMode(sensore_ph, INPUT);
- //sensori di livello
- pinMode(A8, INPUT);
- //relè
- pinMode(rele_pompa_1, OUTPUT); // pin digitale 9 relè pompa
- pinMode(rele_pompa_2, OUTPUT);// pin digitale 10 relè pompa
- pinMode(rele_pompa_3, OUTPUT);// pin digitale 11 relè pompa
- pinMode(rele_pompa_4, OUTPUT);// pin digitale 12 relè pompa
- //relè elettrovalvole
- pinMode(rele_elettrovalvola_1, OUTPUT);
- pinMode(rele_elettrovalvola_2, OUTPUT);
- pinMode(rele_elettrovalvola_3, OUTPUT);
- pinMode(rele_elettrovalvola_4, OUTPUT);
- //relè elettrovalvole
- pinMode(rele_pompa_ph_max, OUTPUT);
- pinMode(rele_elettrovalvola_ph_max, OUTPUT);
- pinMode(rele_pompa_ph_min, OUTPUT);
- pinMode(rele_elettrovalvola_ph_min, OUTPUT);
- //LETTURA TRIMMER(DA SOSTITUIRE CON INTERRUTTORE PER ENTRARE NELLE IMPOSTAZIONI
- pinMode(impostazioni_umidita_ph, INPUT);//IMPOSTAZIONI SOGLIA UMIDITA E PH ATTRAVERSO I TRIMMER
- pinMode(riempimento_tubi_pin, INPUT);// RIEMPIMENTO TUBI IMPIUANTO ACQUA
- // INIZIALIZZAZIONE
- Serial.begin(9600);
- schermo.begin(16, 2);// abilita per lcd schermo
- schermo.setBacklightPin(BACKLIGHT_PIN,POSITIVE);
- schermo.setBacklight(HIGH);
- // firmware 1.00
- schermo.setCursor(0,0);
- schermo.print("firmware 1.00-a");
- schermo.setCursor(0,1);
- schermo.print("del 17/11/2019");
- delay(5000);
- schermo.clear();
- // informazzioni
- schermo.setCursor(0,0);
- schermo.print("Realizzato da: ");
- schermo.setCursor(0,1);
- schermo.print("De Mitri Raffaele");
- delay(5000);
- schermo.clear();
- schermo.setCursor(0,0);
- schermo.print("studiodemitri.eu ");
- schermo.setCursor(0,1);
- schermo.print("tel. 3493114979 ");
- delay(3000);
- schermo.clear();
- //lcd
- schermo.home ();
- schermo.write(byte(0));
- schermo.write(byte(0));
- schermo.write(byte(0));
- schermo.print(" S.A.P.A ");
- schermo.write(byte(0));
- schermo.write(byte(0));
- schermo.write(byte(0));
- schermo.setCursor(0,1);
- schermo.print("MODELLO: H.Y.R.O");
- delay(6000);
- schermo.clear();
- }
- void loop() {
- // IMPOSTAZIONI SOGLIA UMIDITA E PH ATTRAVERSO I TRIMMER
- int ph_min = analogRead(A7);
- int ph_max = analogRead(A6);
- int valore_trimmer = analogRead(impostazioni_umidita_ph);
- if (valore_trimmer > 400)
- {
- delay(200);
- schermo.clear();
- prima_soglia = analogRead (A4);
- seconda_soglia = analogRead (A5);
- prima_soglia = map(prima_soglia, 0, 1020, 0, 99);
- seconda_soglia = map(seconda_soglia, 0, 1020, 0, 99);
- schermo.setCursor(0,0);
- schermo.print("UM+ %");
- schermo.print(prima_soglia);
- schermo.setCursor(7,0);
- schermo.print(" UM- %");
- schermo.print(seconda_soglia);
- float ph_min_float = ph_min * (14.0 / 1023.0);
- float ph_max_float = ph_max * (14.0 / 1023.0);
- schermo.setCursor(0,1);
- schermo.print("PH+");
- schermo.print(ph_max_float);
- schermo.setCursor(8,1);
- schermo.print("PH-");
- schermo.print(ph_min_float);
- return;
- }
- /// RIEMPIMENTO TUBI
- int riempimento_Tubi = analogRead(riempimento_tubi_pin);
- if (riempimento_Tubi > 400)
- {
- schermo.setCursor(0,0);
- schermo.print("RIEMPIMENTO TUBI");
- schermo.setCursor(0,1);
- schermo.print("..RIEMPIMENTO..");
- delay(5000);
- schermo.clear();
- digitalWrite(rele_pompa_1, HIGH);
- digitalWrite(rele_elettrovalvola_1, HIGH);
- digitalWrite(rele_pompa_2, HIGH);
- digitalWrite(rele_elettrovalvola_2, HIGH);
- digitalWrite(rele_pompa_3, HIGH);
- digitalWrite(rele_elettrovalvola_3, HIGH);
- digitalWrite(rele_pompa_4, HIGH);
- digitalWrite(rele_elettrovalvola_4, HIGH);
- schermo.setCursor(0,0);
- schermo.print("OFF PER FERMARE ");
- schermo.setCursor(0,1);
- schermo.print("P.1 P.2 P.3 P.4 ");
- delay(10000);
- digitalWrite(rele_pompa_1, LOW);
- digitalWrite(rele_elettrovalvola_1, LOW);
- digitalWrite(rele_pompa_2, LOW);
- digitalWrite(rele_elettrovalvola_2, LOW);
- digitalWrite(rele_pompa_3, LOW);
- digitalWrite(rele_elettrovalvola_3, LOW);
- digitalWrite(rele_pompa_4, LOW);
- digitalWrite(rele_elettrovalvola_4, LOW);
- return;
- }
- // soglie umidita min e umidita max. PH min e PH max
- prima_soglia = analogRead (A4);
- seconda_soglia = analogRead (A5);
- prima_soglia = map(prima_soglia, 0, 1020, 0, 99);
- seconda_soglia = map(seconda_soglia, 0, 1020, 0, 99);
- float ph_min_float = ph_min * (14.0 / 1023.0);
- float ph_max_float = ph_max * (14.0 / 1023.0);
- // LIVELLO MINIMI CONTENITORE PICCOLO
- schermo.clear();
- livello_va_rimappato = analogRead (A8);
- livello_va_rimappato = constrain(livello_va_rimappato, 0, 600); //costringe la variabile livello_va_rimappato ad un range da 0 a 670
- livello_va_rimappato = map (livello_va_rimappato, 0, 600, 0, 100);
- if (livello_va_rimappato>80){
- schermo.setCursor(0,0);
- schermo.print(livello_va_rimappato);
- schermo.print(" % ACQUA");
- delay(4000);
- }
- else {
- schermo.clear();
- schermo.print("RIEMPIRE");
- schermo.setCursor(0,1);
- schermo.print("SERBATOIO PICC. ");
- delay(2000);
- schermo.clear();
- return;
- }
- schermo.clear();
- // STAMPA DELLA % DI UIDITA' DEI VASI
- // VA=V1
- schermo.setCursor(0,0);
- schermo.print(" V1=");// abilita per lcd schermo
- schermo.print( va );// abilita per lcd schermo
- schermo.print("% ");
- //VB=V2
- schermo.setCursor(0,1);
- schermo.print(" V2=");// abilita per lcd schermo
- schermo.print( vb );// abilita per lcd schermo
- schermo.print("% ");
- //VC=V3
- schermo.setCursor(8,0);
- schermo.print(" V3=");// abilita per lcd schermo
- schermo.print( vc );// abilita per lcd schermo
- schermo.print("% ");
- //VD=V4
- schermo.setCursor(8,1);
- schermo.print(" V4=");// abilita per lcd schermo
- schermo.print( vd );// abilita per lcd schermo
- schermo.print("% ");
- // CALCOLO DEI VALORI DELLA % DI UMIDITA DEL TERRENO
- va1 = analogRead(lettura_va);
- delay(tempo_attesa_lettura);//tempo tra una lettura e l'altra
- va2 = analogRead(lettura_va);
- delay(tempo_attesa_lettura);//tempo tra una lettura e l'altra
- va3 = analogRead(lettura_va);
- delay(tempo_attesa_lettura);//tempo tra una lettura e l'altra
- va4 = analogRead(lettura_va);
- delay(tempo_attesa_lettura);//tempo tra una lettura e l'altra
- va5 = analogRead(lettura_va);
- delay(tempo_attesa_lettura);//tempo tra una lettura e l'altra
- va6 = analogRead(lettura_va);
- delay(tempo_attesa_lettura);//tempo tra una lettura e l'altra
- vb1 = analogRead(lettura_vb);
- delay(tempo_attesa_lettura);//tempo tra una lettura e l'altra
- vb2 = analogRead(lettura_vb);
- delay(tempo_attesa_lettura);//tempo tra una lettura e l'altra
- vb3 = analogRead(lettura_vb);
- delay(tempo_attesa_lettura);//tempo tra una lettura e l'altra
- vb4 = analogRead(lettura_vb);
- delay(tempo_attesa_lettura);//tempo tra una lettura e l'altra
- vb5 = analogRead(lettura_vb);
- delay(tempo_attesa_lettura);//tempo tra una lettura e l'altra
- vb6 = analogRead(lettura_vb);
- delay(tempo_attesa_lettura);//tempo tra una lettura e l'altra
- vc1 = analogRead(lettura_vc);
- delay(tempo_attesa_lettura);//tempo tra una lettura e l'altra
- vc2 = analogRead(lettura_vc);
- delay(tempo_attesa_lettura);//tempo tra una lettura e l'altra
- vc3 = analogRead(lettura_vc);
- delay(tempo_attesa_lettura);//tempo tra una lettura e l'altra
- vc4 = analogRead(lettura_vc);
- delay(tempo_attesa_lettura);//tempo tra una lettura e l'altra
- vc5 = analogRead(lettura_vc);
- delay(tempo_attesa_lettura);//tempo tra una lettura e l'altra
- vc6 = analogRead(lettura_vc);
- delay(tempo_attesa_lettura);//tempo tra una lettura e l'altra
- vd1 = analogRead(lettura_vd);
- delay(tempo_attesa_lettura);//tempo tra una lettura e l'altra
- vd2 = analogRead(lettura_vd);
- delay(tempo_attesa_lettura);//tempo tra una lettura e l'altra
- vd3 = analogRead(lettura_vd);
- delay(tempo_attesa_lettura);//tempo tra una lettura e l'altra
- vd4 = analogRead(lettura_vd);
- delay(tempo_attesa_lettura);//tempo tra una lettura e l'altra
- vd5 = analogRead(lettura_vd);
- delay(tempo_attesa_lettura);//tempo tra una lettura e l'altra
- vd6 = analogRead(lettura_vd);
- delay(tempo_attesa_lettura);//tempo tra una lettura e l'altra
- va = (va1 + va2 + va3 + va4 + va5 + va6)/6;
- vb = (vb1 + vb2 + vb3 + vb4 + vb5 + vb6)/6;
- vc = (vc1 + vc2 + vc3 + vc4 + vc5 + vc6)/6;
- vd = (vd1 + vd2 + vd3 + vd4 + vd5 + vd6)/6;
- va = constrain (va, 258, 1000);
- vb = constrain (vb, 258, 1000);
- vc = constrain (vc, 258, 1000);
- vd = constrain (vd, 258, 1000);
- va = map (va, 1022, 258, 0, 95);
- vb = map (vb, 1022, 258, 0, 95);
- vc = map (vc, 1022, 258, 0, 95);
- vd = map (vd, 1022, 258, 0, 95);
- //PH SENSORE CALCOLI
- int buf[10];
- for(int i=0;i<10;i++) //10 letture nel vettore
- {
- buf[i]=analogRead(sensore_ph);
- delay(10);
- }
- for(int i=0;i<9;i++) //ordina dal più piccolo al più grande
- for(int j=i+1;j<10;j++)
- if(buf[i]>buf[j])
- {
- int temp=buf[i];
- buf[i]=buf[j];
- buf[j]=temp;
- }
- int valoreMedio=0;
- for(int i=2;i<8;i++)
- valoreMedio+=buf[i];
- float phValue=(float)valoreMedio*5/1024/6;
- phValue=14-(3.5*phValue+Offset);
- schermo.clear();
- Serial.print(" pH:");
- Serial.print(phValue,2);
- Serial.println(" ");
- schermo.setCursor(0, 0);//8 abilita per lcd schermo
- schermo.print("PH RILEVATO ");
- schermo.print(phValue,2);
- schermo.setCursor(0, 1);//8 abilita per lcd schermo
- schermo.print("MIN:");
- schermo.print(ph_min_float);
- schermo.setCursor(8, 1);
- schermo.print("MAX:");
- schermo.print(ph_max_float);
- delay(5000);
- // OPERAZIONI DA SVOLGERE
- //VA=V1
- if (va>prima_soglia) { // settare l'umidità: prima soglia minima
- digitalWrite(rele_pompa_1, LOW); //spegne il relay
- digitalWrite(rele_elettrovalvola_1, LOW);
- Serial.println("");
- Serial.print("VASO 1: ");
- Serial.print(va);
- Serial.print("%");
- Serial.println(" Umidità nella norma");
- delay (tempo_ciclo_lettura);
- }
- else{
- if(ph_min_float>phValue){
- schermo.clear();
- schermo.setCursor(0, 0);// abilita per lcd schermo
- schermo.print("PH BASSO:");// abilita per lcd schermo
- schermo.print( phValue );
- schermo.setCursor(0, 1);// abilita per lcd schermo
- schermo.print("CORREZIONE PH! ");
- digitalWrite(rele_pompa_ph_min, HIGH);
- digitalWrite(rele_elettrovalvola_ph_min, HIGH);
- delay(1000);
- digitalWrite(rele_pompa_ph_min, LOW);
- digitalWrite(rele_elettrovalvola_ph_min, LOW);
- delay(3000);
- return;
- }
- else if (ph_max_float<phValue){
- schermo.clear();
- schermo.setCursor(0, 0);// abilita per lcd schermo
- schermo.print("PH ALTO:");// abilita per lcd schermo
- schermo.print( phValue );
- schermo.setCursor(0, 1);// abilita per lcd schermo
- schermo.print("CORREZIONE PH! ");
- digitalWrite(rele_pompa_ph_max, HIGH);
- digitalWrite(rele_elettrovalvola_ph_max, HIGH);
- delay(1000);
- digitalWrite(rele_pompa_ph_max, LOW);
- digitalWrite(rele_elettrovalvola_ph_max, LOW);
- delay(3000);
- return;
- }
- else if (va<seconda_soglia && analogRead (A8)>livello_contenitore_piccolo_minimo && ph_min_float<phValue<ph_max_float)
- {
- schermo.clear();
- schermo.setCursor(0, 0);// abilita per lcd schermo
- schermo.print("V1=POMPA ATTIVA");// abilita per lcd schermo
- schermo.setCursor(0, 1);// abilita per lcd schermo
- schermo.print( va );// abilita per lcd schermo
- schermo.print(" % UMIDITA'");
- digitalWrite(rele_pompa_1, HIGH);
- digitalWrite(rele_elettrovalvola_1, HIGH);
- Serial.println("VASO 1 = Attivo la pompa per 10 secondi");
- delay(durata_pompa_attiva); // durata pompa attiva
- schermo.clear();
- schermo.setCursor(0, 0);//8 abilita per lcd schermo
- schermo.print("ATTESA ASSORBIM.");// abilita per lcd schermo
- schermo.setCursor(0, 1);// abilita per lcd schermo
- schermo.print( va );// abilita per lcd schermo
- schermo.print("% UMIDITA'(V1)");
- digitalWrite(rele_pompa_1, LOW);
- digitalWrite(rele_elettrovalvola_1, LOW);
- Serial.println("VASO 1 = Aspetto 50 secondi per consentire l'assorbimento");
- delay(durata_pompa_spenta); // durata pompa spenta
- }
- }
- //VB=V2
- if (vb>prima_soglia) { // settare l'umidità: prima soglia minima
- digitalWrite(rele_pompa_2, LOW); //spegne il relay
- digitalWrite(rele_elettrovalvola_2, LOW);
- Serial.println("");
- Serial.print("VASO 2: ");
- Serial.print(vb);
- Serial.print("%");
- Serial.println(" Umidità nella norma");
- delay (tempo_ciclo_lettura);
- }
- else if (vb<seconda_soglia && analogRead (A8)>livello_contenitore_piccolo_minimo)
- {
- schermo.clear();
- schermo.setCursor(0, 0);// abilita per lcd schermo
- schermo.print("V2=POMPA ATTIVA");// abilita per lcd schermo
- schermo.setCursor(0, 1);// abilita per lcd schermo
- schermo.print( vb );// abilita per lcd schermo
- schermo.print("% UMIDITA'(V2)");
- digitalWrite(rele_pompa_2, HIGH);
- digitalWrite(rele_elettrovalvola_2, HIGH);
- Serial.println("VASO 2 = Attivo la pompa per 10 secondi");
- delay(durata_pompa_attiva); // durata pompa attiva
- digitalWrite(rele_pompa_2, LOW);
- digitalWrite(rele_elettrovalvola_2, LOW);
- Serial.println("VASO 2 = Aspetto 50 secondi per consentire l'assorbimento");
- delay(durata_pompa_spenta); // durata pompa spenta
- schermo.clear();
- schermo.setCursor(0, 0);//8 abilita per lcd schermo
- schermo.print("ATTESA ASSORBIM.");// abilita per lcd schermo
- schermo.setCursor(0, 1);// abilita per lcd schermo
- schermo.print( vb );// abilita per lcd schermo
- schermo.print("% UMIDITA'(V2)");
- digitalWrite(rele_pompa_1, LOW);
- digitalWrite(rele_elettrovalvola_1, LOW);
- Serial.println("VASO 2 = Aspetto 50 secondi per consentire l'assorbimento");
- delay(durata_pompa_spenta); // durata pompa spenta
- }
- //VC=V3
- if (vc>prima_soglia) { // settare l'umidità: prima soglia minima
- digitalWrite(rele_pompa_3, LOW); //spegne il relay
- digitalWrite(rele_elettrovalvola_3, LOW);
- Serial.println("");
- Serial.print("VASO 3: ");
- Serial.print(vc);
- Serial.print("%");
- Serial.println(" Umidità nella norma");
- delay (tempo_ciclo_lettura);
- }
- else if (vc<seconda_soglia && analogRead (A8)>livello_contenitore_piccolo_minimo)
- {
- schermo.clear();
- schermo.setCursor(0, 0);// abilita per lcd schermo
- schermo.print("V3=POMPA ATTIVA");// abilita per lcd schermo
- schermo.setCursor(0, 1);// abilita per lcd schermo
- schermo.print( vc );// abilita per lcd schermo
- schermo.print("% UMIDITA'(V3)");
- digitalWrite(rele_pompa_3, HIGH);
- digitalWrite(rele_elettrovalvola_3, HIGH);
- Serial.println("VASO 3 = Attivo la pompa per 10 secondi");
- delay(durata_pompa_attiva); // durata pompa attiva
- digitalWrite(rele_pompa_3, LOW);
- digitalWrite(rele_elettrovalvola_3, LOW);
- Serial.println("VASO 3 = Aspetto 50 secondi per consentire l'assorbimento");
- delay(durata_pompa_spenta); // durata pompa spenta
- }
- //VD=V4
- if (vd>prima_soglia) { // settare l'umidità: prima soglia minima
- digitalWrite(rele_pompa_4, LOW); //spegne il relay
- digitalWrite(rele_elettrovalvola_4, LOW);
- Serial.println("");
- Serial.print("VASO 4: ");
- Serial.print(vd);
- Serial.print("%");
- Serial.println(" Umidità nella norma");
- Serial.println("--------------------");
- delay (tempo_ciclo_lettura);
- }
- else if (vd<seconda_soglia && analogRead (A8)>livello_contenitore_piccolo_minimo)
- // settare l'umidità minima cattiva
- {
- schermo.clear();
- schermo.setCursor(0, 0);// abilita per lcd schermo
- schermo.print("V4=POMPA ATTIVA");// abilita per lcd schermo
- schermo.setCursor(0, 1);// abilita per lcd schermo
- schermo.print( vd );// abilita per lcd schermo
- schermo.print("% UMIDITA'(V4)");
- digitalWrite(rele_pompa_4, HIGH);
- digitalWrite(rele_elettrovalvola_4, HIGH);
- Serial.println("VASO 4 = Attivo la pompa per 10 secondi");
- delay(durata_pompa_attiva); // durata pompa attiva
- digitalWrite(rele_pompa_4, LOW);
- digitalWrite(rele_elettrovalvola_4, LOW);
- Serial.println("VASO 4 = Aspetto 50 secondi per consentire l'assorbimento");
- delay(durata_pompa_spenta); // durata pompa spenta
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement