Вопрос
- Войдите на сайт для отправки комментариев
Пт, 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); // Пауза между измерениями
}
У Вас уже есть переменная, в которую считывается значение температуры -
floattempCСделайте её глобальной, или переместите в loop(), тогда условие будет примерно такое:
if(tempC > 27) digitalWrite(3, HIGH);if(tempC < 25) digitalWrite(3, LOW);Два условия и 25 с 27 - это гистерезиса ради.
P.S. Название темы, мягко говоря, неудачное.
void loop() { sensors.requestTemperatures(); Serial.print("Sensor1_ulisa "); printTemperature(Thermometer1); float temp1 = sensors.getTempC(Thermometer1); Serial.print("Sensor2 "); printTemperature(Thermometer2); float temp2 = sensors.getTempC(Thermometer2); Serial.print("Sensor3_microshema "); printTemperature(Thermometer3); float temp3 = sensors.getTempC(Thermometer3); if(temp2 > 27.00) digitalWrite(3, HIGH); // зажигаем светодиод if(temp2 < 25.50) digitalWrite(3, LOW); // выключаем светодиодСпасибо. Помогли. Все работает как надо. Хорошо что подсказали про гистерезис. Так удобнее.
Объявил переменную в loop()
За название темы прошу прощения. Хотел сделать "предпросмотр" сообщения. Без названия темы не позволяло. Написал туда просто "Вопрос". Потом и забыл вообще её исправить. Самого раздражают подобные названия.
Подскажите пожалуйста еще. Пишу здесь, т.к. относится к данному проекту.
Я так понимаю шрифт "MegaNumbers" не знает знака "-".
Не могу вывести им отрицательное значение температуры. Минуса вообще не отображает. Что мне можно сделать? Библиотеку подправить? Подскажите в трех словах.
В трех словах: Ванга в отпуске
На что выводиться? Какую библиотеку? Где скетч?