Первый шаг
- Войдите на сайт для отправки комментариев
Пт, 08/03/2019 - 15:28
Добрый день!
Решаил попробовать поардуинить.
Хочу сделать чтобы реле срабатывало при определенной температуре.
#include <OneWire.h>
#include <DallasTemperature.h>
int LED=13;
int REL=6;
int RS;
DeviceAddress Term01 = { 0x28, 0xFF, 0x4F, 0x81, 0xA6, 0x16, 0x3, 0x1B };
OneWire oneWire(10);
DallasTemperature sensors(&oneWire);
void setup(void)
{
Serial.begin(9600);
sensors.begin();
pinMode (LED, OUTPUT);
pinMode (REL, OUTPUT);
}
void loop(void)
{
sensors.requestTemperatures();
RS = sensors.getTempC(Term01);
Serial.println("Temperature in room");
//Serial.println(sensors.getTempC(Term01));
Serial.println(RS);
if (RS>=28)
{
digitalWrite(LED, HIGH);
digitalWrite(REL, LOW);
delay(1000);
}
else if (RS<28)
{
digitalWrite(REL, HIGH);
delay(1000);
}
}
Но почему-то реле постоянно в замкнутом состоянии, не зависимо от значения температуры.
Размыкается и замыкается при включении монитора порта.
Температура на монитор порта выводится правильно.
Светодиод своей жизнью моргает.
С языком Си не знаком, только начинаю.
Подскажите пожалуйста
Подсказываю: http://arduino.ru/forum/obshchii/vstavka-programmnogo-koda-v-temukommentarii
Строки #36 и #41 удаляете, из #38 убираете else и указываете вместо 28C чуть поменьше. Например 25C. Таким образом получаете переключатель с гистерезисом.
в монитор порта что выводит ?
Кстати, работает, только почему-то инвертируется сигнал. При >= 28 включается, а при <28 выключается.
Модуль реле такой, видать. По LOW включается, по HIGH выключается.
да блин, все забываю, что эти модули 0 включаются !
Спасибо! Без Вашей помощи долго бы голову ломал!
да блин, все забываю, что эти модули 0 включаются !
а не надо всё помнить.
Если не возражаете, мелкое замечание: здесь лучше не ставить точку с запятой, а оставить её на внешнюю программу
Если не возражаете, мелкое замечание: здесь лучше не ставить точку с запятой, а оставить её на внешнюю программу