положение крана можно приблизительно выставлять в заданное положение ( измерив время хода от закрыт до открыт ) импульсом питания определённой длительности.... ( в теории, а на практике придётся импульсом 6 сек ( если полный ход 6 сек ) гарантированно закрыть кран, потом подав импульс на 3 сек считать, что кран в среднем положении, открыть на 0,75 - 6 сек для закрытия, 4 сек на открытие... кататак :) ( проходное сечение крана от угла поворота штока-шара - НЕ линейная зависимость )
повторюсь - один кран нарушает циркуляцию, циркнасос работает зря, "слабые" места под угрозой разморозки....
два крана по схеме трёхходового крана - обеспечат ПОСТОЯННУЮ ЦИРКУЛЯЦИЮ
Слишком примитивно. Циркуляция должна идти постоянно и с большим протоком, а вот горячую воду, сколько нужно, надо подмешивать в этот контур из контура котла с помощью трёхходовика, можно капиллярного, как у меня дома, а можно и электрического.
Алгоритм управления простой: Приоткрыли, подождали, померяли температуру на выходе, сравнили с надобной и приоткрыли или призакрыли.
И не покупайте 5-ти Вольтовые, куча минусов: бОльшие токи, два блока питания на 5 Вольт.
Ставьте 12-ти Вольтовые: одноамперник 12 В это совсем не проблемма, 5 Вольт из него-же стэпдауном, захотели- любой аккумулятор от сигналок 12 В 7Ач нетрудно подцепить.
Там у меня схема феншуйная и мне достаточно обычного крана с моторчиком, а не 3х-ходового. Благодарю за совет про 12-ти вольтовые вместо 5-ти! Про КПД скажу, что низкотемпературное отопление это очень хорошо, но в случае с котлом Стропува конденсат уже при 55 градусах в подаче ведрами течет и поэтому приходится 60 держать. Все на сей день прекрасно работает, но вот растопка и вывод котла в рабочий режим требует постоянного контроля, поэтому мною было решено заардуинить все нафиг. Еще огромный минус в этот процесс вносят противопожарные нормы, которые требуют, чтобы дверь в котельную была одна и с улицы только, а это значит нужно выходить в любую непогоду несколько раз для контроля и бла бла, что, согласитесь, не очень удобно... Я вот приобрел на дня "эзернет шилд W5100", для того, чтобы прям с офиса смотреть температуру и крутить серву, но никак не разберусь с кодом там... Простецкие "шилдики" из уроков Дмитрия Осипова были куда проще, но нагнулись по неизвестной причине))).
Кстати, хотел спросить: а есть здесь на форуме какой-нибудь раздельчик, в котором "тупые" вопросы по программингу можно задавать, чтобы желающие могли отвечать на них? А то вы мне уже итак здорово помогли и грузить херней никого не хочется))
Ну тут в процессе изучения у меня возникают вопросы не по теме или же косвенно ее касающие. А именно один из них: в чем разница между операторами if-else и switch-case? Из опытов я пока увидел, что switch-case не умеет работать с интервалами, но в свою очередь if-else умеет делать все то же самое, что и switch-case... Это просто дело вкуса, как, к примеру, писать float или double или же есть у каждого из них свои прелести?
Спасибо)))) Можно всю оставшуюся жизнь теперь в свободное время изучать))) А такой вопросик, если можно: в чем принципиальная разница между несколькими операторами if и if-else if-else? Она вроде как есть, но я не понял пока в чем проявляется..
Угу... Вроде понятно... Надо будет парочку опытов с лампочками поставить и все будет в ажуре думаю. Благодарю Вас! А сейчас я уже вишу час в изучении http://arduino.ua/ru/prog/Ethernet . Лишь бы башка не взорвалась))) Все ж хочется очень ардуинкой управлять с любого места)
Да, попали вы с котлом, давно читал про эти "устройства" длительного горения... Даже закладки про это чудо гдето есть...Борьба со смолами забивающими дымоход за два месяца и дёгтем вытекающем снизу.... Говорят надо топить или очень-очень сухими дровами или углёмю. И действительно нельзя допускать конденсата. А тогда какой смысл греть по полной и выбрасывать тепло в трубу?
Ссылку прочитал. В ней говорится о конденсате в дымоходе в основном, а такой проблемы у меня нет, т.к. все трубы из сендвичей. Конденсат появляется как я понял из-за "жарко" в камере сгорания и "холодно" через стенку в емкости с водой... И эта температура воды (видимо из таблицы точки росы) как раз градусов 55 где-то. Смолистыми породами стараемся не топить:-) В целом, за неимения газа (а точнее за отказ платить 500тысяч рублей за прокладку газа от трубы, что в 30метрах) вариант неплохой, но муторный.
Это я уже читал... Простая передача аналоговых значений... Теперь бы умудриться переправить (или добавить) их так, чтобы можно было светодиодикаи или релюшечкой управлять))) А для этого надо вот изучать комнды этого шилда как я понял. А вот тут http://robocraft.ru/blog/238.html у меня эксперимент удался!
Все... 50 опытов прошли полуудачно... Уже язык HTML успел немного изучить даже... Зафигачил из ссылки выше себе канал управления из 4х реле... Вот его скетч
#include <SPI.h>
#include <Ethernet.h>
byte mac[] = { 0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED }; // Мак адрес
byte ip[] = { 192, 168, 1, 111 }; // IP адрес (В броузере вводим 192.168.0.2)
EthernetServer server(80);
int numPins = 4;
int pins[] = { 2, 3, 4, 5 }; // Пины для реле
int pinState[] = {0, 0, 0, 0}; // Состояние пинов
void setup()
{
// Изначально выключаем все реле
for (int i = 0; i < numPins; i++)
{
pinMode(pins[i], OUTPUT);
digitalWrite(pins[i], 1);
}
Serial.begin(9600);
Ethernet.begin(mac, ip);
server.begin();
}
void loop()
{
EthernetClient client = server.available();
if (client)
{
// Проверяем подключен ли клиент к серверу
while (client.connected())
{
// Проверяем идет ли запрос к серверу
int dataCount = client.available();
if (dataCount > 0)
{
// Считываем данные передаваемые серверу с клиента (броузера)
for (int i = 0; i < dataCount; i++)
{
char ch = client.read();
// Если данные передаются, то они будут переданы POST запросом, который начинается с символа 'P'
if (i == 0 && ch != 'P')
break;
if (ch == '\n' && i < dataCount - 1)
{
// Находим строку, в которой содержатся передаваемые данные
char chNext = client.read();
// Формат строки r2=on&r3=on&r4=on (Пример если нужно включены 2,3,4 реле)
if (chNext == 'r')
{
// Выключаем все реле
pinState[0] = 0;
pinState[1] = 0;
pinState[2] = 0;
pinState[3] = 0;
// Считываем первый номер реле, который нужно включить
char relayNum = client.read();
pinState[relayNum-'0'] = 1;
Serial.write(relayNum);
// Считываем вспомогательную информацию (=on&)
relayNum = client.read();
relayNum = client.read();
relayNum = client.read();
relayNum = client.read();
// Пока есть данные об остальных реле, считываем и заносим в массив pinState
while (relayNum != -1)
{
relayNum = client.read();
relayNum = client.read();
pinState[relayNum-'0'] = 1;
Serial.write(relayNum);
relayNum = client.read();
relayNum = client.read();
relayNum = client.read();
relayNum = client.read();
}
} else
{
// Если не было передано данных, то выключаем все реле
pinState[0] = 0;
pinState[1] = 0;
pinState[2] = 0;
pinState[3] = 0;
}
}
}
}
// В соответствие с переданными данными включаем реле
for (int i = 0; i < 4; i++)
{
digitalWrite(pins[i], !pinState[i]);
}
// Выводим HTML страницу, на которой пользователь может включить или выключить нужные ему реле
client.println("HTTP/1.1 200 OK");
client.println("Content-Type: text/html");
client.println();
client.println("<html>");
client.println("<head>");
client.println("<title>Zelectro. Relay + Ethernet shield.</title>");
client.println("</head>");
client.println("<body>");
client.println("<h3>Zelectro. Relay + Ethernet shield.</h3>");
client.println("<form method='post'>");
client.print("<div>Relay 1 <input type='checkbox' ");
if (pinState[0] == 1)
client.print("checked");
client.println(" name='r0'></div>");
client.print("<div>Relay 2 <input type='checkbox' ");
if (pinState[1] == 1)
client.print("checked");
client.println(" name='r1'></div>");
client.print("<div>Relay 3 <input type='checkbox' ");
if (pinState[2] == 1)
client.print("checked");
client.println(" name='r2'></div>");
client.print("<div>Relay 4 <input type='checkbox' ");
if (pinState[3] == 1)
client.print("checked");
client.println(" name='r3'></div>");
client.println("<input type='submit' value='Refresh'>");
client.println("</form>");
client.println("</body>");
client.println("</html>");
client.stop();
}
}
}
Все прекрасно работает... Но я ж так просто не сдаюсь! Мне захотелось 5ю реле самому зафигачить туда... Зафигачил, все работает, кроме одного момента: инвертированное положение для пина. Тобишь после загрузки скетча мой вновь добавленный пин принимает сразу HIGH, хотя галочку в браузере я еще не поставил. Вот код:
#include <SPI.h>
#include <Ethernet.h>
byte mac[] = { 0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED }; // Мак адрес
byte ip[] = { 192, 168, 1, 111 }; // IP адрес (В броузере вводим 192.168.0.2)
EthernetServer server(80);
int numPins = 5;
int pins[] = { 2, 3, 4, 5, 6}; // Пины для реле
int pinState[] = {0, 0, 0, 0, 0}; // Состояние пинов
void setup()
{
// Изначально выключаем все реле
for (int i = 0; i < numPins; i++)
{
pinMode(pins[i], OUTPUT);
digitalWrite(pins[i], 1);
}
Serial.begin(9600);
Ethernet.begin(mac, ip);
server.begin();
}
void loop()
{
EthernetClient client = server.available();
if (client)
{
// Проверяем подключен ли клиент к серверу
while (client.connected())
{
// Проверяем идет ли запрос к серверу
int dataCount = client.available();
if (dataCount > 0)
{
// Считываем данные передаваемые серверу с клиента (броузера)
for (int i = 0; i < dataCount; i++)
{
char ch = client.read();
// Если данные передаются, то они будут переданы POST запросом, который начинается с символа 'P'
if (i == 0 && ch != 'P')
break;
if (ch == '\n' && i < dataCount -1)
{
// Находим строку, в которой содержатся передаваемые данные
char chNext = client.read();
// Формат строки r2=on&r3=on&r4=on (Пример если нужно включены 2,3,4 реле)
if (chNext == 'r')
{
// Выключаем все реле
pinState[0] = 0;
pinState[1] = 0;
pinState[2] = 0;
pinState[3] = 0;
pinState[4] = 0;
// Считываем первый номер реле, который нужно включить
char relayNum = client.read();
pinState[relayNum-'0'] = 1;
Serial.write(relayNum);
// Считываем вспомогательную информацию (=on&)
relayNum = client.read();
relayNum = client.read();
relayNum = client.read();
relayNum = client.read();
// Пока есть данные об остальных реле, считываем и заносим в массив pinState
while (relayNum != -1)
{
relayNum = client.read();
relayNum = client.read();
pinState[relayNum-'0'] = 1;
Serial.write(relayNum);
relayNum = client.read();
relayNum = client.read();
relayNum = client.read();
relayNum = client.read();
}
} else
{
// Если не было передано данных, то выключаем все реле
pinState[0] = 0;
pinState[1] = 0;
pinState[2] = 0;
pinState[3] = 0;
pinState[4] = 0;
}
}
}
}
// В соответствие с переданными данными включаем реле
for (int i = 0; i < 5; i++)
{
digitalWrite(pins[i], !pinState[i]);
}
// Выводим HTML страницу, на которой пользователь может включить или выключить нужные ему реле
client.println("HTTP/1.1 200 OK");
client.println("Content-Type: text/html");
client.println();
client.println("<html>");
client.println("<head>");
client.println("<title>Zelectro. Relay + Ethernet shield.</title>");
client.println("</head>");
client.println("<body>");
client.println("<h3>Zelectro. Relay + Ethernet shield.</h3>");
client.println("<form method='post'>");
client.print("<div>Rele 1 <input type='checkbox' ");
if (pinState[0] == 1)
client.print("checked");
client.println(" name='r0'></div>");
client.print("<div>Rele 2 <input type='checkbox' ");
if (pinState[1] == 1)
client.print("checked");
client.println(" name='r1'></div>");
client.print("<div>Rele 3 <input type='checkbox' ");
if (pinState[2] == 1)
client.print("checked");
client.println(" name='r2'></div>");
client.print("<div>Rele 4 <input type='checkbox' ");
if (pinState[3] == 1)
client.print("checked");
client.println(" name='r3'></div>");
client.print("<div>Rele 5 <input type='checkbox' ");
if (pinState[4] == 1)
client.print("checked");
client.println(" name='r4'></div>");
client.println("<input type='submit' value='Refresh'>");
client.println("</form>");
client.println("</body>");
client.println("</html>");
client.stop();
}
}
}
Про чекбокс не догнал)) Я понял, что чекбокс это просто галочка... Радио - точка ну и т.п... У меня проблема в том, что мой пин со старта сразу HIGH принимает.. Как сделать, чтоб он как все был?
Ну если у Вас днюха, то поздравляю от всей души! И желаю, чтоб прожили долго и счастливо, ибо хороших людей надо побольше на этой планете))) А если не у Вас, то имениннику того же))) Завтра выхожу на работу из отпуска и начинаю закладывать провода под ардуинку к котлу))
Про чекбокс не догнал)) Я понял, что чекбокс это просто галочка... Радио - точка ну и т.п... У меня проблема в том, что мой пин со старта сразу HIGH принимает.. Как сделать, чтоб он как все был?
Ну если у Вас днюха, то поздравляю от всей души! И желаю, чтоб прожили долго и счастливо, ибо хороших людей надо побольше на этой планете))) А если не у Вас, то имениннику того же))) Завтра выхожу на работу из отпуска и начинаю закладывать провода под ардуинку к котлу))
Сделал. Только после этого галочки в браузере стало нельзя ставить толпой и там вообще хаос начался))) Диод на 6 пине горит со старта один фиг. заливал это:
#include <SPI.h>
#include <Ethernet.h>
byte mac[] = { 0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED }; // Мак адрес
byte ip[] = { 192, 168, 1, 111 }; // IP адрес (В броузере вводим 192.168.0.2)
EthernetServer server(80);
int numPins = 5;
int pins[] = { 2, 3, 4, 5, 6}; // Пины для реле
int pinState[] = {0, 0, 0, 0, 0}; // Состояние пинов
void setup()
{
// Изначально выключаем все реле
for (byte i = 2; i < (numPins + 2); i++)
{
pinMode(pins[i], OUTPUT);
digitalWrite(pins[i], 1);
}
Serial.begin(9600);
Ethernet.begin(mac, ip);
server.begin();
}
void loop()
{
EthernetClient client = server.available();
if (client)
{
// Проверяем подключен ли клиент к серверу
while (client.connected())
{
// Проверяем идет ли запрос к серверу
int dataCount = client.available();
if (dataCount > 0)
{
// Считываем данные передаваемые серверу с клиента (броузера)
for (int i = 0; i < dataCount; i++)
{
char ch = client.read();
// Если данные передаются, то они будут переданы POST запросом, который начинается с символа 'P'
if (i == 0 && ch != 'P')
break;
if (ch == '\n' && i < dataCount - 1)
{
// Находим строку, в которой содержатся передаваемые данные
char chNext = client.read();
// Формат строки r2=on&r3=on&r4=on (Пример если нужно включены 2,3,4 реле)
if (chNext == 'r')
{
// Выключаем все реле
pinState[0] = 0;
pinState[1] = 0;
pinState[2] = 0;
pinState[3] = 0;
pinState[4] = 0;
// Считываем первый номер реле, который нужно включить
char relayNum = client.read();
pinState[relayNum-'0'] = 1;
Serial.write(relayNum);
// Считываем вспомогательную информацию (=on&)
relayNum = client.read();
relayNum = client.read();
relayNum = client.read();
relayNum = client.read();
relayNum = client.read();
// Пока есть данные об остальных реле, считываем и заносим в массив pinState
while (relayNum != -1)
{
relayNum = client.read();
relayNum = client.read();
pinState[relayNum-'0'] = 1;
Serial.write(relayNum);
relayNum = client.read();
relayNum = client.read();
relayNum = client.read();
relayNum = client.read();
relayNum = client.read();
}
} else
{
// Если не было передано данных, то выключаем все реле
pinState[0] = 0;
pinState[1] = 0;
pinState[2] = 0;
pinState[3] = 0;
pinState[4] = 0;
}
}
}
}
// В соответствие с переданными данными включаем реле
for (int i = 0; i < 5; i++)
{
digitalWrite(pins[i], !pinState[i]);
}
// Выводим HTML страницу, на которой пользователь может включить или выключить нужные ему реле
client.println("HTTP/1.1 200 OK");
client.println("Content-Type: text/html");
client.println();
client.println("<html>");
client.println("<head>");
client.println("<title>Zelectro. Relay + Ethernet shield.</title>");
client.println("</head>");
client.println("<body>");
client.println("<h3>Zelectro. Relay + Ethernet shield.</h3>");
client.println("<form method='post'>");
client.print("<div>Relay 1 <input type='checkbox' ");
if (pinState[0] == 1)
client.print("checked");
client.println(" name='r0'></div>");
client.print("<div>Relay 2 <input type='checkbox' ");
if (pinState[1] == 1)
client.print("checked");
client.println(" name='r1'></div>");
client.print("<div>Relay 4 <input type='checkbox' ");
if (pinState[2] == 1)
client.print("checked");
client.println(" name='r2'></div>");
client.print("<div>Relay 5 <input type='checkbox' ");
if (pinState[3] == 1)
client.print("checked");
client.println(" name='r3'></div>");
client.print("<div>Relay 3 <input type='checkbox' ");
if (pinState[4] == 1)
client.print("checked");
client.println(" name='r4'></div>");
client.println("<input type='submit' value='Refresh'>");
client.println("</form>");
client.println("</body>");
client.println("</html>");
client.stop();
}
}
}
А вот теперь я крепко подвис... Ситуация следующая.. Залил скетч этот же самый, только подправленный на 8 реле отсюда http://pastebin.com/2NjEgcEf с небольшими корректировками по ип и отображением названий в браузере... Работает все как оказалось идеально, но объясните мне такой факт: почему подключая в одном и том же состоянии пина реле и светодиод к нему получаем, что реле-разомкнуто, а светодиод-горит! Получается все пины стоят HIGH, а реле работает, когда на пинах LOW? Я слышал что-то про реле, управляемых положительным и отрицательным потенциалом....
Неудобств нет))) Было отсутствие знаний по этому делу и я весь мозг сломал почему у меня инвертированное значение пина... А оказывается все прекрасно!))) Сегодня заказал себе на али 8-ми модульное реле и 2 ENC Ethernet модуля - будет праздник!) Спасибо Вам в очередной раз! А, кстати, у Вас есть опыт подключения/работы с GSM модулем?
вот я сегодня - сам себе праздник, а вам нужно сделать код приёма в браузер значения хотя бы 6-ти аналоговых пинов И управления по 8-ми каналам :)
Вас, кстати, с наступившим! Это вееерно... Аналоговые пины.... Тут в стандартной библиотеке есть пример, который значения аналоовых портов передает... Думаю, несколько часов скрежета зубами по граниту дадут хоть какой то результат!))
положение крана можно приблизительно выставлять в заданное положение ( измерив время хода от закрыт до открыт ) импульсом питания определённой длительности.... ( в теории, а на практике придётся импульсом 6 сек ( если полный ход 6 сек ) гарантированно закрыть кран, потом подав импульс на 3 сек считать, что кран в среднем положении, открыть на 0,75 - 6 сек для закрытия, 4 сек на открытие... кататак :) ( проходное сечение крана от угла поворота штока-шара - НЕ линейная зависимость )
повторюсь - один кран нарушает циркуляцию, циркнасос работает зря, "слабые" места под угрозой разморозки....
два крана по схеме трёхходового крана - обеспечат ПОСТОЯННУЮ ЦИРКУЛЯЦИЮ
http://ru.aliexpress.com/item/T25-B3-C-quality-5VDC-electric-three-way-v...
Слишком примитивно. Циркуляция должна идти постоянно и с большим протоком, а вот горячую воду, сколько нужно, надо подмешивать в этот контур из контура котла с помощью трёхходовика, можно капиллярного, как у меня дома, а можно и электрического.
Алгоритм управления простой: Приоткрыли, подождали, померяли температуру на выходе, сравнили с надобной и приоткрыли или призакрыли.
И не покупайте 5-ти Вольтовые, куча минусов: бОльшие токи, два блока питания на 5 Вольт.
Ставьте 12-ти Вольтовые: одноамперник 12 В это совсем не проблемма, 5 Вольт из него-же стэпдауном, захотели- любой аккумулятор от сигналок 12 В 7Ач нетрудно подцепить.
и я про тоже - циркуляция или мимо котла, или через котёл - в зависимости от t обратки или от t воздуха в помещении
ссылку дал просто для картинки, а автоматику лучше да, на 12 V ( или на 24 V - смотря какие комплектующие )
Там у меня схема феншуйная и мне достаточно обычного крана с моторчиком, а не 3х-ходового. Благодарю за совет про 12-ти вольтовые вместо 5-ти! Про КПД скажу, что низкотемпературное отопление это очень хорошо, но в случае с котлом Стропува конденсат уже при 55 градусах в подаче ведрами течет и поэтому приходится 60 держать. Все на сей день прекрасно работает, но вот растопка и вывод котла в рабочий режим требует постоянного контроля, поэтому мною было решено заардуинить все нафиг. Еще огромный минус в этот процесс вносят противопожарные нормы, которые требуют, чтобы дверь в котельную была одна и с улицы только, а это значит нужно выходить в любую непогоду несколько раз для контроля и бла бла, что, согласитесь, не очень удобно... Я вот приобрел на дня "эзернет шилд W5100", для того, чтобы прям с офиса смотреть температуру и крутить серву, но никак не разберусь с кодом там... Простецкие "шилдики" из уроков Дмитрия Осипова были куда проще, но нагнулись по неизвестной причине))).
Кстати, хотел спросить: а есть здесь на форуме какой-нибудь раздельчик, в котором "тупые" вопросы по программингу можно задавать, чтобы желающие могли отвечать на них? А то вы мне уже итак здорово помогли и грузить херней никого не хочется))
есть, но лучше уже здесь всё спрашивать - уже прикормлено, задача и ваш уровень известны - так лучше, чем плодить кучу тем :)
Ну тут в процессе изучения у меня возникают вопросы не по теме или же косвенно ее касающие. А именно один из них: в чем разница между операторами if-else и switch-case? Из опытов я пока увидел, что switch-case не умеет работать с интервалами, но в свою очередь if-else умеет делать все то же самое, что и switch-case... Это просто дело вкуса, как, к примеру, писать float или double или же есть у каждого из них свои прелести?
Тип double поддерживается в Arduino для совместимости кода с другими платформами.
у if в скобках выражение должно быть типа boolean - true или false , 0 или 1 ( 2,3,1000,65535 - это всё воспримется как 1 )
у switch - перечислимый тип данных byte, int, объявленные как enum
несколько if могут заменить switch , наоборот - нет
....добавлено
пригодится :) http://lord-n.narod.ru/download/books/walla/programming/Spr_po_C/main.htm#13
у if-else - два исхода , у switch-case - сколько сможете case прописать
Спасибо)))) Можно всю оставшуюся жизнь теперь в свободное время изучать))) А такой вопросик, если можно: в чем принципиальная разница между несколькими операторами if и if-else if-else? Она вроде как есть, но я не понял пока в чем проявляется..
из ифа два пути, а если надо больше ? на три -
иф1 вых1
эльзе1
иф2 вых2
эльзе2 вых3
иф2 со своим эльзе2 - встроен в эльзе1
в эльзе2 снова можно вставить очередной иф - выходов будет 4, ифами можно построить и более сложные алгоритмы анализа - лишь не запутаться :)
Угу... Вроде понятно... Надо будет парочку опытов с лампочками поставить и все будет в ажуре думаю. Благодарю Вас! А сейчас я уже вишу час в изучении http://arduino.ua/ru/prog/Ethernet . Лишь бы башка не взорвалась))) Все ж хочется очень ардуинкой управлять с любого места)
при хорошо написанной программе ОНА должна управлять всем, её нужно только контролировать....
ищите готовый пример браузер-W5100-ардуина - по нему и изучайте, просто изучать W5100 - точно взорвётесь :)
http://habrahabr.ru/post/230661/
Похоже уже взорвался... Висок заболел.. Хреново изучать все с нулевым знанием языка Си..
вот попроще - передача в браузер 6-ти значений с аналоговых выходов, управления ардуиной здесь не прописано
http://arduino.cc/en/Tutorial/WebServer
Да, попали вы с котлом, давно читал про эти "устройства" длительного горения... Даже закладки про это чудо гдето есть...Борьба со смолами забивающими дымоход за два месяца и дёгтем вытекающем снизу.... Говорят надо топить или очень-очень сухими дровами или углёмю. И действительно нельзя допускать конденсата. А тогда какой смысл греть по полной и выбрасывать тепло в трубу?
Нашёл закладку. Познавательный форум. Почитайте http://forum.vashdom.ru/threads/pech-bulerjan-problema-s-kondensatom-kak...
Ссылку прочитал. В ней говорится о конденсате в дымоходе в основном, а такой проблемы у меня нет, т.к. все трубы из сендвичей. Конденсат появляется как я понял из-за "жарко" в камере сгорания и "холодно" через стенку в емкости с водой... И эта температура воды (видимо из таблицы точки росы) как раз градусов 55 где-то. Смолистыми породами стараемся не топить:-) В целом, за неимения газа (а точнее за отказ платить 500тысяч рублей за прокладку газа от трубы, что в 30метрах) вариант неплохой, но муторный.
вот попроще - передача в браузер 6-ти значений с аналоговых выходов, управления ардуиной здесь не прописано
http://arduino.cc/en/Tutorial/WebServer
Это я уже читал... Простая передача аналоговых значений... Теперь бы умудриться переправить (или добавить) их так, чтобы можно было светодиодикаи или релюшечкой управлять))) А для этого надо вот изучать комнды этого шилда как я понял. А вот тут http://robocraft.ru/blog/238.html у меня эксперимент удался!
ну, вот канал управления http://zelectro.cc/Ethernet_shield_W5100
ну, вот канал управления http://zelectro.cc/Ethernet_shield_W5100
Воо. Огромное спасибо в очередной раз!)) Это уже вещь! Теперь можно сравнив несколько таких скетчей вычислить где там и что править))
Все... 50 опытов прошли полуудачно... Уже язык HTML успел немного изучить даже... Зафигачил из ссылки выше себе канал управления из 4х реле... Вот его скетч
Все прекрасно работает... Но я ж так просто не сдаюсь! Мне захотелось 5ю реле самому зафигачить туда... Зафигачил, все работает, кроме одного момента: инвертированное положение для пина. Тобишь после загрузки скетча мой вновь добавленный пин принимает сразу HIGH, хотя галочку в браузере я еще не поставил. Вот код:
не забывайте про чекбокс "свернуть код" :)
дык, чо ? нрмально работает ?
Про чекбокс не догнал)) Я понял, что чекбокс это просто галочка... Радио - точка ну и т.п... У меня проблема в том, что мой пин со старта сразу HIGH принимает.. Как сделать, чтоб он как все был?
неее, анализ мине уже заказан - завтра днюха :)
при загрузке кода поставте галочку на допстранице - "свернуть" ! результат - короткое сообщение ( код свёрнут ), кому интерессно - развернут...
главные галочки в допе - свернуть и нумерация....
Ну если у Вас днюха, то поздравляю от всей души! И желаю, чтоб прожили долго и счастливо, ибо хороших людей надо побольше на этой планете))) А если не у Вас, то имениннику того же))) Завтра выхожу на работу из отпуска и начинаю закладывать провода под ардуинку к котлу))
Про чекбокс не догнал)) Я понял, что чекбокс это просто галочка... Радио - точка ну и т.п... У меня проблема в том, что мой пин со старта сразу HIGH принимает.. Как сделать, чтоб он как все был?
про чекбокс и радибуттон - можно позже ? :)
Ну если у Вас днюха, то поздравляю от всей души! И желаю, чтоб прожили долго и счастливо, ибо хороших людей надо побольше на этой планете))) А если не у Вас, то имениннику того же))) Завтра выхожу на работу из отпуска и начинаю закладывать провода под ардуинку к котлу))
спасибо ! но завтра :)
заложите проводов нужное количество х 2...3 - пригодится позжееееее
строки 8, 9, 17, 18 - пины на реле 2 3 4 5 6 - в цикле проходимся по пинам 0 1 2 3 4
for
(
int
i = 0; i < numPins; i++) >>>>>>>>>>>>>>>>>>>>>>>>>>>>
for
(
byte
i = 2; i < (numPins + 2); i++)
{
pinMode(pins[i], OUTPUT);
digitalWrite(pins[i], 1);
}
всё это можно заменить на
DDRD=DDRD | B01111100;
PORTD=B01111100;
http://arduino.ru/Tutorial/Upravlenie_portami_cherez_registry
блок чекбоксов - галочки можно ставить в любом порядке и количестве ( похоже на иф )
блок радиокнопок - кружочек можно поставить только один ( похоже на свич-казе )
строки 8, 9, 17, 18 - пины на реле 2 3 4 5 6 - в цикле проходимся по пинам 0 1 2 3 4
for
(
int
i = 0; i < numPins; i++) >>>>>>>>>>>>>>>>>>>>>>>>>>>>
for
(
byte
i = 2; i < (numPins + 2); i++)
{
pinMode(pins[i], OUTPUT);
digitalWrite(pins[i], 1);
}
всё это можно заменить на
DDRD=DDRD | B01111100;
PORTD=B01111100;
http://arduino.ru/Tutorial/Upravlenie_portami_cherez_registry
)))))) Походу это фаталити для моей головы)))
строку 70 скопируйте в 71 и 85 в 86
строку 70 скопируйте в 71 и 85 в 86
Сделал. Только после этого галочки в браузере стало нельзя ставить толпой и там вообще хаос начался))) Диод на 6 пине горит со старта один фиг. заливал это:
А вот теперь я крепко подвис... Ситуация следующая.. Залил скетч этот же самый, только подправленный на 8 реле отсюда http://pastebin.com/2NjEgcEf с небольшими корректировками по ип и отображением названий в браузере... Работает все как оказалось идеально, но объясните мне такой факт: почему подключая в одном и том же состоянии пина реле и светодиод к нему получаем, что реле-разомкнуто, а светодиод-горит! Получается все пины стоят HIGH, а реле работает, когда на пинах LOW? Я слышал что-то про реле, управляемых положительным и отрицательным потенциалом....
блоки реле +5 V с оптроном на входе управления могут управляться от 0 или от 5 - как производитель сделает
на плату подаётся GND и 5 V, третий контакт - управление.
если оптрон подключен третий пин и GND - то включается HIGHом
если оптрон подключен третий пин и 5 V- то включается LOWом
в чём неудобство-то ? если программа написана для ловных реле, а есть хигные - правим код и всё :)
Неудобств нет))) Было отсутствие знаний по этому делу и я весь мозг сломал почему у меня инвертированное значение пина... А оказывается все прекрасно!))) Сегодня заказал себе на али 8-ми модульное реле и 2 ENC Ethernet модуля - будет праздник!) Спасибо Вам в очередной раз! А, кстати, у Вас есть опыт подключения/работы с GSM модулем?
#138 - значит я не прав :)
код на 8 релюшек не зажимайте :) - ему тут место
Опачки... Не заходит.... Вот рабочий код на 8 реле:
рано праздник вам !!!!!! :)-
вот я сегодня - сам себе праздник, а вам нужно сделать код приёма в браузер значения хотя бы 6-ти аналоговых пинов И управления по 8-ми каналам :)
ничё не понял.... на 4 - сделали, на 5 - глючит 5-ое реле, на 8 - всё отлично ? так где глючево-то пр 5-ти реле ?
рано праздник вам !!!!!! :)-
вот я сегодня - сам себе праздник, а вам нужно сделать код приёма в браузер значения хотя бы 6-ти аналоговых пинов И управления по 8-ми каналам :)
Вас, кстати, с наступившим! Это вееерно... Аналоговые пины.... Тут в стандартной библиотеке есть пример, который значения аналоовых портов передает... Думаю, несколько часов скрежета зубами по граниту дадут хоть какой то результат!))
ничё не понял.... на 4 - сделали, на 5 - глючит 5-ое реле, на 8 - всё отлично ? так где глючево-то пр 5-ти реле ?
Это я - дурак...5ым "реле" я подключил светодиод, думая, что он сигнализирует работу реле... А оказалось то наоборот))
спасибо :) далеко от Питера ? а то заходи если чо....
да, надо скрестить #117 и #144
http://arduino.ru/forum/otvlechennye-temy/kto-otkuda