Pages: 1 [2] 3   Go Down
Author Topic: millis o unixtime?  (Read 2228 times)
0 Members and 1 Guest are viewing this topic.
Global Moderator
Italy
Offline Offline
Brattain Member
*****
Karma: 325
Posts: 22498
Logic is my way
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

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


Offline Offline
Full Member
***
Karma: 0
Posts: 106
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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:
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:
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?


Logged

Offline Offline
Full Member
***
Karma: 0
Posts: 106
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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

Global Moderator
Italy
Offline Offline
Brattain Member
*****
Karma: 325
Posts: 22498
Logic is my way
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

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


Offline Offline
Full Member
***
Karma: 0
Posts: 106
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

ciao Leo,
io ho un Arduino UNO R3, che monta un Atmega 328P-PU

Code:
********************************************************************
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
« Last Edit: July 03, 2012, 01:05:10 am by zioTonino » Logged

0
Offline Offline
Shannon Member
****
Karma: 130
Posts: 10448
:(){:|:&};:
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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

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

Global Moderator
Italy
Offline Offline
Brattain Member
*****
Karma: 325
Posts: 22498
Logic is my way
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

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  smiley-wink
Se hai un Arduino, non devi installare nient'altro, come ha detto anche lesto.
Logged


Offline Offline
Full Member
***
Karma: 0
Posts: 106
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

ah...  smiley-roll-sweat

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

Code:
myTimer.stopTimer();

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

thanks
Logged

Offline Offline
Full Member
***
Karma: 0
Posts: 106
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

ah...  smiley-roll-sweat

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

Code:
myTimer.stopTimer();

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

thanks

qualche idea?  smiley-sad-blue
Logged

0
Offline Offline
Shannon Member
****
Karma: 130
Posts: 10448
:(){:|:&};:
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

codice?
Logged

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

Global Moderator
Italy
Offline Offline
Brattain Member
*****
Karma: 325
Posts: 22498
Logic is my way
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Ups... mi era sfuggito il tuo post... stai usando la swRTCsecTimer? Che versione?
Lo sketch si blocca a quel comando?
« Last Edit: July 03, 2012, 05:35:55 pm by leo72 » Logged


Offline Offline
Full Member
***
Karma: 0
Posts: 106
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Code:
********************************************************************
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..
Logged

Global Moderator
Italy
Offline Offline
Brattain Member
*****
Karma: 325
Posts: 22498
Logic is my way
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

codice?
Quoto. Vediamo di capirci qualcosa.
Logged


Offline Offline
Full Member
***
Karma: 0
Posts: 106
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Code:
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. smiley
Logged

0
Offline Offline
Shannon Member
****
Karma: 130
Posts: 10448
:(){:|:&};:
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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
Logged

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

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