Прошу меня простить за поднятие такой избитой темы. Но ни как не могу найти ответ, уже обходил кучу форумов.
Задача такая:
1. Получить температуру от датчика ds18b20
2. Из ходя из полученного значения сделать Логическое действие.
МК должен шевелить ШД. При изменении температуре поворачивать его на нужный угол.
Использую стандартную библиотеку 1wire.h, ds18b20.h.
Вот кусочек кода, начинаю только программировать так что не пинайте сильно.
Код: Выделить всё
void main(void)
{
w1_init();
ds18b20_init(0,-20,50,DS18B20_12BIT_RES);
// Бесконечный цикл
while (1) {
delay_ms(750);
t1=ds18b20_temperature(0);
if (t1>1000){ //если датчик выдаёт больше 1000
t1=4096-t1; //отнимаем от данных 4096
t1=-t1; //и ставим знак “минус”
}
if (t1 < 90 ) poz=0;
if (t1 < 50 ) poz=1;
if (t1 < 40 ) poz=2;
if (t1 < 30 ) poz=3;
if (t1 < 20 ) poz=4;
if (t1 < 10 ) poz=5;
}
В Протеуси проходи все на ура. ШД поворачивается на нужный шаг.
В железе в никакую, стоит как вкопаный, перепроверил схему подключения все отлично.
Есть подозрение о необходимости преобразования значения полученного от датчика.
Ни где не могу найти что фактически мы получаем в переменной, использую библиотеку ds18b20.h