ds1307

dimaa501
Offline
Зарегистрирован: 27.02.2013

здрасвуйти форумчане. Возможно ли както записать в переменную значения часа да бы в дальнейшем использывать его для сравнения. тоесть например включать и отключать релюшку в заданое время. 

mixail844
Offline
Зарегистрирован: 30.04.2012

смотря какой библиотекой пользуетесь,но в принципе да,можно.

dimaa501
Offline
Зарегистрирован: 27.02.2013

спасибо за скорый ответ, библиотека родная DS1307.  Неподскажыте как это организовать?)

maksim
Offline
Зарегистрирован: 12.02.2012

"Родных" или "неродных" библиотек небывает. 
А если бы посмотрели форумы, то в "Общие" увидили бы тему Таймер на DS1307.

dimaa501
Offline
Зарегистрирован: 27.02.2013

maksim пишет:

"Родных" или "неродных" библиотек небывает. 
А если бы посмотрели форумы, то в "Общие" увидили бы тему Таймер на DS1307.

спасибо))

dimaa501
Offline
Зарегистрирован: 27.02.2013

помогите пожалуста в вашем примере всьо работает но немогу его перестроить под свой при компиляции ошыбка

 

AlexFisher
AlexFisher аватар
Offline
Зарегистрирован: 20.12.2011

А что, просто скопировать текст ошибки сюда никак? Все должны глаза сломать об уменьшенную картинку?

dimaa501
Offline
Зарегистрирован: 27.02.2013

AlexFisher пишет:

А что, просто скопировать текст ошибки сюда никак? Все должны глаза сломать об уменьшенную картинку?

 

извиняюсь 

 

 

tepliza3.ino: In function 'void loop()':
tepliza3:130: error: 'RTC' was not declared in this scope
tepliza3:130: error: 'DS1307_HR' was not declared in this scope
tepliza3:131: error: 'DS1307_MIN' was not declared in this scope
tepliza3:132: error: 'DS1307_SEC' was not declared in this scope
 
библиотеки все включены
AlexFisher
AlexFisher аватар
Offline
Зарегистрирован: 20.12.2011

А скетч?

dimaa501
Offline
Зарегистрирован: 27.02.2013


#include "Arduino.h"
#include <Wire.h>
#include <DS1307.h>



#include <LiquidCrystal.h>


// This Arduino sketch reads DS18B20 "1-Wire" digital
// temperature sensors.
// Tutorial:
// http://www.hacktronics.com/Tutorials/arduino-1-wire-tutorial.html

#include <OneWire.h>
#include <DallasTemperature.h>

// Data wire is plugged into pin 3 on the Arduino
#define ONE_WIRE_BUS 10

// Setup a oneWire instance to communicate with any OneWire devices
OneWire oneWire(ONE_WIRE_BUS);

// Pass our oneWire reference to Dallas Temperature. 
DallasTemperature sensors(&oneWire);

// Assign the addresses of your 1-Wire temp sensors.
// See the tutorial on how to obtain these addresses:
// http://www.hacktronics.com/Tutorials/arduino-1-wire-address-finder.html

DeviceAddress insideThermometer = { 0x28, 0x68, 0x97, 0xC7, 0x02, 0x00, 0x00, 0x6A  };
DeviceAddress outsideThermometer = { 0x28, 0xA1, 0x88, 0xC7, 0x02, 0x00, 0x00, 0x70  };
DeviceAddress dogHouseThermometer = { 0x28, 0x88, 0x90, 0xC7, 0x02, 0x00, 0x00, 0x12  };

int K1 = 40;
int K2 = 41;
int K3 = 42;
int UP = 43;
int DOUN = 44;
int menuUP = 45;
int menuDOUN= 46;
int poverch = 47;
int resistor = 48;

int lastSignalmenuUP= 0;
int signalmenuUP = 0;
int lastSignalmenuDOUN = 0;
int signalmenuDOUN = 0;
int lastSignalT3UP = 0;
int signalT3UP = 0;
int lastSignalT3DOUN = 0;
int signalT3DOUN = 0;
int lastSignalT1UP = 0;
int signalT1UP = 0;
int lastSignalT1DOUN = 0;
int signalT1DOUN = 0;
int lastSignalT2UP = 0;
int signalT2UP = 0;
int lastSignalT2DOUN = 0;
int signalT2DOUN = 0;
int lastSignalT1_1UP = 0;
int signalT1_1UP = 0;
int lastSignalT1_1DOUN = 0;
int signalT1_1DOUN = 0;
int lastSignalT2_2UP = 0;
int signalT2_2UP = 0;
int lastSignalT2_2DOUN = 0;
int signalT2_2DOUN = 0;

int menu = 0;
int T1 = 28;                                           
int T2 = 18;
int T1_1 = 92;                                          
int T2_2 = 85;
int T3 = 32; 

int menu_night = 0;
int T1_night = 20;                                           
int T2_night = 15;
int T1_1_night = 92;                                          
int T2_2_night = 85;
int T3_night = 24; 
int t = 0;



LiquidCrystal lcd(9, 8, 7, 5, 3, 6);  // инициализация библиотеки с перечнем задействованных выводов
 
void setup(void) {
 
  lcd.begin(16, 2);
  
  pinMode(K1, OUTPUT); 
  pinMode(K2, OUTPUT); 
  pinMode(K3, OUTPUT); 
  pinMode(UP, INPUT);  
  pinMode(DOUN, INPUT);
  pinMode(menuUP, INPUT); 
  pinMode(menuDOUN, INPUT); 
  pinMode(poverch, INPUT);        
  pinMode(resistor, INPUT);        
  pinMode(23, OUTPUT);
  
  
  
  Serial.begin(9600);
  
  sensors.begin();
  
  sensors.setResolution(insideThermometer, 10);
  sensors.setResolution(outsideThermometer, 10);
  sensors.setResolution(dogHouseThermometer, 10);
}

void printTemperature(DeviceAddress deviceAddress)
{
  float tepliza = sensors.getTempC(insideThermometer);
  float kotel = sensors.getTempC(outsideThermometer);
  float podviria = sensors.getTempC(dogHouseThermometer);
  
}


 void loop(void)
 {
  int Hour = RTC.get(DS1307_HR, true); 
  int Minute = RTC.get(DS1307_MIN, false); 
  int Second = RTC.get(DS1307_SEC, false);
  int FullMinutes = Hour * 60 + Minute;
  int FullMinutesTimerOn = 8 * 60 + 30;
  int FullMinutesTimerOff = 16 * 60 + 40;
  
  if(FullMinutes >= FullMinutesTimerOn && FullMinutes <= FullMinutesTimerOff) { day(); }
  else {night(); };
 } 






int day()
{ 
  digitalWrite(23, HIGH);
  float tepliza = sensors.getTempC(insideThermometer);
  float kotel = sensors.getTempC(outsideThermometer);
  float podviria = sensors.getTempC(dogHouseThermometer);
  

  Serial.print("Getting temperatures...\n\r");
  sensors.requestTemperatures();
  
  Serial.print("Inside temperature is: ");
  printTemperature(insideThermometer);
  Serial.print("\n\r");
  Serial.print("Outside temperature is: ");
  printTemperature(outsideThermometer);
  Serial.print("\n\r");
  Serial.print("Dog House temperature is: ");
  printTemperature(dogHouseThermometer);
  Serial.print("\n\r\n\r");
  

  if(menu == 7) { menu = 0; };
  signalmenuUP = digitalRead(menuUP);
  if (signalmenuUP != lastSignalmenuUP) { if (signalmenuUP == HIGH) { menu++; } lastSignalmenuUP = signalmenuUP; };
  signalmenuDOUN = digitalRead(menuDOUN);
  if (signalmenuDOUN != lastSignalmenuDOUN) { if (signalmenuDOUN == HIGH) { menu--; } lastSignalmenuDOUN = signalmenuDOUN; };
                                 
  signalT3UP = digitalRead(UP);
  if((menu == 2) && (signalT3UP != lastSignalT3UP)) { if (signalT3UP == HIGH) { T3++; } lastSignalT3UP = signalT3UP; };          
  signalT3DOUN = digitalRead(DOUN);
  if ((menu == 2) && (signalT3DOUN != lastSignalT3DOUN)) { if (signalT3DOUN == HIGH) { T3--; } lastSignalT3DOUN = signalT3DOUN; };          

  signalT1_1UP = digitalRead(UP);
  if((menu == 3) && (signalT1_1UP != lastSignalT1_1UP)) { if (signalT1_1UP == HIGH) { T1_1++; } lastSignalT1_1UP = signalT1_1UP; };  
  signalT1_1DOUN = digitalRead(DOUN);  
  if((menu == 3) && (signalT1_1DOUN != lastSignalT1_1DOUN)) { if (signalT1_1DOUN == HIGH) { T1_1--; } lastSignalT1_1DOUN = signalT1_1DOUN; };   
  signalT2_2UP = digitalRead(UP);
  if((menu == 4) && (signalT2_2UP != lastSignalT2_2UP)) { if (signalT2_2UP == HIGH) { T2_2++; } lastSignalT2_2UP = signalT2_2UP; };      
  signalT2_2DOUN= digitalRead(DOUN);
  if((menu == 4) && (signalT2_2DOUN != lastSignalT2_2DOUN)) { if (signalT2_2DOUN == HIGH) { T2_2--; } lastSignalT2_2DOUN = signalT2_2DOUN; };
  
  signalT1UP = digitalRead(UP);  
  if((menu == 5) && (signalT1UP != lastSignalT1UP)) { if (signalT1UP == HIGH) { T1++; } lastSignalT1UP = signalT1UP; };   
  signalT1DOUN = digitalRead(DOUN);
  if((menu == 5) && (signalT1DOUN != lastSignalT1DOUN)) { if (signalT1DOUN == HIGH) { T1--; } lastSignalT1DOUN = signalT1DOUN; };
  signalT2UP = digitalRead(UP); //
  if((menu == 6) && (signalT2UP != lastSignalT2UP)) { if (signalT2UP == HIGH) { T2++; } lastSignalT2UP = signalT2UP; };
  signalT2DOUN = digitalRead(DOUN);  //
  if((menu == 6) && (signalT2DOUN != lastSignalT2DOUN)) { if (signalT2DOUN == HIGH) { T2--; } lastSignalT2DOUN = signalT2DOUN; };
  if(tepliza >= T1 || kotel <= T2_2) { digitalWrite(K1, LOW); };   
  if(tepliza <= T2 || kotel >= T1_1) { digitalWrite(K1, HIGH); };  
  if(tepliza >= T3) { digitalWrite(K3, HIGH); }; 
  if(tepliza <= T3 - 4) { digitalWrite(K3, LOW); };
  
  int level = analogRead(5);
  int r = 800;
  if((resistor, HIGH) && (UP, HIGH)) { r++; };
  if((resistor, HIGH) && (DOUN, HIGH)) { r--; };
  if(level <= r) { digitalWrite(K2, HIGH); } else { digitalWrite(K2, LOW); };
  
  lcd.setCursor(0, 0);
  if(menu == 1) { lcd.print("tep"); lcd.print(tepliza); lcd.print(" kot"); lcd.print(kotel); 
  lcd.setCursor(0, 2); if(K1, HIGH) { lcd.print("1.I"); } else { lcd.print("1.O"); };
  lcd.setCursor(5, 2); if(K2, HIGH) { lcd.print("2.I"); } else { lcd.print("2.O"); };
  lcd.setCursor(8, 2); if(K3, HIGH) { lcd.print("3.I"); } else { lcd.print("3.O"); };
  lcd.setCursor(12, 2); lcd.print(podviria); };  

   
  if(menu == 2) { lcd.clear(); lcd.print( "1 luk "); lcd.setCursor(0, 2); lcd.print("UP "); lcd.print(T3); lcd.print("  DOUN "); lcd.print(T3 - 4); };
  if(menu == 3) { lcd.clear(); lcd.print( "2 kotel = "); lcd.print(kotel); lcd.setCursor(0, 2); lcd.print("UP "); lcd.print(T1_1); lcd.print("  DOUN "); lcd.print(T2_2); };
  if(menu == 4) { lcd.clear(); lcd.print( "3 kotel = "); lcd.print(kotel); lcd.setCursor(0, 2); lcd.print("UP "); lcd.print(T1_1); lcd.print("  DOUN "); lcd.print(T2_2); };
  if(menu == 5) { lcd.clear(); lcd.print( "4 tepliza = "); lcd.print(kotel); lcd.setCursor(0, 2); lcd.print("UP "); lcd.print(T1); lcd.print("  DOUN "); lcd.print(T2); };
  if(menu == 6) { lcd.clear(); lcd.print( "5 tepliza = "); lcd.print(kotel); lcd.setCursor(0, 2); lcd.print("UP "); lcd.print(T1); lcd.print("  DOUN ");  lcd.print(T2); };
 
}


