#include #define GATE1CONTACT 5 #define GATE2CONTACT 6 #define GATE1CONTACTNAME "gate1contact" #define GATE2CONTACTNAME "gate2contact" int process(OneWire* ds, float* value) { byte i; byte present = 0; byte data[12]; byte addr[8]; if ( !ds->search(addr)) { ds->reset_search(); Serial.println("error searching"); return 0; } if ( OneWire::crc8( addr, 7) != addr[7]) { Serial.println("error crc"); return 0; } if ( addr[0] == 0x10) { } else if ( addr[0] == 0x28) { } else { Serial.println("error unknown sensor type"); return 0; } ds->reset(); ds->select(addr); ds->write(0x44,1); // запускаем конвертацию delay(750); // скорее всего достаточно 750ms // we might do a ds.depower() here, but the reset will take care of it. present = ds->reset(); ds->select(addr); ds->write(0xBE); // считываем ОЗУ датчика for ( i = 0; i < 9; i++) { // обрабатываем 9 байт data[i] = ds->read(); } int HighByte, LowByte, TReading, SignBit; float Tc_100; LowByte = data[0]; //Serial.print("LB= ");Serial.print(LowByte,HEX); HighByte = data[1]; //Serial.print(" HB= ");Serial.print(HighByte,HEX); TReading = (HighByte << 8) + LowByte; // Tc_100 = TReading * 0.05; SignBit = TReading & 0x8000; // test most sig bit if (SignBit) // negative { TReading = (TReading ^ 0xffff) + 1; // 2's comp } Tc_100 = (6 * TReading) + TReading / 4; // multiply by (100 * 0.0625) or 6.25 *value = Tc_100 * 0.01; ds->reset_search(); return 1; } void setup (void) { Serial. begin (9600); Serial. println("server started"); } OneWire ds1 (7); //arduino pin 7 = data int mybuttonstate = LOW; void loop() { String content = ""; char character; while (Serial.available()) { character = Serial. read(); content. concat (character); delay (10); } if (content.length() > 0) { if (content.equals("status")) { Serial. print (GATE1CONTACTNAME); Serial. print(":"); Serial. println (digitalRead(GATE1CONTACT) == LOW ? "CLOSED": "OPEN"); delay (500); Serial. print("myrelay1:"); Serial. println (digitalRead(4) == LOW ? "OFF": "ON"); delay (500); float data; if (process(&ds1, &data) == 1) { Serial. print("mytemperature:"); Serial. println (data,DEC); } } else if (content.startsWith("myrelay1:")) { if (content.endsWith("OFF")) { digitalWrite (4, LOW); } else if (content.endsWith("ON")) { digitalWrite (4, HIGH); } } } int mybuttonnewstate = digitalRead (8); if (mybuttonstate != mybuttonnewstate) { mybuttonstate = mybuttonnewstate; Serial. print("mybutton:"); Serial. println (mybuttonstate == LOW ? "OPEN": "CLOSED"); } }