Go Down

Topic: millis o unixtime? (Read 2794 times) previous topic - next topic

leo72

[OT]
quella shell non permette quasi nulla. Allora meglio Bitlash
http://bitlash.net/wiki/start
[/OT]

zioTonino


Millis va in overflow dopo 49,7 giorni.

Io ho sviluppato alcune alternative che non soffrono di questo inconveniente:
libreria secTimer: un semplice contasecondi che utilizzi come milis(), ma che va in overflow dopo 136 anni!
swRTC: una libreria per implementare un RTC software: con essa puoi avere il tempo in oo:mm:ss e la data in gg:mm:aa per poter programmare eventi anche a distanza di anni
leOS: un semplice scheduler che esegue azioni in background indipendenti dal loop principale, a cadenza impostabile

Trovi tutto qui:
http://www.leonardomiliani.com/?page_id=374


ciao Leo,

purtroppo questo percorso non esiste

Code: [Select]
your-arduino-IDE-folder/hardware/tiny/cores/tiny/
e inoltre il file, core_build_options.h, non esite..

nella cartella hardware ho solo altre due cartelle:
arduino e tools
nella prima c'è una cartella cores (percorso esatto:
Code: [Select]
G:\Antonio\progetti\arduino-1.0.1\hardware\arduino\cores\arduino all'interno di questa cartella sono contenuti alcuni file, tra i quali:
Arduino.h, Binary.h

che faccio?



zioTonino

nella swRTC non è implementata qualche funzione per andare in avanti o indietro nel tempo?

con la libreria dell'adafruit e con i pulsanti posso impostare l'ora dal display attraverso il codice:
Code: [Select]
      if (buttons == BUTTON_RIGHT){

        DateTime future (now.unixtime() + 1 * 3600L );

        RTC.adjust(DateTime(future.year(), future.month(), future.day(), future.hour(), future.minute(), future.second()));

        lcd.setCursor(0,1); 
        lcd.print("ORA +1          ");
        delay(400);


senza paura che sballi la data o altro...

si può fare anche con la tua? thanks

leo72

Il percorso che ti ho dato è corretto, forse hai avuto un problema di idle del sito.
La swRTC implementa un RTC software e poi impostare la data e l'ora nonché leggerli. Siccome si basa sull'HW dell'Arduino, non ha la precisione di un RTC hardware ma se devi programmare delle azioni nel futuro ti può essere sufficiente.
Cmq se vuoi solo contare il tempo, usa la secTimer, e fai un controllo su seconds come se lo facessi su millis.

PS:
your-arduino-IDE-folder/hardware/tiny/cores/tiny/
questo percordo ce l'hai se hai installato il core Tiny per programmare gli Attiny.

zioTonino

#19
Jul 03, 2012, 07:58 am Last Edit: Jul 03, 2012, 08:05 am by zioTonino Reason: 1
ciao Leo,
io ho un Arduino UNO R3, che monta un Atmega 328P-PU

Code: [Select]
********************************************************************
REQUIREMENTS

* The secTimer library needs Arduino IDE version 002x or 1.0x to work with Atmega48/88/168/328/328P, Atmega640/1280/1281/2560/2561 and Atmega8/8A.
* To work with Attiny24/44/84, Attiny25/45/85 and Attiny2313 you need the Tiny Core libraries that you can download from:
http://code.google.com/p/arduino-tiny/
* To work with Atmega644/1284 you need a speciale core that you can download from:
http://www.leonardomiliani.com/?page_id=374

Directions to install and use the Tiny and 644/1284 cores are provided from their respective authors.

********************************************************************



ma quale Tiny Core devo montare? (IDE 1.0.1)
Nel punto due e tre la mia versione non è comprsa...

Grazie

lesto

zioTonino, il core per gli arduino UNO è già compreso nell'IDE. Gli at-tiny sono degli altri chip che puoi acquistare per pochi euro e sono molto meno potenti di atMega (il chip usato sugli arduino).

Quindi vai tranquillo, hai già tutto il necessario per compilare la libreria senza smanettare con l'ide (se ci hai smanettato, consiglio di disinstallare e ripartire da capo)
sei nuovo? non sai da dove partire? leggi qui: http://playground.arduino.cc/Italiano/Newbie

leo72


ciao Leo,
io ho un Arduino UNO R3, che monta un Atmega 328P-PU
(...)
ma quale Tiny Core devo montare? (IDE 1.0.1)
Nel punto due e tre la mia versione non è comprsa...

Grazie


Nessuno. Da come avevi domandato, pareva che volessi compilare per un Tiny, quindi ti ho detto come fare  ;)
Se hai un Arduino, non devi installare nient'altro, come ha detto anche lesto.

zioTonino

ah...  :smiley-roll-sweat:

senti ma mi sapresti spiegare allora il perchè quando utilizzo il comando:

Code: [Select]
myTimer.stopTimer();

mi si blocca lo sketch? pensavo fosse un problema di librerie...

thanks

zioTonino


ah...  :smiley-roll-sweat:

senti ma mi sapresti spiegare allora il perchè quando utilizzo il comando:

Code: [Select]
myTimer.stopTimer();

mi si blocca lo sketch? pensavo fosse un problema di librerie...

thanks


qualche idea?  :smiley-sad-blue:

lesto

sei nuovo? non sai da dove partire? leggi qui: http://playground.arduino.cc/Italiano/Newbie

leo72

#25
Jul 04, 2012, 12:33 am Last Edit: Jul 04, 2012, 12:35 am by leo72 Reason: 1
Ups... mi era sfuggito il tuo post... stai usando la swRTCsecTimer? Che versione?
Lo sketch si blocca a quel comando?

zioTonino

Code: [Select]
********************************************************************
VERSION HISTORY

2012/04/18 - v. 0.2:    name changed
2012/04/18 - v. 0.1:    first release

********************************************************************


si, mi si pianta..
esegue tutto quello che c'è prima dopo di che... si pianta..

leo72


zioTonino

Code: [Select]
void ControlloLivello(){
 
  ++conta;

  lcd.setCursor(0,0);
 
  lcd.print(conta);
 
  lcd.print(" ");
  lcd.print(timer);
 
  myTimer.stopTimer();
 
  lcd.print(" ");
  lcd.print(timer);
 
  delay(1000);

}


Questa è una funzione chiamata dal loop: sull'lcd viene visualizzato solo "1 0"
e niente altro. Se oscuro (//) lo stopTimer() sull'lcd compaiono 3 cifre che si incrementano ogni secondo..
spero di essere stato chiaro. :)

lesto

però lcd è una libreria più o meno complessa, se invece dopo fai accendere il led cosa succede?

se si accende il led, allora è un'incompatibilità tra librerie, altrimenti è un problema di leo  :smiley-mr-green:
sei nuovo? non sai da dove partire? leggi qui: http://playground.arduino.cc/Italiano/Newbie

Go Up