Вопрос
- Войдите на сайт для отправки комментариев
Пт, 29/01/2016 - 16:05
Здравствуйте!
Помогите пожалуйста. Я вообще ничего в этом не понимаю, но мне очень надо включать светодиод при пересечении определенного порога температуры.
Мой код рабочий. У меня проблема с переменной температуры.
Я понимаю что что бы сравнить её с заданным порогом температуры она должна быть числом.
#include <OneWire.h> #include <DallasTemperature.h> #define ONE_WIRE_BUS 2 OneWire oneWire(ONE_WIRE_BUS); DallasTemperature sensors(&oneWire); DeviceAddress Thermometer1 = { 0x28, 0xFF, 0x60, 0x78, 0x91, 0x15, 0x01, 0x23 }; // адрес датчика DS18B20 28 FF 60 78 91 15 1 23 DeviceAddress Thermometer2 = { 0x28, 0xFF, 0xD1, 0xBA, 0x81, 0x15, 0x01, 0xD5 }; // адрес датчика28 FF D1 BA 81 15 1 D5 DeviceAddress Thermometer3 = { 0x28, 0xFF, 0x10, 0xA0, 0x63, 0x14, 0x02, 0xB7 }; // адрес датчика28 28 FF 10 A0 63 14 2 B7 void setup() { sensors.begin(); sensors.setResolution(Thermometer1, 10); sensors.setResolution(Thermometer2, 10); sensors.setResolution(Thermometer3, 10); pinMode(3, OUTPUT); // Инициализируем цифровой вход/выход в режиме выхода. Serial.begin(9600); } void printTemperature(DeviceAddress deviceAddress) { float tempC = sensors.getTempC(deviceAddress); Serial.println(tempC); } void loop() { sensors.requestTemperatures(); Serial.print("Sensor1 "); printTemperature(Thermometer1); Serial.print("Sensor2 "); printTemperature(Thermometer2); Serial.print("Sensor3 "); printTemperature(Thermometer3); if(ЧТО СЮДА ПИСАТЬ?????>27) digitalWrite(3, HIGH); //Если температура больше заданной диод горит else digitalWrite(3, LOW); // Если меньше - погашен. delay(5000); // Пауза между измерениями }
У Вас уже есть переменная, в которую считывается значение температуры -
float
tempC
Сделайте её глобальной, или переместите в loop(), тогда условие будет примерно такое:
if
(tempC > 27) digitalWrite(3, HIGH);
if
(tempC < 25) digitalWrite(3, LOW);
Два условия и 25 с 27 - это гистерезиса ради.
P.S. Название темы, мягко говоря, неудачное.
Спасибо. Помогли. Все работает как надо. Хорошо что подсказали про гистерезис. Так удобнее.
Объявил переменную в loop()
За название темы прошу прощения. Хотел сделать "предпросмотр" сообщения. Без названия темы не позволяло. Написал туда просто "Вопрос". Потом и забыл вообще её исправить. Самого раздражают подобные названия.
Подскажите пожалуйста еще. Пишу здесь, т.к. относится к данному проекту.
Я так понимаю шрифт "MegaNumbers" не знает знака "-".
Не могу вывести им отрицательное значение температуры. Минуса вообще не отображает. Что мне можно сделать? Библиотеку подправить? Подскажите в трех словах.
В трех словах: Ванга в отпуске
На что выводиться? Какую библиотеку? Где скетч?