Ошибка в arduino 1.8.1
- Войдите на сайт для отправки комментариев
Вс, 05/03/2017 - 21:52
В среде 1.6.6 ошибки нет, а в 1.8.1 есть
Вот код
//формат указания текущего времени "ДД.ММ.ГГ чч:мм:сс"
//где ДД - день, ММ - месяц, ГГ - год, чч - часы, мм - минуты, сс - секунлы
//ГГ - от 00 до 99 для 2000-2099 годов
#include <Time.h>
#include <DS1307RTC.h>
bool isTimeSet = false; //флаг, указывающий на то, была ли уже задана дата
void setup() {
Serial.begin(9600);
while (!Serial) ; // Только для платы Leonardo
setSyncProvider(RTC.get); // получаем время с RTC
if (timeStatus() != timeSet)
Serial.println("Unable to sync with the RTC"); //синхронизация не удаласть
else
Serial.println("RTC has set the system time");
}
void loop()
{
if (Serial.available()) { //поступила команда с временем
setTimeFromFormatString(Serial.readStringUntil('\n'));
isTimeSet = true; //дата была задана
}
if (isTimeSet) //если была задана дата
{
digitalClockDisplay(); //вывод времени
}
delay(1000);
}
void digitalClockDisplay() {
Serial.print(hour());
printDigits(minute());
printDigits(second());
Serial.print(" ");
Serial.print(day());
Serial.print(" ");
Serial.print(month());
Serial.print(" ");
Serial.print(year());
Serial.println();
}
void printDigits(int digits) {
//выводим время через ":"
Serial.print(":");
if (digits < 10)
Serial.print('0');
Serial.print(digits);
}
void setTimeFromFormatString(String time)
{
//ДД.ММ.ГГ чч:мм:сс
int day = time.substring(0, 2).toInt();
int month = time.substring(3, 5).toInt();
int year = time.substring(6, 8).toInt();
int hours = time.substring(9, 11).toInt();
int minutes = time.substring(12, 14).toInt();
int seconds = time.substring(15, 17).toInt();
TimeElements te;
te.Second = seconds;
te.Minute = minutes;
te.Hour = hours;
te.Day = day;
te.Month = month;
te.Year = year + 30; //год в библиотеке отсчитывается с 1970. Мы хотим с 2000
time_t timeVal = makeTime(te);
RTC.set(timeVal);
setTime(timeVal);
}
Вот ошибка
Arduino: 1.8.1 (Windows 7), Плата:"Arduino/Genuino Uno"
In file included from D:\Arduino\Radio _Clock\Setup_Clock\Setup_Clock.ino:6:0:
C:\Users\Bald\Documents\Arduino\libraries\DS1307RTC/DS1307RTC.h:19:22: error: 'tmElements_t' has not been declard
static bool read(tmElements_t &tm);
^
C:\Users\Bald\Documents\Arduino\libraries\DS1307RTC/DS1307RTC.h:20:23: error: 'tmElements_t' has not been declared
static bool write(tmElements_t &tm);
^
D:\Arduino\Radio _Clock\Setup_Clock\Setup_Clock.ino: In function 'void setup()':
Setup_Clock:13: error: 'setSyncProvider' was not declared in this scope
setSyncProvider(RTC.get); // получаем время с RTC
^
Setup_Clock:14: error: 'timeStatus' was not declared in this scope
if (timeStatus() != timeSet)
^
Setup_Clock:14: error: 'timeSet' was not declared in this scope
if (timeStatus() != timeSet)
^
D:\Arduino\Radio _Clock\Setup_Clock\Setup_Clock.ino: In function 'void digitalClockDisplay()':
Setup_Clock:34: error: 'hour' was not declared in this scope
Serial.print(hour());
^
Setup_Clock:35: error: 'minute' was not declared in this scope
printDigits(minute());
^
Setup_Clock:36: error: 'second' was not declared in this scope
printDigits(second());
^
Setup_Clock:38: error: 'day' was not declared in this scope
Serial.print(day());
^
Setup_Clock:40: error: 'month' was not declared in this scope
Serial.print(month());
^
Setup_Clock:42: error: 'year' was not declared in this scope
Serial.print(year());
^
D:\Arduino\Radio _Clock\Setup_Clock\Setup_Clock.ino: In function 'void setTimeFromFormatString(String)':
Setup_Clock:63: error: 'TimeElements' was not declared in this scope
TimeElements te;
^
Setup_Clock:64: error: 'te' was not declared in this scope
te.Second = seconds;
^
Setup_Clock:70: error: 'makeTime' was not declared in this scope
time_t timeVal = makeTime(te);
^
Setup_Clock:72: error: 'setTime' was not declared in this scope
setTime(timeVal);
exit status 1
'setSyncProvider' was not declared in this scope
100500 раз уже объясняли, перенесите все функции до setup
Во-первых - http://arduino.ru/forum/obshchii/vstavka-programmnogo-koda-v-temukommentarii
Во-вторых, Вы бредите, милейший. То, что Вы назвали кодом не компилируется ни в какой версии IDE. Например, в функцииdigitalClockDisplay() используются функциии minute() и second() которых в коде просто нет. Это не скомпилирует никакая версия. Или Вы дали нам неполный код или просто троллите нас с непонятной целью.
правильно все ему дали. у него там присвоение из библиотеки тайм.
видимо эта библиотека за это время сменила свои хар-ки вот и ответ. и там другие свойства
https://github.com/PaulStoffregen/Time
Ах, сори time.h то я и не заметил. Вот что значит код по-дурацки вставлен. В общем, моё замечание "Во-первых" остаётся в силе - тот самый случай.
.... Вот что значит код по-дурацки вставлен. В общем, моё замечание "Во-первых" остаётся в силе - тот самый случай.
Самый дельный совет. Но кнопку редактировать я не нашел.
А заработало когда библиотеки с другого мееста скачал. Немного загадка осталась. Но да ладно, небуду вас нервировать нубскими вопросами
:)))) загодок никаких нет там автор библиотеки ее как раз переделал в той версии т.е. ты использовал старую.
сейчас можно тупо было писать типа time.day() вместо int day = time.substring(0, 2).toInt(); и переменные не нужны вообще.
а там у тебя еще вывод тогда переменным присвой или опять добавить time.
Я так понимаю эта функция для настройки времени. А этим кодом я пользуюсь только для настройки
для настройки времени более простая вещь использовать системное время. но только разово как вставили батарейку и первый раз запустили скетч потмо закомментить и перелить.
пример из стандартов для библиотеки