Я половины словов не знаю
Это заготовка. На свой лад пока. Помогите код причесать?
Код: Выделить всё
#include <Wire.h>
#include <DS1307.h>
#include <OneWire.h>
OneWire ds(10); // on pin 10. Датчики DS18b20 в режиме нормального питания
byte i;
byte present = 0;
byte data[12];
byte addr[2][8];
bool isSubZero;
int Temp1,Temp;
float celsius;
int ust = 23; // температура день
int time_eco_bg = 22; // время эконом режима начало
int time_eco_end = 5; // время эконом режима конец
int time_act; // действительное время по DS1307
void temper()
{
ds.reset();
ds.select(addr[0]);
ds.write(0x44,1);
present = ds.reset();
ds.select(addr[0]);
ds.write(0xBE);
for ( i = 0; i < 9; i++)
{
data[i] = ds.read();
}
Temp=(data[1]<<8)+data[0];
isSubZero = false;
if (Temp & 0x8000)
{ isSubZero = true;
Temp = (Temp ^ 0xffff) + 1;
}
float temp = (6 * Temp) + Temp / 4;
if(isSubZero) temp = 0 - temp;
ds.reset();
ds.select(addr[1]);
ds.write(0x44,1);
present = ds.reset();
ds.select(addr[1]);
ds.write(0xBE);
for ( i = 0; i < 9; i++)
{
data[i] = ds.read();
}
Temp1=(data[1]<<8)+data[0];
isSubZero = false;
if (Temp1 & 0x8000)
{ isSubZero = true;
Temp1 = (Temp1 ^ 0xffff) + 1;
}
float temp1 = (6 * Temp1) + Temp1 / 4;
if(isSubZero) temp1 = 0 - temp1;
Serial.print(" Outdoor "); // Для контроля
Serial.print(temp1/100); // не нашел
Serial.println(" C"); // правильного
Serial.print(" Home "); // места
Serial.print(temp/100);
Serial.println(" C");
// return(temp1/100); // было так
// return(temp/100);
celsius = (temp/100); // то же
time_act = RTC.get(DS1307_HR,true); //
Serial.print(" ust = "); //
Serial.print(ust); // вроде не
Serial.print(" time_act = "); //
Serial.println(time_act); // на месте...
}
void setup()
{
Serial.begin(9600);
if ( !ds.search(addr[0]))
{
ds.reset_search();
}
if ( !ds.search(addr[1]))
{
ds.reset_search();
}
pinMode(2, OUTPUT); //управл. 1 реле
pinMode(4, OUTPUT); //управл. 2 реле
pinMode(7, OUTPUT); //управл. 3 реле
}
void loop()
{
temper();
if (time_act > time_eco_end && time_act < time_eco_bg) // с этим то же бы
{
ust = 23;
}
else
{
ust = 22;
}
if (celsius >= ust)
{
digitalWrite(2, HIGH);
}
else
{
digitalWrite(2, LOW);
}
if (celsius > (ust-1))
{
digitalWrite(4, HIGH);
}
else
{
digitalWrite(4, LOW);
}
if (celsius > (ust-2))
{
digitalWrite(7, HIGH);
}
else
{
digitalWrite(7, LOW); // вынести куда-то...
}
delay(90000);
}
В эконом режиме с 22 по 6 часов снижает на температуру...
А-а! Забыл пояснить... три реле...
Это три рожка горелки котла. Модуляция пламени, почти.
....С этими часами, намашешься! http://arduino.ru/forum/programmirovani ... ment-22002 здесь правильная либа и примеры.
Теперь бы вытащить данные в MajorDoMo...
Вообще-то мысль была такая. Ардуина управляется со своих кнопок и имеет дисплей. Но и с сервера иметь возможность изменения режимов. Таким образом, контроллер работает по заданной программе и сервер ему не нужен. Проблемы с сервером не отражаются на работе вверенных контроллеру процессов.