tiny rtc con ds1307 e problemi di compilazione

Mi scuso per aver messo lo stesso Post sulla cartella HARDWARE.
La riporto qua nella speranza di una risposta.

Salve ho da poco comprato un modulo RtC tipo Tiny RTc I2C ma ho problemi quando vado a compilare :

C:\Documents and Settings\stefano\Documenti\Arduino\libraries\RTClib\RTClib.cpp: In member function ‘uint8_t RTC_DS1307::isrunning()’:
C:\Documents and Settings\stefano\Documenti\Arduino\libraries\RTClib\RTClib.cpp:229:20: error: call of overloaded ‘write(int)’ is ambiguous
WIRE._I2C_WRITE(0);
^
C:\Documents and Settings\stefano\Documenti\Arduino\libraries\RTClib\RTClib.cpp:229:20: note: candidates are:
In file included from C:\Documents and Settings\stefano\Documenti\Arduino\libraries\RTClib\RTClib.cpp:4:0:
C:\Documents and Settings\stefano\Documenti\Arduino\libraries\Wire/Wire.h:55:20: note: virtual size_t TwoWire::write(uint8_t)
virtual size_t write(uint8_t);
^
In file included from C:\Programmi\Arduino\hardware\arduino\avr\cores\arduino/Stream.h:26:0,
from C:\Documents and Settings\stefano\Documenti\Arduino\libraries\Wire/Wire.h:24,
from C:\Documents and Settings\stefano\Documenti\Arduino\libraries\RTClib\RTClib.cpp:4:
C:\Programmi\Arduino\hardware\arduino\avr\cores\arduino/Print.h:49:12: note: size_t Print::write(const char*)
size_t write(const char str) {
^
C:\Documents and Settings\stefano\Documenti\Arduino\libraries\RTClib\RTClib.cpp: In static member function ‘static void RTC_DS1307::adjust(const DateTime&)’:
C:\Documents and Settings\stefano\Documenti\Arduino\libraries\RTClib\RTClib.cpp:239:20: error: call of overloaded ‘write(int)’ is ambiguous
WIRE._I2C_WRITE(0);
^
C:\Documents and Settings\stefano\Documenti\Arduino\libraries\RTClib\RTClib.cpp:239:20: note: candidates are:
In file included from C:\Documents and Settings\stefano\Documenti\Arduino\libraries\RTClib\RTClib.cpp:4:0:
C:\Documents and Settings\stefano\Documenti\Arduino\libraries\Wire/Wire.h:55:20: note: virtual size_t TwoWire::write(uint8_t)
virtual size_t write(uint8_t);
^
In file included from C:\Programmi\Arduino\hardware\arduino\avr\cores\arduino/Stream.h:26:0,
from C:\Documents and Settings\stefano\Documenti\Arduino\libraries\Wire/Wire.h:24,
from C:\Documents and Settings\stefano\Documenti\Arduino\libraries\RTClib\RTClib.cpp:4:
C:\Programmi\Arduino\hardware\arduino\avr\cores\arduino/Print.h:49:12: note: size_t Print::write(const char
)
size_t write(const char str) {
^
C:\Documents and Settings\stefano\Documenti\Arduino\libraries\RTClib\RTClib.cpp:247:20: error: call of overloaded ‘write(int)’ is ambiguous
WIRE._I2C_WRITE(0);
^
C:\Documents and Settings\stefano\Documenti\Arduino\libraries\RTClib\RTClib.cpp:247:20: note: candidates are:
In file included from C:\Documents and Settings\stefano\Documenti\Arduino\libraries\RTClib\RTClib.cpp:4:0:
C:\Documents and Settings\stefano\Documenti\Arduino\libraries\Wire/Wire.h:55:20: note: virtual size_t TwoWire::write(uint8_t)
virtual size_t write(uint8_t);
^
In file included from C:\Programmi\Arduino\hardware\arduino\avr\cores\arduino/Stream.h:26:0,
from C:\Documents and Settings\stefano\Documenti\Arduino\libraries\Wire/Wire.h:24,
from C:\Documents and Settings\stefano\Documenti\Arduino\libraries\RTClib\RTClib.cpp:4:
C:\Programmi\Arduino\hardware\arduino\avr\cores\arduino/Print.h:49:12: note: size_t Print::write(const char
)
size_t write(const char str) {
^
C:\Documents and Settings\stefano\Documenti\Arduino\libraries\RTClib\RTClib.cpp: In static member function ‘static DateTime RTC_DS1307::now()’:
C:\Documents and Settings\stefano\Documenti\Arduino\libraries\RTClib\RTClib.cpp:253:20: error: call of overloaded ‘write(int)’ is ambiguous
WIRE._I2C_WRITE(0);
^
C:\Documents and Settings\stefano\Documenti\Arduino\libraries\RTClib\RTClib.cpp:253:20: note: candidates are:
In file included from C:\Documents and Settings\stefano\Documenti\Arduino\libraries\RTClib\RTClib.cpp:4:0:
C:\Documents and Settings\stefano\Documenti\Arduino\libraries\Wire/Wire.h:55:20: note: virtual size_t TwoWire::write(uint8_t)
virtual size_t write(uint8_t);
^
In file included from C:\Programmi\Arduino\hardware\arduino\avr\cores\arduino/Stream.h:26:0,
from C:\Documents and Settings\stefano\Documenti\Arduino\libraries\Wire/Wire.h:24,
from C:\Documents and Settings\stefano\Documenti\Arduino\libraries\RTClib\RTClib.cpp:4:
C:\Programmi\Arduino\hardware\arduino\avr\cores\arduino/Print.h:49:12: note: size_t Print::write(const char
)
size_t write(const char *str) {
^
Errore durante la compilazione

lo scheck che uso è il tipico che si trova in rete:

#include <Wire.h>
#include “RTClib.h”
RTC_DS1307 RTC;

void setup () {
Serial.begin(9600);
Wire.begin();
RTC.begin();
if (! RTC.isrunning()) {
Serial.println(“RTC is NOT running!”);
// following line sets the RTC to the date & time this sketch was compiled
RTC.adjust(DateTime(DATE, TIME));
}
}
void loop () {
DateTime now = RTC.now();
Serial.print(now.year(), DEC);
Serial.print(’/’);
Serial.print(now.month(), DEC);
Serial.print(’/’);
Serial.print(now.day(), DEC);
Serial.print(’ ‘);
Serial.print(now.hour(), DEC);
Serial.print(’:’);
Serial.print(now.minute(), DEC);
Serial.print(’:’);
Serial.print(now.second(), DEC);
Serial.println();
delay(1000);
}

la libreria rtclib è scaricata da adafruit.
e l’ide che utilizzo è il 1.5.8.
non capisco perchè dia quegli errori, perchè se uso da sola la libreia Wire non mi da nessun tipo di errore,me li dà solo in abbinata con la libreria RTclib.
Qualcuno sa aiutarmi in merito?

Se non metti il link esatto al prodotto ed il link esatto a dove scaricare la libreria usata … difficilmente qualcuno si metterà a cercarli per aiutarti !

Quando si fanno delle richieste si devono dare tutte le indicazioni possibili per aiutare chi … ti deve aiutare !

Guglielmo

P.S: In conformità al REGOLAMENTO:
1. il cross-posting è proibito (QUI) e quindi non sei autorizzato ad aprire due post uguali in due aree diverse, neanche per attirare l’attenzione (… se tutti facessero così avremmo le sezioni piene di post duplicati).
Al limite, dopo qualche giorno, si fa “up” del post a cui nessuno ha risposto.
2. il codice DEVE essere racchiuso nei tag CODE no in quelli QUOTE che hai usato tu. I tag CODE sono quelli che inserisce il bottone </>, tutto a sinistra. Cortesemente edita i tuoi post e correggili.

e
http://www.elecrow.com/wiki/index.php?title=Tiny_RTC

dal secondo link ho preso anche lo sketch di prova

Bisogna strapparti le informazioni con le pinze ? ? ?

Che modello di Arduino usi ? Quella libreria, come decritto nel README.md non è stata provata su tutte le varie MCU ...

Guglielmo

P.S.: Prova a compilare uno degli esempi che è a corredo della libreria, es. il DS1307, deve compilarlo senza errori.
P.P.S.: Come ti ho già detto, cortesemente edita i tuoi post e metti il tag CODE al posto di quello che hai usato.
P.P.P.S: La 1.5.8 è vecchia. Scarica l'ultima versione del IDE ... 1.6.6

scusa non sono molto pratico......
Arduino UNO!.
Comunque trovi dappertutto che è stata utilizzata con UNO e funziona a tutti.. (tranne che a me).

Poi mi spieghi cortesemente + nel dettaglio il discorso dell'UP?
Grazie

Probabilmente hai installato male la libreria ...
... perché ho appena provato e, come detto, selezionando Arduino UNO, compila correttamente gli esempi a corredo.

Riscaricala, togli il "-master" dal nome cartella (... si deve chiamare solo RTClib) e mettila nella cartella "library" nella tua cartella Sketchbook. Apri l'IDE, carica l'esempio DS1307 e compilalo ...

Guglielmo

ho gia fatto cosi almeno una decina di volte.
il fatto è che se metto solo l’#include <Wire.h> nello sketch per provare se la compila non vi sono errori di sorta.
I problemi sorgono quando metto il resto!.
Dici che sia la versione IdE?
Fino ad ora ho scartato questa ipotesi perchè da quello che vedo sono tutti esempi molto datati ( quindi la versione 1.5.8 era senza dubbio + recente).

Dico che è la TUA installazione visto che a me compila gli esempi tranquillamente ! Quindi ...
... c'è qualche cosa che non va tra le cose che hai installato (... magari delle librerie vecchie) ::slight_smile:

Guglielmo

ok ora vedo che usando la 1.6.6 me lo compila (la 1.6.6 non è istallata ho scaricato lo ZIP) ma:

  • è possibile tenere istallata la 1.5.8 (quella di prima) e prendere la 1.6.6 (non installata) solo per questo progetto? (vorrei tenere comunque la vecchia versione con cui ho diversi pcb gia funzionanti ed usare la 1.6.6 solo per questo).
  • ho notato scaricando lo sketch che l’RTC mi segna sempre la stessa ora (quini non sta lavorando)
    mi segna sempre questo:
2165/165/165 165:165:85

2165/165/165 165:165:85

2165/165/165 165:165:85

2165/165/165 165:165:85

2165/165/165 165:165:85

2165/165/165 165:165:85

2165/165/165 165:165:85

2165/165/165 165:165:85

hai idee in merito?

  1. puoi tenere installate quante versioni dell'IDE vuoi ... io ho la 0.23, la 1.06, la 1.6.5-r5 e la 1.6.6, più un paio di altre modificate per schede particolari :smiley:

Comunque, credo a partire dalla 1.6.x, hanno introdotto un bel meccanismo ... se, all'interno della cartella dell'IDE, crei una cartella chiamata "portable", quando lo rilanci ... diventa una versione a se stante (portatile) dove tutte le varie cose (ide, core, ecc.) sono locali dentro questa cartella. Se fai una ricerca qui sul forum ... se ne è parlato più volte.
E comunque ... non capisco perché vuoi tenere installata la 1.5.8 che è vecchia e ha problemi ...
... al limite, installa la 1.6.5-r5 che è l'ultima prima delle sostanziali modifiche della 1.6.6 e che non ti crea alcun problema.

  1. L'RTC con il 1307 DEVE essere inizializzato con i valori di anno, mese, giorno, ore ... e ci va montata la batteria ... altrimenti da problemi.

Guglielmo

INIZIALIZZATA??

sv1972:
INIZIALIZZATA??

Perché pensi che all’accensione abbia i valori già dentro ? ? ? :o :o :o

Certo che l devi inizializzare con la data/ora esatta … lo fai da codice una volta per tutte (almeno fino a quando non togli la batteria e tutto si azzera di nuovo).

Guglielmo

Guarda il post con lo sketch uso questa : RTC.adjust(DateTime(DATE, TIME));
Dovrebbe essere lei a inizializzare giusto??.
Quindi resta solo da controllare batteria e voltaggio della stessa.
No niente da fare se metto questo:

if (! RTC.isrunning()) {
    Serial.println("RTC is NOT running!");
   //
    }

mi dice questo in continuazione:

C is NOT running!
2165/165/165 165:165:85

RTC is NOT running!
2165/165/165 165:165:85

quindi oltre alla batteria devo controllare anche i collegamenti? giusto?

... tu che dici ?

sv1972:
quindi oltre alla batteria devo controllare anche i collegamenti? giusto?

... tu che dici ? :smiling_imp: :smiling_imp: :smiling_imp:

Guglielmo

P.S.: Per ogni evenienza ... studiati come funziona il bus I2C ... QUI :wink: