Pages: 1 [2]   Go Down
Author Topic: timer senza rtc e rampa tensione  (Read 1669 times)
0 Members and 1 Guest are viewing this topic.
ITALIA
Offline Offline
Newbie
*
Karma: 1
Posts: 14
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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

Cagliari, Italy
Offline Offline
Tesla Member
***
Karma: 115
Posts: 7257
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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

Code fast. Code easy. Codebender --> http://codebender.cc/?referrer=PaoloP

ITALIA
Offline Offline
Newbie
*
Karma: 1
Posts: 14
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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? 

Logged

Global Moderator
Italy
Online Online
Brattain Member
*****
Karma: 335
Posts: 23125
Logic is my way
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

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.
Logged


Offline Offline
Jr. Member
**
Karma: 1
Posts: 53
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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);
  }
  }

Logged

Cagliari, Italy
Offline Offline
Tesla Member
***
Karma: 115
Posts: 7257
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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.
Logged

Code fast. Code easy. Codebender --> http://codebender.cc/?referrer=PaoloP

Pages: 1 [2]   Go Up
Jump to: