Salve a tutti sono un neofita e spero possiate aiutarmi.
Io ho un Arduino Mega 2560 R3, un real time clock,un sensore DS18S20,4-5 sensori LM35Dz,-3 sensori LM35DT,una scheda relè fatta in casa con 20 relè,2.8 "TFT Touch Shield Adafruit per Arduino.
sto realizzando un automazione completa per acquario e sono a buon punto,potrei quasi dire che ho finito, la parte di programma per il controllo del Touch completo di porzione di programma del real time e dei sensori di temperatura.Ora il mio problema è il seguente:
tramite le uscite PWM di arduino vado a controllare dei driver che mi accenderanno o spegneranno dei led di potenza ad un determinato orario o con delle determinate condizioni(se le voglio accendere io).
Per fare l'accensione ad un determinato orario ho usato delle if e poi un ciclo for esempio di programma:
//Controllo accensione Led bianchi 1
if(hour>=oreOnBianchi1 && minute>=minutiOnBianchi1 && b==1){
for (valoreLed_W1 = W1 ; valoreLed_W1 < VLW1; valoreLed_W1++) {
analogWrite(LED_White1, valoreLed_W1); //imposta la luminosità dei LED
delay(delaytRAMPAW1);
}
}
dove VLW1 arriva al max a 255 ed è un valore impostabile tramite touch dall'utente
delaytRAMPAW1 è sempre impostabile dall'utente.
un programma esempio per il controllo del touch è questo:
ho usato sempre delle if
//TASTO MENO PER DECREMENTARE IL MESE
if ( p.x > 5 && p.x < 30 && p.y > 110 && p.y <135 && dc==1 && month>=2) {
int newmonth;
mc=1;
dc=1;
cc=0;
tc=0;
ic=0;
ac=0;
fc=0;
sc=0;
p.x=0;
p.y=0;
delay(500);
newmonth=month-1;
month=newmonth;
tft.fillRect(51, 111, 138, 23, YELLOW);//riempimento rettangolo
tft.setCursor(65, 115);
tft.setTextSize(2);
tft.println("MESE:");
tft.setCursor(140, 115);
tft.println(month);
setDateDs1307(second, minute, hour, dayOfWeek, dayOfMonth, month, year);
}
logicamente questi sono solo i pezzi del void loop
ora il problema è:
se inizia il ciclo for per il PWM dei LED il touch è fuori uso, ovvero non riesco a fare niente fin quando il PWM dei led non è finito
ora vi chiedo cosa posso fare? posso risolvere la cosa a livello di programma usando altre cose? e quindi poter usare touch mente c'è il pwm
oppure dovrò procurarmi un altro arduino che mi faccia il pwm e che sia interconnesso serialmente al mio arduino mega?
p.s.
info aggiuntive
la home page del programma(touch) si aggirna ogni secondo per aggiornare l'orario e i valori di temparatura
vi posto anche il link del video del funzionamento del touch:
il video è pessimo lo so ma è fatto con il cellulare
spero possiate aiutarmi