Go Down

Topic: swRTC (Read 102698 times) previous topic - next topic

lupo3000


Infatti  :)
Se vuoi mettere componenti esterni allora prendi un rtc da pochi euro ed hai anche la batteria tamponata per 5anni  :)



in effetti...mica hai tutti i torti!! XD

genny77

Ciao a tutti,
perdonate l'ignoranza ma posso usare questa libreria su arduino YUN ?

Grazie

leo72

A che ti serve questa lib su Arduino Yun dato che lato Linux hai un SO che può gestire il tempo tramite server NTP? ;)

Testato

magari per progetti non connessi ad internet ?
non tutte le reti cablate/wifi si creano per accedere ad internet  ;)

dovrebbe gia' funzionare di suo o no ? il 32u4 e' supportato
- [Guida] IDE - http://goo.gl/ln6glr
- [Lib] ST7032i LCD I2C - http://goo.gl/GNojT6
- [Lib] PCF8574+HD44780 LCD I2C - http://goo.gl/r7CstH

ragazzi io ho un problema a tempo di compilazione come Arduino Uno e IDE 1.6.1.
Ho importato la libreria, eseguo swRTCtest ma ottengo:

In file included from swRTCtest.ino:16:0:
C:\Users\User\Documents\Arduino\libraries\swRTC/swRTC.h:524:6: error: prototype for 'byte swRTC::setClockWithTimestamp(long unsigned int, int)' does not match any in class 'swRTC'
 byte swRTC::setClockWithTimestamp(unsigned long timeT, int yearRef) {
      ^
C:\Users\User\Documents\Arduino\libraries\swRTC/swRTC.h:92:11: error: candidate is: boolean swRTC::setClockWithTimestamp(long unsigned int, int)
   boolean setClockWithTimestamp(unsigned long timeT, int yearT = 0);
           ^
Errore durante la compilazione

come mai ?
grazie in anticipo

gpb01

#1070
Mar 22, 2015, 01:55 pm Last Edit: Mar 22, 2015, 02:05 pm by gpb01
 Prima di tutto, essendo il tuo primo post, ti consiglio di presentarti QUI (spiegando quali conoscenze hai di elettronica e di programmazione) e di leggere con attenzione il REGOLAMENTO ...

... poi, perché nella 1.6.1, contrariamente alle versioni precedenti, il boolean ed il byte sono diventati due cose differenti.

Così a naso direi che ... puoi aprire i sorgenti della swRTC (swRTC.h) e sostituire dove trovi "boolean" con "byte" ...
... senza alcun "danno collaterale:smiley-roll:

Guglielmo
Search is Your friend ... or I am Your enemy !

Prima di tutto, essendo il tuo primo post, ti consiglio di presentarti QUI (spiegando quali conoscenze hai di elettronica e di programmazione) e di leggere con attenzione il REGOLAMENTO ...

... poi, perché nella 1.6.1, contrariamente alle versioni precedenti, il boolean ed il byte sono diventati due cose differenti.

Così a naso direi che ... puoi aprire i sorgenti della swRTC (swRTC.h) e sostituire dove trovi "boolean" con "byte" ...
... senza alcun "danno collaterale:smiley-roll:

Guglielmo
Innanzitutto chiedo scusa per non essermi presentato.
L'ho fatto solo da poco...
Sostituendo tutte le variabili da boolean a byte adesso compila.
Grazie mille!

gpb01

Ottimo ...   :)
... ho comunque avvertito Leo (l'autore della libreria) che provvederà a verificare sulle sue varie librerie ed a sistemare la cosa in una prossima release ;)

Guglielmo
Search is Your friend ... or I am Your enemy !

Testato

perché nella 1.6.1, contrariamente alle versioni precedenti, il boolean ed il byte sono diventati due cose differenti.
INteressante, alla fine sempre un byte occupano :-)

ma dove hai letto questa cosa ? nel changelog non c'e'
http://arduino.cc/en/Main/ReleaseNotes
- [Guida] IDE - http://goo.gl/ln6glr
- [Lib] ST7032i LCD I2C - http://goo.gl/GNojT6
- [Lib] PCF8574+HD44780 LCD I2C - http://goo.gl/r7CstH

gpb01

#1074
Mar 22, 2015, 05:39 pm Last Edit: Mar 22, 2015, 05:42 pm by gpb01
Non l'ho letta, se ne è discusso in un altro thread perché il codice che usa i boolean ora occupa di più (... ovvio, invece che puro C usa una classe C++ ) ed è bastato andare a vedere nel "core", file Arduino.h, come sono definiti:

Code: [Select]
#include <stdbool.h>
...
...
typedef bool boolean;
typedef uint8_t byte;


... mentre prima entrambi erano definiti come semplici uint8_t !

Guglielmo
Search is Your friend ... or I am Your enemy !

Testato

#1075
Mar 22, 2015, 10:03 pm Last Edit: Mar 22, 2015, 10:28 pm by Testato
E per quale diavolo di motivo hanno fatto una cosa del genere ?
Io lo catalogherei come Bug  :smiley-eek:
Si è creata incompatibilità con le librerie, consumo maggiore di flash, rallentamento delle operazioni, a fronte di cosa ?

Facciamo una pull request rimettendo le cose come prima   :)
- [Guida] IDE - http://goo.gl/ln6glr
- [Lib] ST7032i LCD I2C - http://goo.gl/GNojT6
- [Lib] PCF8574+HD44780 LCD I2C - http://goo.gl/r7CstH

astrobeed

E per quale diavolo di motivo hanno fatto una cosa del genere ?
Io lo catalogherei come Bug  :smiley-eek:
Per allinearsi con il C/C++ dove il tipo boolean è diverso dal tipo unsigned char, la differenza è che il primo può assumere solo valore 0 o 1 mentre il secondo qualunque valore compreso tra 0 e 255.
Anche se la cosa ti sembra una cavolata ha una sua ragione di essere e ti garantisco che quella è sempre stata una bella cavolata di Arduino definire il tipo bool come unsigned char invece che come boolean, comunque presente nel avrgcc, il tipo boolean è stato introdotto nel C Ansi a partire dalla versione C90.
Il vero bug era nelle precedenti versioni del IDE dove, arbitrariamente, avevano definito bool come unsigned char, cosa che potrebbe causare problemi a run time con codice scritto in C/C++ dove viene utilizzato il tipo boolean per quello che è realmente.
Esempio pratico se in una if si aspetta che il dato boolean sia esclusivamente  0 o 1 e fa un confronto if (pippo == 1), con pippo definito bool con il vecchio sistema, e pippo ha assunto il valore '5' a causa dei calcoli la if non funziona, se pippo è un vero boolean anche se il calcolo fornisce 5 pippo diventa 1.



astrobeed

Si è creata incompatibilità con le librerie,
L'incompatibilità è di chi ha scritto le librerie senza tenere conto del vero significato di un dato boolen :)

PaoloP

INteressante, alla fine sempre un byte occupano :-)

ma dove hai letto questa cosa ? nel changelog non c'e'
http://arduino.cc/en/Main/ReleaseNotes

Si che c'è
Quote
ARDUINO 1.6.0rc2 - 2015.01.20

[ide]
* Reenabled speed of 38400 on serial monitor
* Improved Find/Replace dialog layout (Eberhard Fahle)
* Fixed missing .dll error on some Windows box

[core]
* Arduino "boolean" type is now mapped to "bool" instead of "uint8_t" (Christopher Andrews)

Testato

Quindi non è dalla 1.6.1 ma gia dalla 0

Ma in questo caso dove la lib di leo non funziona lui che colpa ne ha ?
- [Guida] IDE - http://goo.gl/ln6glr
- [Lib] ST7032i LCD I2C - http://goo.gl/GNojT6
- [Lib] PCF8574+HD44780 LCD I2C - http://goo.gl/r7CstH

Go Up
 


Please enter a valid email to subscribe

Confirm your email address

We need to confirm your email address.
To complete the subscription, please click the link in the email we just sent you.

Thank you for subscribing!

Arduino
via Egeo 16
Torino, 10131
Italy