You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
362 lines
10 KiB
362 lines
10 KiB
void temperat1()
|
|
{
|
|
OneWire ds(22);
|
|
|
|
ds.reset();
|
|
ds.write(0xCC);
|
|
ds.write(0x4E);
|
|
ds.write(0x7D);
|
|
ds.write(0xFC);
|
|
ds.write(0x7F);//точность изм от нее зависит скорость опроса tconvert=750 мс/(2**(3-R))
|
|
|
|
|
|
ds.reset();
|
|
ds.write(0xCC);
|
|
ds.write(0x44);
|
|
}
|
|
|
|
void temperat11()
|
|
{ OneWire ds(22);
|
|
byte data[2];
|
|
byte zn=0;
|
|
ds.reset();
|
|
ds.write(0xCC);
|
|
ds.write(0xBE);
|
|
data[0] = ds.read();
|
|
data[1] = ds.read();
|
|
//Serial.print("data[0]=");
|
|
//Serial.println(data[0],BIN);
|
|
//Serial.print("data[1]=");
|
|
//Serial.println(data[1],BIN);
|
|
|
|
if ((data[1]&128) == 0)
|
|
{zn=1; //+
|
|
}
|
|
else{
|
|
zn=0; //-
|
|
}
|
|
|
|
if (zn==0)//преобразуем отр темп
|
|
{
|
|
unsigned int tmp;
|
|
// «склеиваем» нулевой и первый байты ОЗУ датчика
|
|
tmp = ((unsigned int)data[1]<<8)|data[0];
|
|
//выполняем операцию логического отрицания
|
|
tmp = ~tmp + 1;// (-0,5) 1111 1111 1111 1000=~ 1111 1111 1111 1000= 0000 0000 0000 0111+1= 0000 0000 0000 1000
|
|
//помещаем результат в соответствующие переменные
|
|
data[0] = tmp; //0000 1000
|
|
data[1] = tmp>>8; //0000 0000
|
|
}
|
|
|
|
int Temp = (data[1]<< 8)+data[0];
|
|
//Serial.print("Temp=");
|
|
//Serial.println(Temp,BIN);
|
|
|
|
//выделяем с помощью битовой маски дробную часть
|
|
byte temperature = (data[0]&15);//1101 1000 & 0000 1111= 0000 1000 (8)
|
|
// Serial.print("temppointbin=");
|
|
//Serial.println(temperature,BIN);
|
|
//преобразуем в целое число
|
|
temperature = (temperature<<1) + (temperature<<3);// Умножаем на 10 (80) 0000 1000<<1= 0001 0000 + 0000 1000<<3=0100 000 = 0101 0000 (80)
|
|
temperature = (temperature>>4);//делим на 16 или умножаем на 0.0625 (5) 0101 0000>>4=0000 0101 (5)
|
|
td1=temperature;
|
|
|
|
|
|
|
|
//Serial.print("temppoint=");//дробная часть
|
|
//Serial.println(temperature);
|
|
|
|
tc1 = Temp>>4;//целая часть
|
|
if(tc1==0){tc1=24;}
|
|
//Serial.print("Temp>>4=");
|
|
//Serial.println(Temp,BIN);
|
|
//Serial.println(Temp);
|
|
int tem1=tc1*10+td1;//вводим кор коэф +0,7 С
|
|
tem1=tem1+(tc11*10+td11);
|
|
Serial.println(tem1);
|
|
tc1=tem1/10;//*****************!!!!!!!!!!!! из-за ошибки датчика
|
|
td1=tem1%10;
|
|
}
|
|
|
|
|
|
void temperat2()
|
|
{
|
|
OneWire ds(24);
|
|
|
|
|
|
ds.reset();
|
|
ds.write(0xCC);
|
|
ds.write(0x44);
|
|
}
|
|
|
|
void temperat22()
|
|
{ OneWire ds(24);
|
|
byte data[2];
|
|
byte zn=0;
|
|
ds.reset();
|
|
ds.write(0xCC);
|
|
ds.write(0xBE);
|
|
data[0] = ds.read();
|
|
data[1] = ds.read();
|
|
//Serial.print("data[0]=");
|
|
//Serial.println(data[0],BIN);
|
|
//Serial.print("data[1]=");
|
|
//Serial.println(data[1],BIN);
|
|
|
|
if ((data[1]&128) == 0)
|
|
{zn=1; //+
|
|
}
|
|
else{
|
|
zn=0; //-
|
|
}
|
|
|
|
if (zn==0)//преобразуем отр темп
|
|
{
|
|
unsigned int tmp;
|
|
// «склеиваем» нулевой и первый байты ОЗУ датчика
|
|
tmp = ((unsigned int)data[1]<<8)|data[0];
|
|
//выполняем операцию логического отрицания
|
|
tmp = ~tmp + 1;// (-0,5) 1111 1111 1111 1000=~ 1111 1111 1111 1000= 0000 0000 0000 0111+1= 0000 0000 0000 1000
|
|
//помещаем результат в соответствующие переменные
|
|
data[0] = tmp; //0000 1000
|
|
data[1] = tmp>>8; //0000 0000
|
|
}
|
|
|
|
int Temp = (data[1]<< 8)+data[0];
|
|
//Serial.print("Temp=");
|
|
//Serial.println(Temp,BIN);
|
|
|
|
//выделяем с помощью битовой маски дробную часть
|
|
byte temperature = (data[0]&15);//1101 1000 & 0000 1111= 0000 1000 (8)
|
|
// Serial.print("temppointbin=");
|
|
//Serial.println(temperature,BIN);
|
|
//преобразуем в целое число
|
|
temperature = (temperature<<1) + (temperature<<3);// Умножаем на 10 (80) 0000 1000<<1= 0001 0000 + 0000 1000<<3=0100 000 = 0101 0000 (80)
|
|
temperature = (temperature>>4);//делим на 16 или умножаем на 0.0625 (5) 0101 0000>>4=0000 0101 (5)
|
|
td2=temperature;
|
|
|
|
|
|
//Serial.print("temppoint=");//дробная часть
|
|
//Serial.println(temperature);
|
|
|
|
tc2 = Temp>>4;//целая часть
|
|
//Serial.print("Temp>>4=");
|
|
//Serial.println(Temp,BIN);
|
|
//Serial.println(Temp);
|
|
int tem2=tc2*10+td2;//вводим кор коэф -0,7 С
|
|
tem2=tem2+(tc22*10+td22);
|
|
Serial.println(tem2);
|
|
tc2=tem2/10;
|
|
td2=tem2%10;
|
|
|
|
}
|
|
|
|
void temperat3()
|
|
{
|
|
OneWire ds(26);
|
|
|
|
ds.reset();
|
|
ds.write(0xCC);
|
|
ds.write(0x44);
|
|
}
|
|
|
|
|
|
void temperat33()
|
|
{ OneWire ds(26);
|
|
byte data[2];
|
|
byte zn=0;
|
|
|
|
ds.reset();
|
|
ds.write(0xCC);
|
|
ds.write(0xBE);
|
|
data[0] = ds.read();
|
|
data[1] = ds.read();
|
|
//Serial.print("data[0]=");
|
|
//Serial.println(data[0],BIN);
|
|
//Serial.print("data[1]=");
|
|
//Serial.println(data[1],BIN);
|
|
|
|
if ((data[1]&128) == 0)
|
|
{zn=1; //+
|
|
}
|
|
else{
|
|
zn=0; //-
|
|
}
|
|
|
|
if (zn==0)//преобразуем отр темп
|
|
{
|
|
unsigned int tmp;
|
|
// «склеиваем» нулевой и первый байты ОЗУ датчика
|
|
tmp = ((unsigned int)data[1]<<8)|data[0];
|
|
//выполняем операцию логического отрицания
|
|
tmp = ~tmp + 1;// (-0,5) 1111 1111 1111 1000=~ 1111 1111 1111 1000= 0000 0000 0000 0111+1= 0000 0000 0000 1000
|
|
//помещаем результат в соответствующие переменные
|
|
data[0] = tmp; //0000 1000
|
|
data[1] = tmp>>8; //0000 0000
|
|
}
|
|
|
|
int Temp = (data[1]<< 8)+data[0];
|
|
//Serial.print("Temp=");
|
|
//Serial.println(Temp,BIN);
|
|
|
|
//выделяем с помощью битовой маски дробную часть
|
|
byte temperature = (data[0]&15);//1101 1000 & 0000 1111= 0000 1000 (8)
|
|
// Serial.print("temppointbin=");
|
|
//Serial.println(temperature,BIN);
|
|
//преобразуем в целое число
|
|
temperature = (temperature<<1) + (temperature<<3);// Умножаем на 10 (80) 0000 1000<<1= 0001 0000 + 0000 1000<<3=0100 000 = 0101 0000 (80)
|
|
temperature = (temperature>>4);//делим на 16 или умножаем на 0.0625 (5) 0101 0000>>4=0000 0101 (5)
|
|
td3=temperature;
|
|
|
|
|
|
//Serial.print("temppoint=");//дробная часть
|
|
//Serial.println(temperature);
|
|
|
|
tc3 = Temp>>4;//целая часть
|
|
//Serial.print("Temp>>4=");
|
|
//Serial.println(Temp,BIN);
|
|
//Serial.println(Temp);
|
|
int tem3=tc3*10+td3;//вводим кор коэф +0,0 С( tc33,td33 C)
|
|
|
|
tem3=tem3+(tc33*10+td33);
|
|
Serial.println(tem3);
|
|
tc3=tem3/10;
|
|
td3=tem3%10;
|
|
|
|
|
|
}
|
|
|
|
void tempoff1()
|
|
{
|
|
if (timernight[7]==1)//проверка вкл режима охлаждения 1-вкл 0-выкл
|
|
{
|
|
if (tc1==timernight[8])
|
|
{
|
|
if (td1>timernight[9])
|
|
{
|
|
if(n5==0){digitalWrite(6, HIGH);}
|
|
digitalWrite(9, HIGH); // включает вентилятор
|
|
// digitalWrite(10, HIGH); // включает вентилятор
|
|
//digitalWrite(11, HIGH); // включает вентилятор
|
|
vent=1;
|
|
n5=1;
|
|
}
|
|
}
|
|
|
|
|
|
if (tc1>timernight[8])
|
|
{
|
|
if(n5==0){digitalWrite(6, HIGH);}
|
|
n5=1;
|
|
digitalWrite(9, HIGH); // включает вентилятор
|
|
//digitalWrite(10, HIGH); // включает вентилятор
|
|
//digitalWrite(11, HIGH); // включает вентилятор
|
|
vent=1;
|
|
}
|
|
|
|
if (tc1==timernight[10])
|
|
{
|
|
if (td1<timernight[11])
|
|
{
|
|
if(n5==0){digitalWrite(6, LOW);}
|
|
digitalWrite(9, LOW); // выключает вентилятор
|
|
vent=0;
|
|
}
|
|
}
|
|
if (tc1<timernight[10])
|
|
{
|
|
if(n5==0){digitalWrite(6, LOW); }
|
|
digitalWrite(9, LOW); // выключает вентилятор
|
|
vent=0;
|
|
}
|
|
//*************************ВЕНТ-2*************************
|
|
if (tc2==timernight[8])
|
|
{
|
|
if (td2>timernight[9])
|
|
{
|
|
if(n5==0){digitalWrite(6, HIGH);}
|
|
//digitalWrite(9, HIGH); // включает вентилятор
|
|
digitalWrite(10, HIGH); // включает вентилятор
|
|
//digitalWrite(11, HIGH); // включает вентилятор
|
|
vent=1;
|
|
n5=1;
|
|
}
|
|
}
|
|
|
|
|
|
if (tc2>timernight[8])
|
|
{
|
|
if(n5==0){digitalWrite(6, HIGH);}
|
|
n5=1;
|
|
//digitalWrite(9, HIGH); // включает вентилятор
|
|
digitalWrite(10, HIGH); // включает вентилятор
|
|
//digitalWrite(11, HIGH); // включает вентилятор
|
|
vent=1;
|
|
}
|
|
|
|
if (tc2==timernight[10])
|
|
{
|
|
if (td2<timernight[11])
|
|
{
|
|
if(n5==0){digitalWrite(6, LOW);}
|
|
digitalWrite(10, LOW); // выключает вентилятор
|
|
vent=0;
|
|
}
|
|
}
|
|
if (tc2<timernight[10])
|
|
{
|
|
if(n5==0){digitalWrite(6, LOW); }
|
|
digitalWrite(10, LOW); // выключает вентилятор
|
|
vent=0;
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
void tempoff3()
|
|
{
|
|
if (timernight[7]==1)//проверка вкл режима охлаждения 1-вкл 0-выкл
|
|
{
|
|
if (tc3==timernight[8])
|
|
{
|
|
if (td3>timernight[9])
|
|
{
|
|
if(n5==0){digitalWrite(6, HIGH);}
|
|
//digitalWrite(9, HIGH); // включает вентилятор
|
|
//digitalWrite(10, HIGH); // включает вентилятор
|
|
digitalWrite(11, HIGH); // включает вентилятор
|
|
vent=1;
|
|
n5=1;
|
|
}
|
|
}
|
|
|
|
|
|
if (tc3>timernight[8])
|
|
{
|
|
if(n5==0){digitalWrite(6, HIGH);}
|
|
n5=1;
|
|
//digitalWrite(9, HIGH); // включает вентилятор
|
|
//digitalWrite(10, HIGH); // включает вентилятор
|
|
digitalWrite(11, HIGH); // включает вентилятор
|
|
vent=1;
|
|
}
|
|
|
|
if (tc3==timernight[10])
|
|
{
|
|
if (td3<timernight[11])
|
|
{
|
|
if(n5==0){digitalWrite(6, LOW);}
|
|
digitalWrite(11, LOW); // выключает вентилятор
|
|
vent=0;
|
|
}
|
|
}
|
|
if (tc3<timernight[10])
|
|
{
|
|
if(n5==0){digitalWrite(6, LOW); }
|
|
digitalWrite(11, LOW); // выключает вентилятор
|
|
vent=0;
|
|
}
|
|
}
|
|
|
|
}
|
|
|