Помогите подключить два датчика температуры к одному реле.
- Войдите на сайт для отправки комментариев
Пнд, 27/02/2017 - 12:38
Подскажите пожалуйста почему при копиляции последней строки кода выдаёт ошибку 'digitalWhrite' was not declared in this scope
Вот тект кода
char t1 = 19; // присваиваем номер пина датчику №1
char t2 = 20; // присваиваем номер пина датчику №2
char r1 = 11; // присваиваем номер пина реле №1
void setup() {
pinMode(19, INPUT); // пин используется для получения данных
pinMode(19, INPUT); // пин используется для получения данных
pinMode(11, OUTPUT); // пин используется для отправки данных
}
void loop() {
char t1 = analogRead(19); // считываем значения датчика №1 (с аналогового пина)
char t2 = analogRead(20); // считываем значение датчика №2 (с аналогового пина)
if (t1 > t2) digitalWhrite(r1, HIGH); // при значении датчика t1 > t2 включается реле1
else digitalWhrite(r1, LOW); // в противопложном случае реле1 получает сигнал низкого уровня (т.е.
// на одом реле будут запитаны два источника питания).
}
Потому что ошибка в слове Write
Большое спасибо, теперь работает )
Подскажите пожалуйста почему при копиляции последней строки кода выдаёт ошибку 'digitalWhrite' was not declared in this scope
Очевидно, потому, что 'digitalWhrite' was not declared in this scope. А Вы что её где-то определили? Где?
Дописал код - всё компилируется, загружается, но почему-то на реле сигнал не поступает.
Подскажите пожалуйцста как правильно прописать в условии значение данных с термодатчиков, чтоб реле включалось.
#include <DallasTemperature.h> //библиотека для работы с датчиком #include <OneWire.h> // библиотека для работы с OneWire шиной (датчиками, подключемыми на шину) DeviceAddress Term01 = { 0x28, 0xFF, 0x65, 0xA1, 0x71, 0x16, 0x03, 0x4D}; // указываем код датчика 1 DeviceAddress Term02 = { 0x28, 0xFF, 0x63, 0xB6, 0x70, 0x16, 0x05, 0x19}; // указываем код датчика 2 DeviceAddress Term03 = { 0x28, 0xFF, 0xBB, 0xB9, 0x70, 0x16, 0x05, 0xE3}; // указываем код датчика 3 OneWire oneWire(10); // указываем номер пина, на который будут приходить показания с датчиков DallasTemperature sensors(&oneWire); // указываем, что на одной шине висит несколько датчиков char r1 = 11; // присваиваем номер пина реле №1 void setup() { Serial.begin(9600); // отображаем данные в мониторе порта sensors.begin(); // запускаем процесс мониторинга датчиков pinMode(11, OUTPUT); // пин используется для отправки данных (для включения реле насоса) } void loop() { sensors.requestTemperatures(); // выполнение запроса на получение данных Serial.println("New loop"); // метка в монитор порта, что прошёл цикл измерений Serial.println(sensors.getTempC(Term01)); // отображение данных с датчика 1 в мониторе порта Serial.println(sensors.getTempC(Term02)); // отображение данных с датчика 2 в мониторе порта Serial.println(sensors.getTempC(Term03)); // отображение данных с датчика 3 в мониторе порта if ((Term01) > (Term02)) {digitalWrite( r1, HIGH);} // при значении датчика 1 > значения датчика 2 включается реле 1 else ((Term01) < (Term02)); {digitalWrite( r1, LOW);} // в противопложном случае реле 1 получает сигнал низкого уровня // (насос включается только когда температура на коллекторе превышает температуру теплоносителя в батареях или тёплом полу). delay (3000); // делаем задержку в 3 секунды }Подскажите пожалуйста почему при копиляции последней строки кода выдаёт ошибку 'digitalWhrite' was not declared in this scope
Очевидно, потому, что 'digitalWhrite' was not declared in this scope. А Вы что её где-то определили? Где?
Смешно
Подскажите пожалуйста почему при копиляции последней строки кода выдаёт ошибку 'digitalWhrite' was not declared in this scope
Очевидно, потому, что 'digitalWhrite' was not declared in this scope. А Вы что её где-то определили? Где?
Рад, что вас это развеселило. Буду ещё больше рад и даже благодарен, если что-то подскажете по делу.
Подскажите пожалуйста почему при копиляции последней строки кода выдаёт ошибку 'digitalWhrite' was not declared in this scope
Очевидно, потому, что 'digitalWhrite' was not declared in this scope. А Вы что её где-то определили? Где?
Рад, что вас это развеселило. Буду ещё больше рад и даже благодарен, если что-то подскажете по делу.
Я вряд ли,меня опередят суперпрограммисты не замечающие элементарных ошибок как то написание Write но способные изобрести 1001 способ помигать светодиодом без delay
Есть конечно и адекватные люди,которые найдут время напишут за вас скетч а вы если захотите(сможете) разберетесь а есть и те что только запутают вас и запутаются сами.
В мониторе порта всё отображается нормально, а вот с реле засада ... (((
Вы бы изъяснялись понятнее. Засада-это что за состояние реле?
Буду ещё больше рад и даже благодарен, если что-то подскажете по делу.
Вам невозможно помочь. Вы пишете
Но при этом забываете написать при каких именно условиях и как именно оно должно включаться. Кто ж Вас знает когда Вы его включать хотите.
Реле не включается, не выключается, назвасимо от показаний температурных датчиков.
Скорее всего это из-за того, что я неправильно прописал условия включения. Пробовал разные варианты - либо вообще не компилируется, либо компилируется, но реле на датчики не реагирует.
Я уже сказал, никто, кроме Вас не знает при каких именно условиях оно должно или не должно включаться. Хотите, распишите подробно. не хотите - дело хозяйское.
Я уже сказал, никто, кроме Вас не знает при каких именно условиях оно должно или не должно включаться. Хотите, распишите подробно. не хотите - дело хозяйское.
Нужно чтобы при t1 (показания первого датчика) > t2 (показания второго датчика) включалось реле (на реле подавался сигнал высокого уровня). Данные со всех датчиков отображаются в мониторе порта отлично, но реле на них не реагирует (((.
Третий датчик я пока не использую.
void loop() { char t1 = analogRead(19); // считываем значения датчика №1 (с аналогового пина) char t2 = analogRead(20); // считываем значение датчика №2 (с аналогового пина) if (t1 > t2) digitalWhrite(r1, HIGH); // при значении датчика t1 > t2 включается реле1 else digitalWhrite(r1, LOW); // в противопложном случае реле1 получает сигнал низкого уровня (т.е. // на одом реле будут запитаны два источника питания). }у вас было так ,почему вы потом стали городить иначе?
Наверно потому, что это было не совсем у меня. Этим скетчем занимался соседский мальчик.
Я занимался GSM-сигнализацией, а скечт по использованию датчиков температуры писал мой юный сосед. Он пробовал так - не получилось. Я доделал свой проект по GSM и попробовл дописать - получилось считать коды датчиков, подключить датчики на одной шине, но привязать реле к датчикам пока не получается (
Может так
if (sensors.getTempC(Term01) > sensors.getTempC(Term02)) {digitalWrite( r1, HIGH);} // при значении датчика 1 > значения датчика 2 включается реле 1 else if (sensors.getTempC(Term01) < sensors.getTempC(Term02)) {digitalWrite( r1, LOW);}а чем вы привязываете реле (изолентой,нитками) ,попробуйте привязать его(реле) к ардуино ,ну или соседей позовите,поому как чем вам объяснить -так проще прехать к вам да сделать
Может так
if (sensors.getTempC(Term01) > sensors.getTempC(Term02)) {digitalWrite( r1, HIGH);} // при значении датчика 1 > значения датчика 2 включается реле 1 else if (sensors.getTempC(Term01) < sensors.getTempC(Term02)) {digitalWrite( r1, LOW);}ДА!!!! Именно так может! Спасибо большое!
Что странно - я пробовал так, но у меня не вышло! Наверно где-то с синтаксисом на чудил в прошлый раз ).
Ещё раз огромнейшее спасбо! )))
Может так
if (sensors.getTempC(Term01) > sensors.getTempC(Term02)) {digitalWrite( r1, HIGH);} // при значении датчика 1 > значения датчика 2 включается реле 1 else if (sensors.getTempC(Term01) < sensors.getTempC(Term02)) {digitalWrite( r1, LOW);}Что интересно, если убрать "else", тоже отлично работает, а вот если после "else" убрать "if" - даже не компелируется!
Мне казалось я хоть немного начал разбираться в операторах условия ... (((
http://arduino.ru/Reference/Else
http://arduino.ru/Reference/If
мне казалось что 3.14здец...оказалось не казалось
иртересно
Может так
if (sensors.getTempC(Term01) > sensors.getTempC(Term02)) {digitalWrite( r1, HIGH);} // при значении датчика 1 > значения датчика 2 включается реле 1 else if (sensors.getTempC(Term01) < sensors.getTempC(Term02)) {digitalWrite( r1, LOW);}digitalWrite (r1, sensors.getTempC(Term01) > sensors.getTempC(Term02) ? HIGH, LOW);
и сё, никаких if-ов не надо.
digitalWrite (r1, sensors.getTempC(Term01) > sensors.getTempC(Term02) ? HIGH, LOW);
и сё, никаких if-ов не надо.
А чё так длинно? Вполне достаточно без "хвоста"