Go Down

Topic: timer senza rtc e rampa tensione (Read 1 time) previous topic - next topic

vanniboy

scusami, nelle risposte mi ero perso il tuo suggermiento! :)
proverò a studiare un pò, anche se sono a digiuno da molto con arduino

PaoloP

La cosa più semplice senza impazzire di tabelle è usare la funzione map.
Code: [Select]
intensitàled = map(oraattuale, orainizio, orafine, 0, 255);
Come già detto è meglio se espimi oraattuale, orainizio e orafine in minuti o in secondi.

vanniboy

questo è una parte dello sketc :


int   ore   = rtc.getHours();  
map(ore,8,10, 0,255);

così potrebbe funzionare anche nel  calcolo nel momento in cui io imposto l'ora? 


leo72


questo è una parte dello sketc :


int   ore   = rtc.getHours();  
map(ore,8,10, 0,255);

così potrebbe funzionare anche nel  calcolo nel momento in cui io imposto l'ora? 



No. Così hai solo 3 valori:
8->0
9->128
10->255
Devi usare i secondi come ti ha detto PaoloP, più che i secondi io userei il timestamp UNIX. Trasformi l'orario in timestamp (il numero di secondi dal 1970.0 ad oggi) e poi i conti li fai in secondi, in questo modo hai molti più valori. Con la map messa come hai fatto tu ottieni solo 2 valori perché map restituisce un intero.

vinciolo

scudsare ragazzi ma in incremeneto decremento tipo questo nooo?

Quote

 int LED_White1=2;//pin 2 per il pwm
 int valoreLed_W1=0;//variabile usata per l'incremento
 int VLW1=255;//valore del pwm impostato
 int delaytRAMPAW1=(minutiRampa1*60000)/VLW1;
 //CONTROLLO INCREMENTO FADE LED BIANCHI 1
 if(hour>=oreOnBianchi1 && minute>=minutiOnBianchi1 && hour<oreOffBianchi1 && valoreLed_W1<VLW1)
 {
   statoINC_W1 = 1;//fa parire l'incremento
 }else
 {
   statoINC_W1 = 0;// stop al raggiungimento max luminositá LED
 }
 //ciclo di incremento del led bianchi 1
  if (statoINC_W1 == 1)
  {currentMillis_W1 = millis();
  if(currentMillis_W1 - previousMillis_W1 > delaytRAMPAW1)
  { 
  previousMillis_W1 = currentMillis_W1;
  valoreLed_W1++;
  analogWrite(LED_White1,valoreLed_W1);
  Serial.print("valoreLed_W1: ");
  Serial.println(valoreLed_W1);
  }
  }


PaoloP

La differenza tra il mio metodo e il tuo è che il mio restituisce il valore assoluto della luminosità dei led in base all'orario seguendo un'andamento lineare tra l'ora di inizio e di fine. Nel tuo effettui in incremento relativo in base ad un intervallo precalcolato.
Vanno bene tutti e due. Dipende dall'implementazione che si vuol fare.

Go Up