aquario controllato da arduino

prima di iniziare chiedo scusa per gli strafalcioni che ci sono dentro il codice :)7
detto questo , ho PROVATO , a scrivere un codice per gestire il mio acquario,
quello che volevo fare e una gestione della luce, usando tre strice led con luce che va dall infrarosso al uv
poi la somministrazione di mangime, e co2 .
per il momento ho scritto il codice e progettato il circuito per la gestione del tutto .( devo sempre inciderlo su basetta e saldarlo.
sequendo le varie discussioni e i consigli che mi avete dato , ho strutturato il codice in questo modo

un loop() che gestisce le varie funzioni
cibo() , ph() , termometro() luci estate , luci inverno , termometro e un effetto alba tramonto,
compilare lo compila senza errori , ma non so se funzione , appena terminato il circuito .lo provero
ho visto in rete alcuni progetti in cui veniva usato un altro arduino come slave , a me servorebbe poter gestire uin lcd ,
perche fra , tre pin usati per le luci , uno per il termometro , uno per il ph uno per il cibo uno andra usato per attivare l elettro valvola per la co2 e mi vorrei lasciar liberi dei pin per i l riscaldamento e per il filtro e un buzzer come allarme ,
non mi rimangono tanti pin per lcd
ho cercato in rete ma non sono riuscito a trovare nulla su cui lavorare per capirci qualcosa , avete qualche link?
grazie

questo e il codice che ho scritto :

//_____________________________________________________________________________________________________________________
//VARIABILI RTC
int long ore;
int long minuti ;
int long secondi ;
int long mese;
//___________________________________________________________________________________________________________________
  // VARIABILE POSIZIONE SERVO
int pos = 0;
//___________________________________________________________________________________________________________
//USCITE LUCI
#define luce_bianca 3
#define luce_rossa 4
#define luce_blu  5

//______________________________________________________________________________________________________________________

// LIBRERIE RTC
#include <Wire.h>
#include "RTClib.h"

RTC_DS3231 rtc;
//_______________________________________________________________________________________________________________________
//LIBRERIA SERVO
#include <Servo.h>
//_______________________________________________________________________________________________________________________
//LIBRERIE TERMOMETRO LCD


#include <OneWire.h>
#include <DallasTemperature.h>
#include <LiquidCrystal.h>

LiquidCrystal lcd(11, 12, 7, 8, 9, 10);

#define stermometro 2 //pin collegamento termometro

// Imposta la comunicazione oneWire per comunicare
// con un dispositivo compatibile
OneWire oneWire(stermometro);

// Passaggio oneWire reference alla Dallas Temperature. 
DallasTemperature sensors(&oneWire);



//_____________________________________________________________________________________________________________________________

Servo myservo;  // create servo object to control a servo
//__________________________________________________________________________
//SONDA PH
const int pinPo = A0;//PIN COLLEGAMENTO SONDA PH


void setup() {
Serial.begin(9600);
//definisco pin luci
pinMode(luce_bianca, OUTPUT);
pinMode(luce_rossa, OUTPUT);
pinMode(luce_blu, OUTPUT);
   
//definicopin servo cibo
myservo.attach(9);
//_____________________________________________________________________________________________________________________________
//spengo le luci

digitalWrite(luce_bianca, LOW);   // spengo il led bianchi
digitalWrite(luce_rossa, LOW);   // spengo il led rossi
digitalWrite(luce_blu, LOW);   // spengo il led blu
//____________________________________________________________________________________________________________________________
  DateTime now = rtc.now();

//Per comodità uso variabili e non direttamente ciò che restituisce il modulo RTC
int long  ore = now.hour();
int long minuti = now.minute();
int long secondi = now.second();
int long anno = now.year();
 int long mese = now.month();
//_________________________________________________________________________________________________________________________________
//setup lcd /termometro
// Start up the library
sensors.begin();
// Imposta il valore di righe e colonne del display LCD 
lcd.begin(16, 2);
// ________________________________________________________________________________________________________________________
//setup ph
Serial.begin(9600);

lcd.begin(16,2);
lcd.setCursor(3,0);

delay(2000);

lcd.clear();
}

void loop()
{ 



if( mese>=3 && mese<=9 )  // estate da maggio a settembre
{ estate_led_piante();
estate_led_bianchi();
}
else
{ inverno_led_piante();
inverno_led_bianchi();
}
////////////////////loop termometro
termometro();
}


//____________________________________________________________________________________________________________________________
//funzione orari accensione, spegnimento luci piante d estate

void estate_led_piante() {
//per prima cosa controlliamo il contatore se è maggiore di 5 altrmenti salterà tutta la funzione
if ((ore == 7) && (minuti == 30)) { // se sono le 7,30 accendi luci piante
  accensioneLed_piante();
  
  }
  if((ore == 19) && (minuti == 30)){// se sono le 19,30 spegni luci piante
 spegnimentoLed_piante();
}

}
//____________________________________________________________________________________________________________________________
//funzione  orari accensione , spegnimento luci piante d inverno


void inverno_led_piante() {
//per prima cosa controlliamo il contatore se è maggiore di 5 altrmenti salterà tutta la funzione
if ((ore == 8) && (minuti == 30)) { // se sono le 8,30 accendi luci piante
  accensioneLed_piante();
  
  }
  if((ore == 18) && (minuti == 30)){// se sono le 18,30 spegni luci piante
 spegnimentoLed_piante();
}

}
//FINE FUNZIONE PIANTE

//___________________________________________________________________________________________________________________________
//funzione orari accensione, spegnimento luci bianche estate

void estate_led_bianchi() {
 //per prima cosa controlliamo il contatore se è maggiore di 5 altrmenti salterà tutta la funzione
 if ((ore == 7) && (minuti == 40)) { // se sono le 7,40 accendi luci bianche
   accensioneLed_bianchi();
   cibo();
   }
   if((ore == 19) && (minuti == 20)){// se sono le 19,20spegni luci piante
  spegnimentoLed_bianchi();
 }

}
//___________________________________________________________________________________________________________________________
//funzione  orari accensione , spegnimento luci bianchi d inverno


void inverno_led_bianchi() {
 //per prima cosa controlliamo il contatore se è maggiore di 5 altrmenti salterà tutta la funzione
 if ((ore == 8) && (minuti == 40)) { // se sono le 8,40 accendi luci piante
   accensioneLed_bianchi();
   
   }
   if((ore == 18) && (minuti == 20)){// se sono le 18,20 spegni luci piante
  spegnimentoLed_bianchi();
 }

}

////////fine funzione estate inverno luci bianche

//____________________________________________________________________________________________________________________________





//fase accensione spegnimento luci per le piantte

void accensioneLed_piante() {
 for (int fadeValue = 0 ; fadeValue <= 255; fadeValue += 5) {
   analogWrite(luce_rossa, fadeValue);
   analogWrite(luce_blu, fadeValue);
   delay(20);
 }
}

void spegnimentoLed_piante() {
 for (int fadeValue = 255 ; fadeValue >= 0; fadeValue -= 5) {
   analogWrite(luce_rossa, fadeValue);
   analogWrite(luce_blu, fadeValue);
   delay(20);
 }
}
//////////////////////fine funzione luci poiante piante
//______________________________________________________________________________________________________________________________
//funzione accensione , spegnimento luci bianche
void accensioneLed_bianchi() {
 for (int fadeValue = 0 ; fadeValue <= 255; fadeValue += 5) {
   analogWrite(luce_bianca, fadeValue);
  
   delay(20);
 }
}

void spegnimentoLed_bianchi() {
 for (int fadeValue = 255 ; fadeValue >= 0; fadeValue -= 5) {
   analogWrite(luce_bianca, fadeValue);
   
   delay(20);
 }
}//fine funzioni luci bianche
//_________________________________________________________________________________________________________________________________
//funzione cibo , copio l esempiuo dell IDE il servo grazie ad una camma mi preme il pulsante del dosatore i valori andranno testati



void cibo() {
 for (pos = 0; pos <= 90; pos += 1) { // la camma va da 0 a 90 gradi
   // in steps of 1 degree
   myservo.write(pos);             
   delay(15);                      
 }
 for (pos = 90; pos >= 0; pos -= 1) { //la camma torna da 909 a 0 grado
   myservo.write(pos);              
   delay(15);                      
 }
}
//fine funzione cibo
//_____________________________________________________________________________________________________________________________________________
//funzione termometro lcd 

void termometro()
{ 

 sensors.requestTemperatures(); // Invia il comando di lettura delle temperatura
 lcd.clear();
 lcd.setCursor(0, 0); // bottom left
 lcd.print("Temperatura di: ");
 lcd.setCursor(0, 1); // bottom left
 lcd.print (sensors.getTempCByIndex(0));
 lcd.print (" C"); 
}
// fine funzione termometro
//_____________________________________________________________________
//funzione ph ripresa dal sito del produttore

void ph(){

 int pole[10];
 int zaloha;
 unsigned long int prumerVysl = 0;
 // RECUPERA 10 CAMPIONI PER 10MS NELL ARRAY
 for (int i = 0; i < 10; i++) {
   pole[i] = analogRead(pinPo);
   delay(10);
 }
 // ORDINA NUMERI PER DIMENSIONE
 for (int i = 0; i < 9; i++) {
   for (int j = i + 1; j < 10; j++) {
     if (pole[i] > pole[j]) {
       zaloha = pole[i];
       pole[i] = pole[j];
       pole[j] = zaloha;
     }
   }
 }
 // uložení 2. až 8. výsledku do
 // proměnné, z které se vypočte průměr
 // (vynechání dvou členů pole na začátku
 // a konci pro lepší přesnost)
 for (int i = 2; i < 8; i++) {
   prumerVysl += pole[i];
 }
 // výpočet hodnoty pH z průměru
 // měření a přepočet na rozsah 0-14 pH
 float prumerPH = (float)prumerVysl * 5.0 / 1024 / 6;
 float vyslednePH = -5.70 * prumerPH + 21.34;
 // vytištění výsledků po sériové lince
 Serial.print("pH: ");
 Serial.println(vyslednePH);
 // pauza 900 ms před novým měřením, celkem tedy 1s
 delay(900);
}

ciao...se te ne restano 2 di liberi, di PIN, puoi prendere un LCD con modulo I2C...che, se hai un arduino UNO, sono: A4 (SDA), A5 (SCL)

il circuito l ho costruito per un nano

Anche nel NANO sono A4 e A5 ...comunque è scritto nella basetta della scheda

a quale pin dovrei collegare l rtc???

quale RTC?...hai un link?

https://www.ebay.it/itm/Precision-DS3231-RTC-Module-Memory-Module-For-Arduino-Raspberry-Pi/182996730957?ssPageName=STRK%3AMEBIDX%3AIT&_trksid=p2057872.m2749.l2649

ciao...sembra anche questo in I2C.
quindi, cosa che comunque dovevi già fare anche per il solo LCD, devi trovarti l'indirizzo di entrambi.
crearti i due oggetti per la comunicazione seriale con relativo indirizzo.

buon giorno e grazie per le risposte , avete qualche link dove possa trovare della documentazione?
e delle info su come possa collegare un altro arduino per gestire lcd dove le potrei trovare?
grazie

se ho capito bene va collegato al pin a4 e a5

se ho capito bene va collegato al pin a4 e a5

Certo.
E anche l' RTC va agli stessi pin

>albepancio: Allora ...prima di tutto studiati cosa è un bus I2C, prima QUI e poi, volendo, anche QUI, poi, nel reference, la libreria Wire ... ti si dovrebbero chiarire un po' di più le idee :wink:

Guglielmo

//_____________________________________________________________________________________________________________________
//VARIABILI RTC
int long ore;
int long minuti ;
int long secondi ;
int long mese;
//___________________________________________________________________________________________________________________
  // VARIABILE POSIZIONE SERVO
int pos = 0;
//___________________________________________________________________________________________________________
//USCITE LUCI
#define luci_bianche 3
#define luci_rosse 5
#define luci_viola  6
#define accensionelcd 8
//______________________________________________________________________________________________________________________

// LIBRERIE RTC
#include <Wire.h>
#include "RTClib.h"

RTC_DS3231 rtc;
//_______________________________________________________________________________________________________________________
//LIBRERIA SERVO
#include <Servo.h>
//_______________________________________________________________________________________________________________________
//LIBRERIE TERMOMETRO 
#include <OneWire.h>
#include <DallasTemperature.h>
#define ACQUA_TEM 2 // assegna il valore 2 al nome ONE_WIRE_BUS
OneWire oneWire(ACQUA_TEM); // associa alla porta 2 (valore di ONE_WIRE_BUS) il
// canale dati dei sensori
DallasTemperature sensors(&oneWire); //trasferisce alle routine della libreria DallasTemperature
// il controllo delle funzioni OneWire
#include <DallasTemperature.h> // dichiarazione di utilizzo della libreria DallasTemperature.h


//_____________________________________________________________________________________________________________________________

Servo myservo;  // create servo obbiettivo
//__________________________________________________________________________
//SONDA PH
const int pinPo = A0;//PIN COLLEGAMENTO SONDA PH


//__________________________________________________________________________________________________
//-----------------lcd
#include <LiquidCrystal_I2C.h>
 
LiquidCrystal_I2C lcd(0x20,16,2);  //dichiara il display "lcd" di tipo 16x2 all'indirizzo 0x20
int backlight = 10;

//--------------------------------------------------SETUP--------------------------------------------------------------------------------------

void setup() {
Serial.begin(9600);
//definisco pin luci
pinMode(luci_bianche, OUTPUT);
pinMode(luci_rosse, OUTPUT);
pinMode(luci_viola, OUTPUT);
pinMode(accensionelcd, INPUT);//definisco input il pin 8
backlight = 0;//spengo lcd

//definico  pin servo cibo
myservo.attach(9);

sensors.begin();
//____________________________________________________________________________________________________________________________
  DateTime now = rtc.now();

//Per comodità uso variabili e non direttamente ciò che restituisce il modulo RTC
int long  ore = now.hour();
int long minuti = now.minute();
int long secondi = now.second();
int long anno = now.year();
 int long mese = now.month();
//_________________________________________________________________________________________________________________________________
//setup termometro
// Start up the library
sensors.begin();
 
}

//----------------------------------------------------------------LOOP--------------------------------------------------------------------------------------
void loop()
{
lcd.setBacklight(1);// vorrei accendere lcd premendo un pulsane per non lasciarlo sempre acceso mi basta inserire un pin mode nel loop?
 DateTime now = rtc.now();
 myservo.write(pos); 
 if(accensionelcd, HIGH){//impostato cosi premento il pulsante collegato al pin 8 l cd si accende ?
  backlight = 10;
 }
 else{ backlight = 0;}
 
 int anni = now.year();
 int mesi = now.month();
 int giorni = now.day();
 int ore= now.hour();
 int minuti= now.minute();
 int secondi = now.second();
//timer 
lcd.setCursor(0, 0);
lcd.print(ore);
lcd.print(":");
lcd.print(minuti);
lcd.print(":");
lcd.print(secondi);
  delay(1000);
  lcd.setCursor(1, 0);
  lcd.print("temp:");
  lcd.print(ACQUA_TEM);
  lcd.print("ph");
  lcd.print("vyslednePH");

//____________________________________________________________STAGIONI__________________________________________________________
//__FUNZIONE LUCI PRIMAVERA

if( mese>=3 && mese<=5 )  
{ ACC_PRIMAVERA_LED_ROSSI();
ACC_PRIMAVERA_LED_VIOLA();
ACC_PRIMAVERA_LED_BIANCHI();
}

//____FUNZIONE LUCI ESTATE

if( mese>=6 && mese<=8 )
{ ACC_ESTATE_LED_ROSSI();
ACC_ESTATE_LED_VIOLA();
ACC_ESTATE_LED_BIANCHI();
}


//________FUNZIONE LUCI AUTUNNO


if( mese>=9 && mese<=11 )  
{ ACC_AUTUNNO_LED_ROSSI();
ACC_AUTUNNO_LED_VIOLA();
ACC_AUTUNNO_LED_BIANCHI();
}


//_FUNZIONE INVERNO


if( mese>=12 && mese<=2 )  
{ ACC_INVERNO_LED_ROSSI();
ACC_INVERNO_LED_VIOLA();
ACC_INVERNO_LED_BIANCHI();
}

////////////////////loop termometro
termometro();
///////////////////loop ph
ph(); 

}

//------------------------------LUCI----------------------------------------------

//______________PRIMAVERA_____________________________________________________________________



//FUNZIONE ORARI PRIMAVERA ACCENSIONE , SPEGNIMENTO LUCI ROSSE

void ACC_PRIMAVERA_LED_ROSSI() {

if ((ore == 7) && (minuti == 30)) { // se sono le 7,30 accendi luci ROSSE
  accensione_Led_rossi();
 
  }
  if((ore == 19) && (minuti == 30)){// se sono le 19,30 spegni luci ROSSE
 spegnimento_Led_rossi();
}

}

//______________________________________________FINE LUCI ROSSE  PRIMAVERA___________________________________
//----------------------------------------------------------------------------------------------------------------------------------------------------

//FUNZIONE ORARI PRIMAVERA ACCENSIONE , SPEGNIMENTO LUCI VIOLA 

void ACC_PRIMAVERA_LED_VIOLA() {

if ((ore == 7) && (minuti == 30)) { // se sono le 7,30 accendi luci VIOLA
  accensione_Led_viola();
 
  }
  if((ore == 19) && (minuti == 30)){// se sono le 19,30 spegni luci VIOLA
 spegnimento_Led_viola();
}

}

// _______________________________________________FINE LUCI VIOLA PRIMAVERA_____________________________________________
//-------------------------------------------------------------------------------------------------------------------------------------------------------------
//___________________________________________________________________________________________________________________________

//FUNZIONE ORARI PRIMAVERA ACCENSIONE , SPEGNIMENTO LUCI  BIANCHE

void ACC_PRIMAVERA_LED_BIANCHI() {
 
 if ((ore == 7) && (minuti == 40)) { // se sono le 7,40 accendi luci BIANCHI
   accensione_Led_bianchi();
   cibo();
   }
   if((ore == 19) && (minuti == 20)){// se sono le 19,20spegni luci BIANCI
  spegnimento_Led_bianchi();
 }

}

//_________________________________________________FINE LUCI BIANCHE_____________________________________________________________
//-------------------------------------------------------------------------------------------------------------------------------------------------------------------------
//________FINE PRIMAVERA________________________________________________________________________________________________________

//------------------------------------------------------------------------------------------------------------------------------------------------------------------------
//__________ESTATE_____________________________________________________________________________________________________________


//FUNZIONE ORARI ESTATE ACCENSIONE , SPEGNIMENTO LUCI  ROSSE


void ACC_ESTATE_LED_ROSSI() {

if ((ore == 6) && (minuti == 30)) { // se sono le 7,30 accendi luci ROSSE
  accensione_Led_rossi();
 
  }
  if((ore == 20) && (minuti == 30)){// se sono le 19,30 spegni luci ROSSE
 spegnimento_Led_rossi();
}

}
//____________________________________________________ FINE LUCI ROSSE ESTATE_____________________________________________________

//-------------------------------------------------------------------------------------------------------------------------------------



//FUNZIONE ORARI ESTATE ACCENSIONE , SPEGNIMENTO LUCI  VIOLA


void ACC_ESTATE_LED_VIOLA() {

if ((ore == 6) && (minuti == 30)) { 
  accensione_Led_viola();
 
  }
  if((ore == 20) && (minuti == 30)){
 spegnimento_Led_viola();
}

}
//_______________________________________________________FINE FUNZIONE VIOLA ESTATE__________________________________________________________
//----------------------------------------------------------------------------------------------------------------------------------------------

//FUNZIONE ESTATE ACCENSIONE , SPEGNIMENTO LUCI BIANCHE


void ACC_ESTATE_LED_BIANCHI() {

if ((ore == 6) && (minuti == 40)) { 
  accensione_Led_bianchi();
 
  }
  if((ore == 20) && (minuti == 20)){
 spegnimento_Led_bianchi();
}

}


//_______________________________________________________FINE FUNZIONE BIANCHE ESTATE_________________________________________________________

//________________________________________________________________FINE ESTATE_______________________________________________________________

//----------------------------------------------------------------------------------------------------------------------------------------------------------

//___________________FUNZIONE AUTUNNO______________________________________________________________________________________________________


//_________FUNZIONE AUTUNNO ACCENSIONE , SPEGNIMENTO LUCI ROSSE


void ACC_AUTUNNO_LED_ROSSI() {
 
 if ((ore == 7) && (minuti == 30)) { // se sono le 7,40 accendi luci ROSSE
   accensione_Led_rossi();
   cibo();
   }
   if((ore == 19) && (minuti == 30)){// se sono le 19,20spegni luci ROSSE
  spegnimento_Led_rossi();
 }

}

//FINE LUCI ROSSE 

//__________________________________________________________________________________

//__________FUNZIONE AUTUNNO ACCENSIONE , SPEGNIMENTO LUCI VIOLA


void ACC_AUTUNNO_LED_VIOLA() {
 
 if ((ore == 7) && (minuti == 30)) { // se sono le 7,40 accendi luci VIOLA
   accensione_Led_viola();
   cibo();
   }
   if((ore == 19) && (minuti == 30)){// se sono le 19,20spegni luci VIOLA
  spegnimento_Led_viola();
 }

}

// FINE FUNZIONE VIOLA____________________

//__________________________________________________________________________________________________

//____________FUNZIONE AUTUNNO ACCENSIONE , SPEGNIMENTO LUCI BIANCHE

void ACC_AUTUNNO_LED_BIANCHI() {
 
 if ((ore == 7) && (minuti == 40)) { // se sono le 7,40 accendi luci BIANCHI
   accensione_Led_bianchi();
   cibo();
   }
   if((ore == 19) && (minuti == 20)){// se sono le 19,20spegni luci BIANCI
  spegnimento_Led_bianchi();
 }

}

// FINE FUNZINE BIANCHE

//___________________FINE AUTUNNO_____________________________

//________________________________________________________________________________________________________________________________________

//___________________FUNZIONE INVERNO_____________________________________________________________________________________________________


//FUNZIONE INVERNO ACCENSIONE , SPEGNIMENTO LUCI ROSSE



void ACC_INVERNO_LED_ROSSI(){

if ((ore == 8) && (minuti == 30)) {
  accensione_Led_viola();
 
  }
  if((ore == 19) && (minuti == 30)){
 spegnimento_Led_viola();
}

}

//_______FINE LUCI ROSSE

//____________________________________________________________________________________________________________________

//FUNZIONE INVERNO ACCENSIONE , SPEGNIMENTO LUCI VIOLA


void ACC_INVERNO_LED_VIOLA(){

if ((ore == 8) && (minuti == 30)) {
  accensione_Led_viola();
 
  }
  if((ore == 19) && (minuti == 30)){
 spegnimento_Led_viola();
}

}

// FINE LUCI VIOLA

//________________________________________________________________________________________________________

//FUNZIONE INVERNO ACCENSIONE , SPEGNIMENTO LUCI BIANCHE


void ACC_INVERNO_LED_BIANCHI() {

if ((ore == 8) && (minuti == 30)) {
  accensione_Led_bianchi();
 
  }
  if((ore == 19) && (minuti == 30)){
 spegnimento_Led_bianchi();
}

}

// FINE FUNZIONE LUCI BIANCHE________________________________________

//___________________FINE INVERNO___________________________________

//_-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
//___________________________FUNZIONE FADE_____________________________________--

// FUNZIONI FADE LUCI ROSSE_______________________________________________________________________________________________________________________________________________________________
// DA CALIBRARE

void  accensione_Led_rossi() {
 for (int fadeValue = 0 ; fadeValue <= 100; fadeValue += 1) {
   analogWrite(luci_rosse, fadeValue);

   delay(20);
 }
}

void spegnimento_Led_rossi() {
 for (int fadeValue = 100 ; fadeValue >= 0; fadeValue -= 1) {
   analogWrite(luci_rosse, fadeValue);
  
   delay(20);
 }
}
//////////////////////FINE FADE ROSSE
//______________________________________________________________________________________________________________________________

// FUNZIONI FADE LUCI VIOLA_______________________________________________________________________________________________________________________________________________________________
// DA CALIBRARE

void accensione_Led_viola() {
 for (int fadeValue = 0 ; fadeValue <= 100; fadeValue += 1) {
   analogWrite(luci_viola, fadeValue);
   
   delay(20);
 }
}

void spegnimento_Led_viola() {
 for (int fadeValue = 100 ; fadeValue >= 0; fadeValue -= 1) {
   
   analogWrite(luci_viola, fadeValue);
   delay(20);
 }
}
//////////////////////FINE FADE VIOLA
//__________________________________________________________________________________________________________
//////////////////////FINE FADE VIOLA
//__________________________________________________________________________________________________________

//__FUNZIONE FADE  LUCI BIANCHE

void accensione_Led_bianchi() {
 for (int fadeValue = 0 ; fadeValue <= 255; fadeValue += 5) {
   analogWrite(luci_bianche, fadeValue);
 
   delay(20);
 }
}

void spegnimento_Led_bianchi() {
 for (int fadeValue = 255 ; fadeValue >= 0; fadeValue -= 1) {
   analogWrite(luci_bianche, fadeValue);
   
   delay(20);
 }
}
//f///////////////////////FINE FADE BIANCHE



//--------------------------------------------------------------------------------------------------------------------------


//____________________________FUNZIONE CIBO_________________________________________________________________________________



void cibo() {
 for (pos = 0; pos <= 90; pos += 1) { // la camma va da 0 a 90 gradi
   // in steps of 1 degree
   myservo.write(pos);            
   delay(15);                      
 }
 for (pos = 90; pos >= 0; pos -= 1) { //la camma torna da 909 a 0 grado
   myservo.write(pos);              
   delay(15);                      
 }
}
////////////////////////////////FINE FUNZIONE CIBO

//-----------------------------------------------------------------------------------------------------------------------------------

//__________________________________FUNZIONE TERMOMETRO__________________________________________
void termometro()
{


}


////////////////fine funzione termometro

//_____________________________________________________________________________________________________________________________

//FUNZIONE PH COPIATO DAL PRODUTTORE

void ph(){

 int pole[10];
 int zaloha;
 unsigned long int prumerVysl = 0;
 // RECUPERA 10 CAMPIONI PER 10MS NELL ARRAY
 for (int i = 0; i < 10; i++) {
   pole[i] = analogRead(pinPo);
   delay(10);
 }
 // ORDINA NUMERI PER DIMENSIONE
 for (int i = 0; i < 9; i++) {
   for (int j = i + 1; j < 10; j++) {
     if (pole[i] > pole[j]) {
       zaloha = pole[i];
       pole[i] = pole[j];
       pole[j] = zaloha;
     }
   }
 }
 // uložení 2. až 8. výsledku do
 // proměnné, z které se vypočte průměr
 // (vynechání dvou členů pole na začátku
 // a konci pro lepší přesnost)
 for (int i = 2; i < 8; i++) {
   prumerVysl += pole[i];
 }
 // výpočet hodnoty pH z průměru
 // měření a přepočet na rozsah 0-14 pH
 float prumerPH = (float)prumerVysl * 5.0 / 1024 / 6;
 float vyslednePH = -5.70 * prumerPH + 21.34;
 // vytištění výsledků po sériové lince
 Serial.print("pH: ");
 Serial.println(vyslednePH);
 // pauza 900 ms před novým měřením, celkem tedy 1s
 delay(900);
}

leggendo un po di guide e prendendo spunti dai vai progetti ho (provato) a scrivere questo codice che teoricamente dovrebbbe accendere le luci in base alla stagione mostrare temperatura e ph ,codi da apruire o chiudere l elettro valvola dell erogatore , la temperatura e controllata da un sempliceriscaldatore d ' avcquario , scusate le tante righe ma non ho una vista da falco e cosi evitavo di andare su e giu per la pagina . lo compila ma non so se funziona perche non ho ancora saldato tutto sul circuito , in piu ( se mi riesce vorre poter trasmetere i valori temperatura e ph in modo da valutarli anche quando non sono a casa ma questa e un altra storia :slight_smile: ) (postato in due parti perche troppo lungo per un post unico ) grazie mille per il tempo che mi dedicate [/code]

altro che la vista ti va insieme :smiley:

// výpočet hodnoty pH z průměru
// měření a přepočet na rozsah 0-14 pH