Ви не увійшли.
Замените
#include <Time.h>
на
#include <TimeLib.h>
Там все просто ты пытаешся в переменные типа tmElements_t записать данные другого типа.
А как исправить то?
Там все просто ты пытаешся в переменные типа tmElements_t записать данные другого типа.
Всем спасибо за подсказки. Воспользовался другой библиотекой и всё all right.
Поскольку библиотек к часам много,
- во-первых: они все рабочие,
- во-вторых: их много и они могут конфликтовать между собой,
я предложил бы два варианта:
Первый вариант: Указать "жесткие" пути к библиотекам часов в #include (вместо #include <DS1307RTC.h> написать #include "C:\Arduino\libraries\DS1307RTC/DS1307RTC.h"), поскольку
Форма в кавычках Препроцессор ищет включаемые файлы в следующем порядке:
1. В том же каталоге, где находится файл с оператором #include.
2. В каталогах открытых в данный момент включаемых файлов (в порядке, обратном тому, в котором они открывались). Поиск начинается в каталоге родительского включаемого файла, а затем выполняется в каталогах всех включаемых файлов-прародителей.
3. По путям, заданным всеми параметрами компилятора /I.
4. По путям, заданным в переменной среды INCLUDE.
Форма с угловыми скобками Препроцессор ищет включаемые файлы в следующем порядке:
1. По путям, заданным всеми параметрами компилятора /I.
2. Если компиляция выполняется из командной строки — по путям, которые заданы в переменной среды INCLUDE.
Ну в второй вариант, по принципу первого, переложить файлы h, cpp от библиотеки часов в каталог с ino, и изменить кавычки с угловых на двойные, вот так: #include "DS1307RTC.h". При открытии ino файла откроются в Arduino IDE дополнительные закладки с .h файлами, игнорим.
Третий вариант - хреновый, сделать поиск по компьютеру одноименных файлов библиотек часов, и ну и переименовывать лишние в DS1307RTC.h.old, например, оставив один какой-то DS1307RTC.h, предварительно проверив в нем наличие определений tmElements_t и пробовать.
Я данную библиотеку вообще не использую.
Попробуйте так:
//блок считывания текущего времени и даты
Wire.beginTransmission(0x68);
Wire.write((uint8_t)0);
Wire.endTransmission();
Wire.requestFrom(0x68, 7);
// if (Wire.available() < 7) return;
Second = bcd2dec(Wire.read() & 0x7f);
Minute = bcd2dec(Wire.read() );
Hour = bcd2dec(Wire.read() & 0x3f); // mask assumes 24hr clock
Wday = Wire.read();
Day = bcd2dec(Wire.read() );
Month = bcd2dec(Wire.read() );
Year = bcd2dec(Wire.read() ); //отсчет с 2000 года
//блок записи текущего времени и даты
Second |= 0x80; // stop the clock
Wire.beginTransmission(0x68);
Wire.write((uint8_t)0); // reset register pointer
Wire.write(dec2bcd(Second)) ;
Wire.write(dec2bcd(Minute));
Wire.write(dec2bcd(Hour)); // sets 24 hour format
Wire.write(Wday);
Wire.write(dec2bcd(Day));
Wire.write(dec2bcd(Month));
Wire.write(dec2bcd(Year));
Wire.endTransmission();
Second &= 0x7f; // start the clock
Wire.beginTransmission(0x68);
Wire.write((uint8_t)0x00); // reset register pointer
Wire.write(dec2bcd(Second)) ;
Wire.endTransmission();
Библиотека Time взята отсюда - https://github.com/PaulStoffregen/Time ?
Пробовал отсюда http://robotosha.ru/arduino/rtc-and-arduino.html
и из стандартного набора программы arduino
Библиотека Time взята отсюда - https://github.com/PaulStoffregen/Time ?
Пробовал. Не в этом проблема.
Подключено 3 библиотеки
#include <Wire.h>
#include <Time.h>
#include <DS1307RTC.h>
Компилятор ругается только на DS1307. Модуль ардуино нано atmega328
C:\Arduino\libraries\DS1307RTC/DS1307RTC.h:19:22: error: 'tmElements_t' has not been declared
static bool read(tmElements_t &tm);
^
C:\Arduino\libraries\DS1307RTC/DS1307RTC.h:20:23: error: 'tmElements_t' has not been declared
static bool write(tmElements_t &tm);
^
timeweather:10: error: 'tmElements_t' does not name a type
tmElements_t tm;
^
C:\Arduino\timeweather\timeweather.ino: In function 'void setup()':
timeweather:20: error: expected primary-expression before ')' token
if (RTC.write(tm)) {
^
C:\Arduino\timeweather\timeweather.ino: In function 'bool getTime(const char*)':
timeweather:53: error: expected unqualified-id before '.' token
tm.Hour = Hour;
^
timeweather:54: error: expected unqualified-id before '.' token
tm.Minute = Min;
^
timeweather:55: error: expected unqualified-id before '.' token
tm.Second = Sec;
^
C:\Arduino\timeweather\timeweather.ino: In function 'bool getDate(const char*)':
timeweather:70: error: expected unqualified-id before '.' token
tm.Day = Day;
^
timeweather:71: error: expected unqualified-id before '.' token
tm.Month = monthIndex + 1;
^
timeweather:72: error: expected unqualified-id before '.' token
tm.Year = CalendarYrToTm(Year);
^
exit status 1
'tmElements_t' does not name a type
У вас имя пользователя на кириллице, Arduino не обучен великому и могучему.
Просьба помочь разобраться почему возникают ошибки при компиляции DS1307RTC.h