int night()
{ 
  digitalWrite(23, HIGH);
  float tepliza = sensors.getTempC(insideThermometer);
  float kotel = sensors.getTempC(outsideThermometer);
  float podviria = sensors.getTempC(dogHouseThermometer);
  

  Serial.print("Getting temperatures...\n\r");
  sensors.requestTemperatures();
  
  Serial.print("Inside temperature is: ");
  printTemperature(insideThermometer);
  Serial.print("\n\r");
  Serial.print("Outside temperature is: ");
  printTemperature(outsideThermometer);
  Serial.print("\n\r");
  Serial.print("Dog House temperature is: ");
  printTemperature(dogHouseThermometer);
  Serial.print("\n\r\n\r");
  

  if(menu == 7) { menu_night = 0; };
  signalmenuUP = digitalRead(menuUP);
  if (signalmenuUP != lastSignalmenuUP) { if (signalmenuUP == HIGH) { menu_night++; } lastSignalmenuUP = signalmenuUP; };
  signalmenuDOUN = digitalRead(menuDOUN);
  if (signalmenuDOUN != lastSignalmenuDOUN) { if (signalmenuDOUN == HIGH) { menu_night--; } lastSignalmenuDOUN = signalmenuDOUN; };
                                 
  signalT3UP = digitalRead(UP);
  if((menu == 2) && (signalT3UP != lastSignalT3UP)) { if (signalT3UP == HIGH) { T3_night++; } lastSignalT3UP = signalT3UP; };          
  signalT3DOUN = digitalRead(DOUN);
  if ((menu == 2) && (signalT3DOUN != lastSignalT3DOUN)) { if (signalT3DOUN == HIGH) { T3_night--; } lastSignalT3DOUN = signalT3DOUN; };          

  signalT1_1UP = digitalRead(UP);
  if((menu == 3) && (signalT1_1UP != lastSignalT1_1UP)) { if (signalT1_1UP == HIGH) { T1_1_night++; } lastSignalT1_1UP = signalT1_1UP; };  
  signalT1_1DOUN = digitalRead(DOUN);  
  if((menu == 3) && (signalT1_1DOUN != lastSignalT1_1DOUN)) { if (signalT1_1DOUN == HIGH) { T1_1_night--; } lastSignalT1_1DOUN = signalT1_1DOUN; };   
  signalT2_2UP = digitalRead(UP);
  if((menu == 4) && (signalT2_2UP != lastSignalT2_2UP)) { if (signalT2_2UP == HIGH) { T2_2_night++; } lastSignalT2_2UP = signalT2_2UP; };      
  signalT2_2DOUN= digitalRead(DOUN);
  if((menu == 4) && (signalT2_2DOUN != lastSignalT2_2DOUN)) { if (signalT2_2DOUN == HIGH) { T2_2_night--; } lastSignalT2_2DOUN = signalT2_2DOUN; };
  
  signalT1UP = digitalRead(UP);  
  if((menu == 5) && (signalT1UP != lastSignalT1UP)) { if (signalT1UP == HIGH) { T1_night++; } lastSignalT1UP = signalT1UP; };   
  signalT1DOUN = digitalRead(DOUN);
  if((menu == 5) && (signalT1DOUN != lastSignalT1DOUN)) { if (signalT1DOUN == HIGH) { T1_night--; } lastSignalT1DOUN = signalT1DOUN; };
  signalT2UP = digitalRead(UP); //
  if((menu == 6) && (signalT2UP != lastSignalT2UP)) { if (signalT2UP == HIGH) { T2_night++; } lastSignalT2UP = signalT2UP; };
  signalT2DOUN = digitalRead(DOUN);  //
  if((menu == 6) && (signalT2DOUN != lastSignalT2DOUN)) { if (signalT2DOUN == HIGH) { T2_night--; } lastSignalT2DOUN = signalT2DOUN; };
  if(tepliza >= T1_night || kotel <= T2_2_night) { digitalWrite(K1, LOW); };   
  if(tepliza <= T2_night || kotel >= T1_1_night) { digitalWrite(K1, HIGH); };  
  if(tepliza >= T3_night) { digitalWrite(K3, HIGH); }; 
  if(tepliza <= T3_night - 4) { digitalWrite(K3, LOW); };
  
  int level = analogRead(5);
  int r = 800;
  if((resistor, HIGH) && (UP, HIGH)) { r++; };
  if((resistor, HIGH) && (DOUN, HIGH)) { r--; };
  if(level <= r) { digitalWrite(K2, HIGH); } else { digitalWrite(K2, LOW); };
  
  lcd.setCursor(0, 0);
  if(menu_night == 1) { lcd.print("tep"); lcd.print(tepliza); lcd.print(" kot"); lcd.print(kotel); 
  lcd.setCursor(0, 2); if(K1, HIGH) { lcd.print("1.I"); } else { lcd.print("1.O"); };
  lcd.setCursor(5, 2); if(K2, HIGH) { lcd.print("2.I"); } else { lcd.print("2.O"); };
  lcd.setCursor(8, 2); if(K3, HIGH) { lcd.print("3.I"); } else { lcd.print("3.O"); };
  lcd.setCursor(12, 2); lcd.print(podviria); };  
 
  if(menu_night == 2) { lcd.clear(); lcd.print( "1 luk "); lcd.setCursor(0, 2); lcd.print("UP "); lcd.print(T3_night); lcd.print("  DOUN "); lcd.print(T3_night - 4); };
  if(menu_night == 3) { lcd.clear(); lcd.print( "2 kotel = "); lcd.print(kotel); lcd.setCursor(0, 2); lcd.print("UP "); lcd.print(T1_1_night); lcd.print("  DOUN "); lcd.print(T2_2_night); };
  if(menu_night == 4) { lcd.clear(); lcd.print( "3 kotel = "); lcd.print(kotel); lcd.setCursor(0, 2); lcd.print("UP "); lcd.print(T1_1_night); lcd.print("  DOUN "); lcd.print(T2_2_night); };
  if(menu_night == 5) { lcd.clear(); lcd.print( "4 tepliza = "); lcd.print(kotel); lcd.setCursor(0, 2); lcd.print("UP "); lcd.print(T1_night); lcd.print("  DOUN "); lcd.print(T2_night); };
  if(menu_night == 6) { lcd.clear(); lcd.print( "5 tepliza = "); lcd.print(kotel); lcd.setCursor(0, 2); lcd.print("UP "); lcd.print(T1_night); lcd.print("  DOUN ");  lcd.print(T2_night); };
   
}

 

