#1 2016-11-13 17:12:22

Android
Учасник
Зареєстрований: 2016-11-13
Повідомлень: 8

Ошибка при компиляции библиотеки RTC1307

Просьба помочь разобраться почему возникают ошибки при компиляции DS1307RTC.h

7834983.png

Остання редакція Android (2016-11-13 17:26:45)

Неактивний

#2 2016-11-13 17:36:47

void loop
Учасник
Зареєстрований: 2016-10-20
Повідомлень: 25

Re: Ошибка при компиляции библиотеки RTC1307

У вас имя пользователя на кириллице, Arduino не обучен великому и могучему.

Остання редакція void loop (2016-11-13 17:38:12)

Неактивний

#3 2016-11-13 17:58:33

Android
Учасник
Зареєстрований: 2016-11-13
Повідомлень: 8

Re: Ошибка при компиляции библиотеки RTC1307

Пробовал. Не в этом проблема.
Подключено 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

Остання редакція Android (2016-11-13 18:00:53)

Неактивний

#4 2016-11-13 18:18:42

void loop
Учасник
Зареєстрований: 2016-10-20
Повідомлень: 25

Re: Ошибка при компиляции библиотеки RTC1307

Библиотека Time взята отсюда - https://github.com/PaulStoffregen/Time ?

Остання редакція void loop (2016-11-13 18:18:54)

Неактивний

#5 2016-11-13 20:52:02

Android
Учасник
Зареєстрований: 2016-11-13
Повідомлень: 8

Re: Ошибка при компиляции библиотеки RTC1307

void loop пише:

Библиотека Time взята отсюда - https://github.com/PaulStoffregen/Time ?

Пробовал отсюда http://robotosha.ru/arduino/rtc-and-arduino.html

и из стандартного набора программы arduino

Остання редакція Android (2016-11-13 20:52:25)

Неактивний

#6 2016-11-14 16:42:57

alex_dol
Учасник
Зареєстрований: 2015-12-28
Повідомлень: 196

Re: Ошибка при компиляции библиотеки RTC1307

Я данную библиотеку вообще не использую.
Попробуйте так:
//блок считывания текущего времени и даты
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();

Неактивний

#7 2016-11-14 17:31:09

Saddamko
Учасник
Зареєстрований: 2016-10-20
Повідомлень: 23

Re: Ошибка при компиляции библиотеки RTC1307

Поскольку библиотек к часам много, 
- во-первых: они все рабочие,
- во-вторых: их много и они могут конфликтовать между собой,
я предложил бы два варианта:

Первый вариант: Указать "жесткие" пути к библиотекам часов в #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 и пробовать.

Остання редакція Saddamko (2016-11-14 17:34:44)

Неактивний

#8 2016-11-17 21:26:02

Android
Учасник
Зареєстрований: 2016-11-13
Повідомлень: 8

Re: Ошибка при компиляции библиотеки RTC1307

Всем спасибо за подсказки. Воспользовался другой библиотекой и всё all right.   smile

Неактивний

#9 2016-11-21 02:08:00

Panzerfunker
Учасник
Зареєстрований: 2016-10-28
Повідомлень: 13

Re: Ошибка при компиляции библиотеки RTC1307

Там все просто ты пытаешся в переменные типа tmElements_t записать данные другого типа.

Неактивний

#10 2017-01-26 08:07:35

Дмитрийыавфа
Гість

Re: Ошибка при компиляции библиотеки RTC1307

Panzerfunker пише:

Там все просто ты пытаешся в переменные типа tmElements_t записать данные другого типа.

А как исправить то?

#11 2018-02-08 16:13:45

Alex_solomon
Гість

Re: Ошибка при компиляции библиотеки RTC1307

Замените
#include <Time.h>
на
#include <TimeLib.h>

Швидке повідомлення

Введіть повідомлення і натисніть Надіслати

Підвал форуму