Salve a tutti
allora quello che devo realizzare è un automazione completa per acquari e vorrei inserire un touchscreen da 5 o 7".
Un touch di questa dimensioni ha bisogno di una quarantina di pin quindi una scheda(master) arduino due o mega è gia piena o quasi,l'altra scheda arduino(slave) deve fare il lavoro sporco ovvero deve azionare dei relè,leggerei vari sensori(ultrasuono-distanza,temperatura,pH, eccecc),effettuare il PWM per l'illuminazione a led.
Sulla scheda master ci sarà anche un real time.
Tramite il touch e quindi la scheda master io devo modificare alcune variabili,ad esempio l'orario di accensione dei led,la quantità di fertilizzanti da somministrare ed altre cose,questi dati devono essere inviati alla slave che poi dovrà fare i vari azionamenti.
Ora vi chiedo è possibile fare una cosa del genere?Se si come posso fare questa comunicazione? so che le due schede devono essere collegate con i pin tx-rx e gnd. Se resetto una scheda(con tasto) anche l'altra si resetta?
p.s.non sono espertissimo di arduino ,anzi posso dire che sono un neofita
p.p.s. il real time mi serve per entrambe le schede come devo collegarlo?
vi mette 2 spezzoni di sketch che ho realizzato per l'automazione(la sto gia facendo ma con un touch da 2.8" e un mega)
questo va sul master( oltre a modificare l'orario fa anche il print sullo schermo)
void loop()
{
//CONTROLLO TASTO PIU' ORE OFF MOVIMENTO DX
if(p.x>203 && p.x<228 && p.y>127 && p.y<152 && pc==3 && oreOffMovimentoDx<=22){
int newOreOffMovimentoDx;
mc=1;
ic=0;
dc=0;
tc=0;
ac=0;
fc=0;
pc=3;cc=0;info=0;
p.x=0;
p.y=0;newOreOffMovimentoDx=oreOffMovimentoDx+1;
oreOffMovimentoDx=newOreOffMovimentoDx;
tft.fillRect(56, 128, 128, 23, CYAN);
tft.setCursor(85, 133);
tft.setTextColor(BLACK); tft.setTextSize(2);
tft.print("ORE ");
tft.println(oreOffMovimentoDx);
}
//CONTROLLO TASTO MENO MINUTI OFF MOVIMENTO DX
if(p.x>10 && p.x<35 && p.y>155 && p.y<180 && pc==3 && minutiOffMovimentoDx>=1){
int newMinutiOffMovimentoDx;
mc=1;
ic=0;
dc=0;
tc=0;
ac=0;
fc=0;
pc=3;cc=0;info=0;
p.x=0;
p.y=0;newMinutiOffMovimentoDx=minutiOffMovimentoDx-1;
minutiOffMovimentoDx=newMinutiOffMovimentoDx;
tft.fillRect(56, 156, 128, 23, CYAN);
tft.setCursor(65, 161);
tft.setTextColor(BLACK); tft.setTextSize(2);
tft.print("MINUTI ");
tft.println(minutiOffMovimentoDx);
}
}
questo un esempio di codice sulla slave
void loop()
{
if(AccendiMovimentoDx==1 && Rete==HIGH)
{
if(hour==oreOnMovimentoDx && minute==minutiOnMovimentoDx)
{
digitalWrite(MOVIMENTODX,HIGH);
}if(hour==oreOffMovimentoDx && minute==minutiOffMovimentoDx)
{
digitalWrite(MOVIMENTODX,LOW);
}
}else
{
digitalWrite(MOVIMENTODX,LOW);
}
}
come potete vedere minutiOffMovimentoDx o oreOffMovimentoDX(ne ho prese solo 2) sono delle variabili che usano entrambe le schede e che devono essere comunicate dal master alla slave
della serie devo creare un collegamento seriale quasi sincrono che porti un ritardo piccolissimo
mi date un aiutino?