Loading...
Pages: 1 [2]   Go Down
Author Topic: timer senza rtc e rampa tensione  (Read 526 times)
0 Members and 1 Guest are viewing this topic.
ITALIA
Offline Offline
Newbie
*
Karma: 0
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
Offline Offline
Faraday Member
**
Karma: 49
Posts: 3000
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

IDE 1.0.4 - Arduino UNO R3 - Ethernet Shield R3 - DCF77 Module - Adafruit Data Loggin Shield - LCD 16x2 RGB positive backlight - i2c LCD backpack - RTC 1307 Board - Saleae Compatibile Logic Analyzer 8ch 24Mhz - ATtiny2313 ProtoBoard - Xino Board - ATtiny 4313 - Arduino 2009 - Arduino USB Serial Ligth - DS18B20 - LM35DZ - ShiftRegister - TL431 - ATtiny 85
Ultimi acquisti:
CodeBender: http://codebender.cc/register/?referrer=PaoloP

ITALIA
Offline Offline
Newbie
*
Karma: 0
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

Forum Moderator
Italy
Offline Offline
Brattain Member
*****
Karma: 219
Posts: 16440
Don't know what I do
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? 


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
Newbie
*
Karma: 0
Posts: 20
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
Offline Offline
Faraday Member
**
Karma: 49
Posts: 3000
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

IDE 1.0.4 - Arduino UNO R3 - Ethernet Shield R3 - DCF77 Module - Adafruit Data Loggin Shield - LCD 16x2 RGB positive backlight - i2c LCD backpack - RTC 1307 Board - Saleae Compatibile Logic Analyzer 8ch 24Mhz - ATtiny2313 ProtoBoard - Xino Board - ATtiny 4313 - Arduino 2009 - Arduino USB Serial Ligth - DS18B20 - LM35DZ - ShiftRegister - TL431 - ATtiny 85
Ultimi acquisti:
CodeBender: http://codebender.cc/register/?referrer=PaoloP

Pages: 1 [2]   Go Up
Print
 
Jump to: