Проблема с RTCLib
- Войдите на сайт для отправки комментариев
Пт, 23/05/2014 - 17:37
ПРИ заливке кода выдает ошибку:
C:\Program Files (x86)\Arduino\hardware\tools\avr\bin\avr-g++ -c -g -Os -Wall -fno-exceptions -ffunction-sections -fdata-sections -mmcu=atmega2560 -DF_CPU=16000000L -MMD -DUSB_VID=null -DUSB_PID=null -DARDUINO=105 -IC:\Program Files (x86)\Arduino\hardware\arduino\cores\arduino -IC:\Program Files (x86)\Arduino\hardware\arduino\variants\mega -IC:\Program Files (x86)\Arduino\libraries\Wire C:\Users\Igor\AppData\Local\Temp\build7896168291603421533.tmp\sketch_may23a.cpp -o C:\Users\Igor\AppData\Local\Temp\build7896168291603421533.tmp\sketch_may23a.cpp.o
sketch_may23a.ino:2:20: error: RTClib.h: No such file or directory
sketch_may23a:4: error: 'RTC_DS1307' does not name a type
sketch_may23a.ino: In function 'void setup()':
sketch_may23a:53: error: 'RTC' was not declared in this scope
sketch_may23a.ino: In function 'void Led_Dim_PWM()':
sketch_may23a:90: error: 'DateTime' was not declared in this scope
sketch_may23a:90: error: expected `;' before 'now'
sketch_may23a:91: error: 'now' was not declared in this scope
Сам код:
#include <Wire.h> #include "RTClib.h" RTC_DS1307 RTC; int Hours_Start_Sunrise[6] = {11, 9, 10, 11, 12, 12}; // начало рассвета по каналам час int Minutes_Start_Sunrise[6] = {0, 0, 0, 0, 0, 0}; // начало рассвета по каналам минута int Hours_End_Sunrise[6] = {15, 12, 13, 14, 15, 15}; // окончание рассвета по каналам час int Minutes_End_Sunrise[6] = {0, 0, 0, 0, 0, 0}; // окончание рассвета по каналам минута int Hours_Start_Sunset[6] = {17, 20, 19, 18, 17, 17}; // начало заката по каналам час int Minutes_Start_Sunset[6] = {0, 0, 0, 0, 0, 0}; // начало заката по каналам минута int Hours_End_Sunset[6] = {21, 23, 22, 21, 21, 21}; // окончание заката по каналам час int Minutes_End_Sunset[6] = {0, 0, 0, 0, 0, 0}; // окончание заката по каналам минута int MinuteDay_Start_Sunrise[6]; // день в минутах для начала рассвета int MinuteDay_End_Sunrise[6]; // день в минутах для окончания рассвета int MinuteDay_Start_Sunset[6]; // день в минутах для начала заката int MinuteDay_End_Sunset[6]; // день в минутах для окончания заката int Current_MinuteDay; // текущая минута суток int Current_Period[6]; // текущая часть суток 1-рассвет, 2-день, 3-закат, 4-ночь для каждого ШИМ int Meridian_PWM[6] = {128, 192, 192, 192, 128, 128}; // максимальное значение ШИМ int Midnight_PWM[6] = {0, 0, 0, 0, 0, 0}; // минимальное значение ШИМ int Current_PWM[6] = {0, 0, 0, 0, 0, 0}; // текущее значение ШИМ /* ***************************************************** */ /* * * */ /* * ШИМ пин для CW, TV, RB, NB, DR, NG * */ /* * Пин - 3 - CW - Cool White * */ /* * Пин - 5 - TV - True Violet * */ /* * Пин - 6 - RB - Royal Blue * */ /* * Пин - 7 - NB - Blue * */ /* * Пин - 10 - DR - Deep Red * */ /* * Пин - 11 - NG - Green * */ /* * * */ /* ***************************************************** */ int PWM_Pin[6] = {3, 5, 6, 9, 10, 11}; // ШИМ пин для CW, TV, RB, NB, DR, NG int Relay1 = 7; //вент int Relay2 = 8; //луна byte Relay1Status=false; byte Relay2Status=false; void setup() { Serial.begin(57600); Wire.begin(); RTC.begin(); if (! RTC.isrunning()) { Serial.println("RTC is NOT running!"); //RTC.adjust(DateTime(2012, 7, 12, 22, 48, 1)); } //RTC.adjust(DateTime(2012, 7, 31, 21, 53, 1)); for (int i=0; i<=5; i++) { pinMode(PWM_Pin[i], OUTPUT); // Установка пин для ШИМ } for (int i=0; i<=5; i++) { analogWrite(PWM_Pin[i], Midnight_PWM[i]); // Установка минимального значения ШИМ Current_PWM[i]=Midnight_PWM[i]; // установка текущих значений ШИМ в минимум } for (int i=0; i<=5; i++) { MinuteDay_Start_Sunrise[i]=60*Hours_Start_Sunrise[i] + Minutes_Start_Sunrise[i]; // Расчет минуты суток для начала рассвета MinuteDay_End_Sunrise[i]=60*Hours_End_Sunrise[i] + Minutes_End_Sunrise[i]; // Расчет минуты суток для окончания рассвета MinuteDay_Start_Sunset[i]=60*Hours_Start_Sunset[i] + Minutes_Start_Sunset[i]; // Расчет минуты суток для начала заката MinuteDay_End_Sunset[i]=60*Hours_End_Sunset[i] + Minutes_End_Sunset[i]; // Расчет минуты суток для окончания заката } pinMode(Relay1, OUTPUT); pinMode(Relay2, OUTPUT); digitalWrite(Relay1, LOW); digitalWrite(Relay2, HIGH); } // Процедура расчета текущего периода и значения PWM по каналам void Led_Dim_PWM() { DateTime now = RTC.now(); Current_MinuteDay = (now.hour() * 60) + now.minute(); for (int i=0; i<=5; i++) { Current_Period[i]=4; if (Current_MinuteDay>=MinuteDay_Start_Sunrise[i] && Current_MinuteDay<=MinuteDay_End_Sunrise[i]) {Current_Period[i]=1;} if (Current_MinuteDay>MinuteDay_End_Sunrise[i] && Current_MinuteDay<MinuteDay_Start_Sunset[i]) {Current_Period[i]=2;} if (Current_MinuteDay>=MinuteDay_Start_Sunset[i] && Current_MinuteDay<=MinuteDay_End_Sunset[i]) {Current_Period[i]=3;} if (Current_Period[i]==1) { Current_PWM[i]=(float)(((float)Current_MinuteDay-MinuteDay_Start_Sunrise[i])/((float)MinuteDay_End_Sunrise[i]-MinuteDay_Start_Sunrise[i]))*((float)Meridian_PWM[i]-Midnight_PWM[i]); if (Current_PWM[i]<Midnight_PWM[i]) {Current_PWM[i]=Midnight_PWM[i];} analogWrite(PWM_Pin[i], Current_PWM[i]); } if (Current_Period[i]==2) { if (Current_PWM[i]!=Meridian_PWM[i]) { Current_PWM[i]=Meridian_PWM[i]; analogWrite(PWM_Pin[i], Current_PWM[i]); } } if (Current_Period[i]==3) { Current_PWM[i]=(float)(((float)MinuteDay_End_Sunset[i]-Current_MinuteDay)/((float)MinuteDay_End_Sunset[i]-MinuteDay_Start_Sunset[i]))*((float)Meridian_PWM[i]-Midnight_PWM[i]); analogWrite(PWM_Pin[i], Current_PWM[i]); } if (Current_Period[i]==4) { if (Current_PWM[i]!=Midnight_PWM[i]) { Current_PWM[i]=Midnight_PWM[i]; if (Current_PWM[i]<Midnight_PWM[i]) {Current_PWM[i]=Midnight_PWM[i];} analogWrite(PWM_Pin[i], Current_PWM[i]); } } } 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.print(" Current_MinuteDay: "); Serial.print(Current_MinuteDay, DEC); Serial.println(); for (int i=0; i<=5; i++) { Serial.print("Channel #"); Serial.print(i, DEC); Serial.print(", Current Period: "); if (Current_Period[i]==1) {Serial.print("Sunrise");} if (Current_Period[i]==2) {Serial.print("Meridian");} if (Current_Period[i]==3) {Serial.print("Sunset");} if (Current_Period[i]==4) {Serial.print("Midnight");} Serial.print(", Current PWM: "); Serial.print(Current_PWM[i], DEC); Serial.println(); } Serial.println(); } void RalayOnOff() { int SumPWM=0; for (int i=0; i<=5; i++) { SumPWM=SumPWM+Current_PWM[i]; } if (SumPWM>=50 && Relay1Status==false) { Relay1Status=true; Relay2Status=false; digitalWrite(Relay1, HIGH); digitalWrite(Relay2, LOW); } if (SumPWM<50 && Relay1Status==true) { Relay1Status=false; Relay2Status=true; digitalWrite(Relay1, LOW); digitalWrite(Relay2, HIGH); } } void loop () { Led_Dim_PWM(); RalayOnOff(); delay(60000); }
Похоже компиллятор не находит фаил RTClib.h...нужно проверять почему, пути и установки проекта прежду всего.
Спасибо! Неправильно установил библиотеку.
Установил в папку библиотеку RTClib,но при компиляции не видит IDE эту библиотеку.В менеджере библиотек она видится как установленная.В чем может быть затык?
#include "RTClib.h"
зааменить на
#include <RTClib.h>
Сколько искал не могу найти ответ.
Как записать в now (это тип с 6ю переменными) по отдельности год месяц... итд чтобы потом это все установить в качествев времени
я создал вторую переменную
DateTime newTime;
и ввожу newTime.year()=now.year();
на что он ругается тем что ниже
DateTime::minute() const
Хотя бы в хидер загляни что ли. Там конструкторов целый воз.
не знаю что такое хидер, вобщем если бы переменными были а не константами, я бы с каждой манипулировать мог, а так ничо не сделаешь, потому что переменные в RTC а не в DateTime?
Ты там завязывай с тяжелыми веществами и начинай изучать программирование, чтобы чушь не пороть.
> не знаю что такое хидер
RTClib.h
> переменные в RTC а не в DateTime
Читай код бибилиотеки! И код функций now() особенно.
читай не читай если тяжелое програмирование не курил, хрен я в чем там разберусь, "тыжпрограммист" ты наш
щас попробую прочесть, ты то нахрена влезаешь умник, если только и можешь всех по ссылке отправлять. Просто глупо на мой взгляд все время по имени переменной обращаться если у нее порядковый номер есть. Чем мне поможет что я библиотеку прочту если у меня в голове только по имени переменной
бестолку - там по now управление через регистры по wire, умник блин
кроме него кто може помочь вопросы следующие:
можно ли как-то через порядковый номер именнованной переменной считать ее - datetime(1) это year, datetime(2) месяц...
про что такое "::" я наверно у знакомого програмиста спрошу, сам я на си так тяжело не курил
Программист сказал что по порядку нельзя
Ну ты натурально дебил. Читай тогда про unixtime.
Я да, я умнее тебя. Если хочешь это исправить, то учись программировать.
Какой умный ты хоть чтото предложил в качестве решения? я о твоей крутопрограмируемости знаю только по тобой заявленым понтам. Так что ты для меня бумажка с которой в туалет можно сходить никкой пользы от тебя нет, ты даже по unixtime решения не привел. так чисто пуляние терминами. рот себе заткни мудак. От тебя пользы никакой иди убейся об стену со своим умом чем страницы марать.
Любой каприз за ваши деньги.