Go Down

Topic: problema a far rimanere data e ora corretta su rtc (Read 10259 times) previous topic - next topic

marco3020

qualcuno sa spiegarmi a cosa serve sqw? io non l'ho collegato ad arduino

nid69ita

qualcuno sa spiegarmi a cosa serve sqw? io non l'ho collegato ad arduino
Mi pare sia solo Square Wave, ovvero l'onda quadra del segnale di clock, di solito non si usa.
my name is IGOR, not AIGOR

marco3020

grazie della spiegazione allora non è quello non so più cosa fare arduino mi dice che rtc funziona e invece non tiene l'ora e data

ho provato anche questo sketch preso da Afieri :
Code: [Select]
// Date and time functions using a DS1307 RTC connected via I2C and Wire lib
 
#include <Wire.h>
#include "RTClib.h"
 
RTC_DS1307 RTC;
 
void setup () {
    Serial.begin(57600);
    Wire.begin();
    RTC.begin();
    RTC.sqw(1);     //0 Led off - 1 Freq 1Hz - 2 Freq 4096kHz - 3 Freq 8192kHz - 4 Freq 32768kHz
  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();
 
    Serial.print(" since midnight 1/1/1970 = ");
    Serial.print(now.unixtime());
    Serial.print("s = ");
    Serial.print(now.unixtime() / 86400L);
    Serial.println("d");
 
    // calculate a date which is 7 days and 30 seconds into the future
    DateTime future (now.unixtime() + 7 * 86400L + 30);
 
    Serial.print(" now + 7d + 30s: ");
    Serial.print(future.year(), DEC);
    Serial.print('/');
    Serial.print(future.month(), DEC);
    Serial.print('/');
    Serial.print(future.day(), DEC);
    Serial.print(' ');
    Serial.print(future.hour(), DEC);
    Serial.print(':');
    Serial.print(future.minute(), DEC);
    Serial.print(':');
    Serial.print(future.second(), DEC);
    Serial.println();
 
    Serial.println();
    delay(3000);
}


e con questo mi da errore questo:

Arduino:1.6.5 (Windows 8.1), Scheda:"Arduino Mega or Mega 2560, ATmega2560 (Mega 2560)"

In file included from C:\Program Files (x86)\Arduino\hardware\arduino\avr\cores\arduino/WString.h:29:0,
                 from C:\Program Files (x86)\Arduino\hardware\arduino\avr\cores\arduino/Print.h:26,
                 from C:\Program Files (x86)\Arduino\hardware\arduino\avr\cores\arduino/Stream.h:26,
                 from C:\Program Files (x86)\Arduino\hardware\arduino\avr\libraries\Wire/Wire.h:26,
                 from C:\Users\marco\Documents\Arduino\libraries\RTClib\RTClib.cpp:4:
C:\Users\marco\Documents\Arduino\libraries\RTClib\RTClib.cpp:17:31: error: variable 'daysInMonth' must be const in order to be put into read-only section by means of '__attribute__((progmem))'
 static uint8_t daysInMonth [] PROGMEM = { 31,28,31,30,31,30,31,31,30,31,30,31 };
                               ^
Errore durante la compilazione

  Questo report potrebbe essere più ricco
di informazioni con
  "Mostra un output dettagliato durante la compilazione"
  abilitato in "File > Impostazioni"

SukkoPera

Prova a cambiare la 4a riga di C:\Users\marco\Documents\Arduino\libraries\RTClib\RTClib.cpp:

Code: [Select]
static uint8_t daysInMonth [] PROGMEM = { 31,28,31,30,31,30,31,31,30,31,30,31 };

come segue:

Code: [Select]
static const uint8_t daysInMonth [] PROGMEM = { 31,28,31,30,31,30,31,31,30,31,30,31 };
"Code is read much more often than it is written, so plan accordingly. Design for readability."

Guida rapida a ESP8266: https://goo.gl/kzh62E

cyberhs

Io sto usando la stessa libreria e mi compila perfettamente.

marco3020

