#include OneWire.h OneWire ds(10); датчик к пину 10. Про схему подключения датчика см. страницу a-bolshakov.ruindex0-202 int LedPin=13; int MotorPin=7; int t_ohl=29; температура, с которой нужно начать охлаждение int t_trev=31; температура, с которой нужно поднимать тревогу int ohl_=0; int trev=0; byte i; начало переменных для датчика byte present = 0; byte type_s; byte data[12]; byte addr[8]; float celsius; конец переменных для датчика void setup(void) { Serial.begin(9600); pinMode(LedPin, OUTPUT); pinMode(MotorPin, OUTPUT); } void loop(void) { if ( !ds.search(addr)) { начало программы опроса датчика ds.reset_search(); delay(250); return; } ds.reset(); ds.select(addr); ds.write(0x44,1); start conversion, with parasite power on at the end delay(1000); maybe 750ms is enough, maybe not we might do a ds.depower() here, but the reset will take care of it. present = ds.reset(); ds.select(addr); ds.write(0xBE); Read Scratchpad for ( i = 0; i 9; i++) { we need 9 bytes data[i] = ds.read(); } convert the data to actual temperature unsigned int raw = (data[1] 8) data[0]; if (type_s) { raw = raw 3; 9 bit resolution default if (data[7] == 0x10) { count remain gives full 12 bit resolution raw = (raw & 0xFFF0) + 12 - data[6]; } } else { byte cfg = (data[4] & 0x60); if (cfg == 0x00) raw = raw 3; 9 bit resolution, 93.75 ms else if (cfg == 0x20) raw = raw 2; 10 bit res, 187.5 ms else if (cfg == 0x40) raw = raw 1; 11 bit res, 375 ms default is 12 bit resolution, 750 ms conversion time } celsius = (float)raw 16.0; конец программы опроса датчика Serial.print( Temperature = ); Serial.print(celsius); Serial.println( C ); ohlajdenie(celsius); передача температуры в подпрограмму опроса, нужно ли охлаждение trevoga(celsius); передача температуры в подпрограмму опроса, нужно ли подавать тревогу о перегреве delay(100); } void ohlajdenie(int ohl){ if (ohl=t_ohl) {digitalWrite(MotorPin, HIGH);} else {digitalWrite(MotorPin, LOW);} } void trevoga(int trev){ if (trev=t_trev) {digitalWrite(LedPin, HIGH);} else {digitalWrite(LedPin, LOW);} }