AlexFisher
AlexFisher аватар
Offline
Зарегистрирован: 20.12.2011

Я не пользуюсь библиотекой (у меня ее нет) DS1307, я пользуюсь RTClib отсюда

У Вас есть объявления:

// Setup a oneWire instance to communicate with any OneWire devices
OneWire oneWire(ONE_WIRE_BUS);
 
// Pass our oneWire reference to Dallas Temperature.
DallasTemperature sensors(&oneWire);

А объявления для RTC нет, вот компилятор и ругается.

У меня нужно объявлять так:

#include <RTClib.h>

RTC_DS1307 RTC;

Или проблемма в том, что библиотека реально не подключилась (посмотрите меню-скетч-импортировать библиотеку - она должна быть в списке). Этот гад (arduino IDE) не ругается, если не находит библиотеку - просто пропускает.

 

AlexFisher
AlexFisher аватар
Offline
Зарегистрирован: 20.12.2011

Ссылка из самой библиотеки битая, вот правильная: https://github.com/adafruit/RTClib

ВО!

Нашел для Вашей:

#include <DS1307.h>

// Init the DS1307
DS1307 rtc(4, 5);

Все-таки поиск рулит - это здесь есть, на форуме, просто лень видать кому-то...

dimaa501
Offline
Зарегистрирован: 27.02.2013