i ci sto smadonando proverò a cambiare quella riga nella libreria domani vi dico sto perdendo le speranze :(

marco3020

sto provando mi da questo : Arduino:1.6.5 (Windows 8.1), Scheda:"Arduino Mega or Mega 2560, ATmega2560 (Mega 2560)"

In file included from sketch_aug27a.ino:5:0:
C:\Users\marco\Documents\Arduino\libraries\Time/Time.h:79:39: error: expected unqualified-id before '/' token
 #define dayOfWeek(_time_)  ((( _time_ / SECS_PER_DAY + 4)  % DAYS_PER_WEEK)+1) // 1 = Sunday
                                       ^
C:\Users\marco\Documents\Arduino\libraries\RTClib/RTClib.h:17:13: note: in expansion of macro 'dayOfWeek'
     uint8_t dayOfWeek() const;
             ^
C:\Users\marco\Documents\Arduino\libraries\Time/Time.h:79:39: error: expected ')' before '/' token
 #define dayOfWeek(_time_)  ((( _time_ / SECS_PER_DAY + 4)  % DAYS_PER_WEEK)+1) // 1 = Sunday
                                       ^
C:\Users\marco\Documents\Arduino\libraries\RTClib/RTClib.h:17:13: note: in expansion of macro 'dayOfWeek'
     uint8_t dayOfWeek() const;
             ^
C:\Users\marco\Documents\Arduino\libraries\Time/Time.h:79:39: error: expected ')' before '/' token
 #define dayOfWeek(_time_)  ((( _time_ / SECS_PER_DAY + 4)  % DAYS_PER_WEEK)+1) // 1 = Sunday
                                       ^
C:\Users\marco\Documents\Arduino\libraries\RTClib/RTClib.h:17:13: note: in expansion of macro 'dayOfWeek'
     uint8_t dayOfWeek() const;
             ^
C:\Users\marco\Documents\Arduino\libraries\Time/Time.h:79:39: error: expected ')' before '/' token
 #define dayOfWeek(_time_)  ((( _time_ / SECS_PER_DAY + 4)  % DAYS_PER_WEEK)+1) // 1 = Sunday
                                       ^
C:\Users\marco\Documents\Arduino\libraries\RTClib/RTClib.h:17:13: note: in expansion of macro 'dayOfWeek'
     uint8_t dayOfWeek() const;
             ^
sketch_aug27a:11: error: conflicting declaration 'RTC_DS1307 RTC'
In file included from sketch_aug27a.ino:9:0:
C:\Users\marco\Documents\Arduino\libraries\DS1307RTC/DS1307RTC.h:33:18: error: 'RTC' has a previous declaration as 'DS1307RTC RTC'
 extern DS1307RTC RTC;
                  ^
sketch_aug27a.ino: In function 'void setup()':
sketch_aug27a:16: error: 'class DS1307RTC' has no member named 'begin'
sketch_aug27a:17: error: 'class DS1307RTC' has no member named 'sqw'
sketch_aug27a:18: error: 'class DS1307RTC' has no member named 'isrunning'
sketch_aug27a.ino: In function 'void loop()':
sketch_aug27a:26: error: 'class DS1307RTC' has no member named 'now'
conflicting declaration 'RTC_DS1307 RTC'

  Questo report potrebbe essere più ricco
di informazioni con
  "Mostra un output dettagliato durante la compilazione"
  abilitato in "File > Impostazioni"


cyberhs

Ho la sensazione che la libreria sia sbagliata.

Cancella completamente quella precedente e reinstalla da questo link:

https://github.com/adafruit/RTClib

marco3020

buongiorno appena la scarico mi dice che gia esiste infatti mi da RTClib-master (1).zip

marco3020

#39
Aug 28, 2015, 10:37 am Last Edit: Aug 28, 2015, 10:57 am by marco3020
Ecco appena stacco usb fa cosi in continuazione ora giusta e poi questo:

cyberhs

Nella cartella download è già presente un file con o stesso nome (il precedente download), quindi è normale.

Per sicurezza, cancellalo e ripeti l'operazione.

Avevo capito che lo RTC non forniva mai l'ora esatta, ma da quanto dici pare la fornisca e dopo qualche istante appare quello strano orario.

Se è così, il problema è un disturbo elettrico.

Cosa hai attaccato alle uscite?

Se c'è una pompa a 12V, ad esempio, hai messo il diodo di ricircolo tra il collettore/drain del transistor/MOSFET ed il positivo di alimentazione?


marco3020

#41
Aug 28, 2015, 04:41 pm Last Edit: Aug 28, 2015, 04:46 pm by marco3020
ho questo :

cyberhs

Con quel groviglio di fili non mi stupisce che tu abbia problemi di disturbi.

Ma lo schema?

marco3020

Qualche idea per raggruppare tutto? Qualcosa fast per staccare  e attaccare, tipo una guaina termorestringente , che non ho capito come funziona

cyberhs

Ti posso solo dire che la linea I2C (SCL ed SDA) dovrebbe avere dei resistori di pullup da 4.7k o meno ed essere non troppo lunga (diciamo 30 cm).

Se non ci sono sulla scheda RTC, potrebbero insorgere dei problemi.

L'attivazione/disattivazione dei relè potrebbe essere la fonte del disturbo, come pure il tipo di carico applicato.

Ecco perché volevo uno schema.

Go Up