Привет, вот при написании статьи о термометре я подумал, что термометр это дело нужное а вот хорошо было бы для дома спаять термостат, который бы следил за температурой в квартире, и сигнализировал слишком низкую, или чересчур большую температуру, а лучше бы еще включал обогреватель или вентилятор, когда это надо. Итак, приступим, сначала создадим новый проект с помощью мастера (Wizard). Выбираем микроконтроллер ATmega 8 потом в закладке 1-Wire выбираем порт В dsts bit = 0. File -> generate,save and exit. стираем код что нам сгенерировал визард и вставляем вот этот код: #include <mega8.h> #include <delay.h> #asm .equ __w1_port=0x18 ;PORTB .equ __w1_bit=0 #endasm #include <1wire.h> #include <ds18b20.h> void main(void) { unsigned char devices; int temp; devices = w1_init(); PORTD = 0x00; //Выставляем все выходы порта D на 0, то есть, выключаем весь порт D DDRD = 0xFF; while (1) { temp=ds18b20_temperature(0); //читаем температуру if (temp>1000) //если датчик выдаёт больше 1000 { temp=4096-temp; //отнимаем от данных 4096 temp=-temp; //и ставим знак "минус" } if (temp<18) // устанавливаем нижней порог PORTD.0 = 1; else PORTD.0=0; if (temp>28) // установим верхний порог PORTD.1=1; else PORTD.1=0; } } Алгоритм следующий: если температура упадет ниже +18 градусов, на ножке порта D.0 появиться логическая единица, и если темперетура поднимется выше +28, тогда на порту D.1 будет +5вольт(лог.1), светодиоды не будут гореть, если температура от 18 до 28 градусов. Схема: Статья дополнена и переделана, теперь работает с минусовой температурой.
|