AlexFisher пишет:

Ссылка из самой библиотеки битая, вот правильная: https://github.com/adafruit/RTClib

ВО!

Нашел для Вашей:

#include <DS1307.h>

// Init the DS1307
DS1307 rtc(4, 5);

Все-таки поиск рулит - это здесь есть, на форуме, просто лень видать кому-то...

я так уже пробывал непомогло. добавил RTC та же ошыбка((( я наверное чото недоганяю((

dimaa501
Offline
Зарегистрирован: 27.02.2013

вот та библиотека для часов что в мойом скетче 

 

и вот пример которым я воспользовалса

AlexFisher
AlexFisher аватар
Offline
Зарегистрирован: 20.12.2011

А библиотечный пример пробовали?

Если библиотечный пример не появился в списке примеров, или не компилится, то с библиотекой что-то не так.

У меня на RTC не ругается.

dimaa501
Offline
Зарегистрирован: 27.02.2013

AlexFisher пишет:

А библиотечный пример пробовали?

Если библиотечный пример не появился в списке примеров, или не компилится, то с библиотекой что-то не так.

У меня на RTC не ругается.

 

хм. когда прочитал ту статью сразу проверел работало, но сейчас неработает. Ничего немого понять

 

вот еслип можно было с этой библиотекой попробовать чотонибуть сделать. Она легче но я несмог внести время в переменную

dimaa501
Offline
Зарегистрирован: 27.02.2013

о, когда из примерного скетча удаляю

void Print() // ЭТУ ФУНКЦИЮ ПОСЛЕ ОТЛАДКИ НУЖНО УДАЛИТЬ !!!
{
  Serial.print(FullMinutesTimerOn);
  Serial.print(" >> ");
  Serial.print(FullMinutes);
  Serial.print(" << ");
  Serial.print(FullMinutesTimerOff);
  Serial.print("       ");
}

и это

 

  Print(); // ПОСЛЕ ОТЛАДКИ НУЖНО УДАЛИТЬ !!!
  Serial.print(addZero(Hour));
  Serial.print(":");
  Serial.print(addZero(Minute));
  Serial.print(":");
  Serial.println(addZero(Second));
  delay(1000);
 
 
скет начинает работать0_о