Nano. Нужен исполнитель.
- Войдите на сайт для отправки комментариев
Необходимо написать или переписать данный код. Необходима работа без Deley, то есть что-бы цикл задержек всегда можно было остановить. Данный вариант кода не работает, почему я не знаю, автор не общительный. Нужно добавить дополнительно: контролировать положение LOW или HIGH на digital pin 2, объяснить мне как это значение контролировать с помощью POST запроса. То есть от положения контакта должна загораться лампочка на другой вебстранице, сообщающая о готовности устройства к работе. Доступ к редактору страницы доступен через TeamViewer. Так же создать условие запрещающее перевод digital pin 8 в положение LOW, пока на digital pin 2 не будет LOW. Вывод информации на html страницу не нужен, ниже будет скрипт с помощью которого на другой вебстранице осуществляется управление кнопками "Пуск" "Стоп". С помощью подобного скрипта необходимо зажигать лампочку о готовности без обновления страницы.
#include <SPI.h> #include <Ethernet.h> boolean newInfo = 0; byte mac[] = { 0x00, 0xAA, 0xBB, 0xCC, 0xDA, 0x02 }; byte gateway[] = { 192, 168, 4, 1 }; byte subnet[] = { 255, 255, 255, 0 }; IPAddress ip(192,168,4,70); EthernetServer server(80); int a; int count; int operation; void setup() { cli(); pinMode(8, OUTPUT); digitalWrite(8,HIGH); Ethernet.begin(mac, ip); server.begin(); Serial.begin(9600); /* * Настройка таймера по переполнению */ TCCR1A = 0; // установить TCCR1A регистр в 0 OCR1A = 15624; // установка регистра совпадения TCCR1B |= (1 << WGM12); // включение в CTC режим TIMSK1 = (1 << OCIE1A);//включить прерывание Timer1 overflow TCCR1B |= (1 << CS12); TCCR1B |= (0 << CS11); TCCR1B |= (1 << CS10); sei(); a = 0; count = 0; operation = 0; } ISR(TIMER1_COMPA_vect) { switch (a){ case 1: count = 0; break; case 2: count = count + 1; break; default:; } if(a == 1)blinker(); } void blinker() { /* digitalWrite(8, LOW); delay(8000); digitalWrite(8, HIGH); delay(5000); digitalWrite(8, LOW); delay(8000); digitalWrite(8, HIGH); delay(10000); digitalWrite(8, LOW); delay(210000); digitalWrite(8, HIGH); */ if(operation == 1){ digitalWrite(8, HIGH); operation = 2; a = 1; } if((operation == 2) && (count == 8)){ digitalWrite(8, LOW); operation = 3; count = 0; } if((operation == 3) && (count == 5)){ digitalWrite(8, HIGH); operation = 4; count = 0; } if((operation == 4) && (count == 8)){ digitalWrite(8, LOW); operation = 5; count = 0; } if((operation == 5) && (count == 10)){ digitalWrite(8, HIGH); operation = 6; count = 0; } if((operation == 6) && (count == 210)){ digitalWrite(8, LOW); operation = 0; a = 0; } } void loop() { EthernetClient client = server.available(); if(client){ boolean currentLineIsBlank = true; while (client.connected()) { if (client.available()) { char c = client.read(); if(newInfo && c == ' '){ newInfo = 0; } if(c == '$'){ newInfo = 1; } if((newInfo == 1) && (operation == 0)){ Serial.println(c); if(c == '1'){ Serial.println("ON"); operation = 1; blinker(); } if(c == '2'){ Serial.println("OFF"); digitalWrite(8, HIGH); } } if (c == '\n') { currentLineIsBlank = true; } else if (c != '\r') { currentLineIsBlank = false; } if (c == '\n' && currentLineIsBlank) { client.println("HTTP/1.1 200 OK"); client.println("Content-Type: text/html"); client.println("Connection: close"); client.println("Refresh: 30"); client.println(); client.println("<!DOCTYPE HTML>"); client.println("<html>"); client.print("<title>Web Server</title>"); client.print("<H1>Web Server</H1>"); client.print("<a href=\"/$1\"><button>On</button></a>"); client.print("<a href=\"/$2\"><button>Off</button></a>"); client.println("<br />"); client.println("</html>"); break; } } } delay(1); client.stop(); } }
<script> $(function(){ $('#pusk').click(function() { $.post('http://192.168.4.70/$1', {"url": '$1',}, function(data){ if (data.success) { $('#result').html(data.success.msg); } else { $('#result').html(data.error.msg); } }, "json"); return false; }); }); $(function(){ $('#stop').click(function() { $.post('http://192.168.4.70/$2', {"url": '$2',}, function(data){ if (data.success) { $('#result').html(data.success.msg); } else { $('#result').html(data.error.msg); } }, "json"); return false; }); }); </script>
Цикл задержек остановить чем? Пулеметной очередью, ударом кузнечного молота? Как исполнитель должен это требование реализовывать? Вы так и не желаете учиться оценивать перспективу, замечаете только delay().
Данное устройство будет работать 24\7 в ожидании команды запуска 1 раз в месяц. Воля исполнителя применить какие-то доработки оптимизирующие безперебойную работу сети. Участник sadman41 писал по этому поводу здесь http://arduino.ru/forum/pesochnitsa-razdel-dlya-novichkov/vopros-novichka#comment-557784
Здесь http://arduino.ru/forum/pesochnitsa-razdel-dlya-novichkov/snova-voprosy?page=2 было обсуждение данной поделки. В теме дано много подсказок, но я не понимаю как применить их на практике.
Просто остановиться в ожидании запуска. По истечению 210 секунд перейти из LOW в HIGH и ждать следующего запуска.
Наверное в этом форуме отсутствует возможность написания личных сообщений. Я много раз хотел написать вам в личку но никак. Хотел попросить вас закончить эту эпопею, не бесплатно конечно.
напишу правильно работающий скетч заново. 2тр. man9913@mail.ru
Я сейчас наслаждаюсь прелестями "медициносодержащей услуги" от Минздрава, так что браться пока за это не буду. А с учётом уже озвученных 2 тыщ при тех проблемах , что мне уже известны, данный заказ вообще становится не очень привлекателен.
Выше написали только за скетч, про зажигание лампочек ничего не говорилось. Мне нужно все вместе сделать или по отдельности но без обратной связи никак.
2 тысячи это совершенно не серьёзно или исполнитель не понял задачи
2 тысячи это совершенно не серьёзно или исполнитель не понял задачи
Он не понял. В течении часа в почте веду переписку.
чтобы он понял, надо нормально задачу формулировать, чтобы исполнитель клещами не вытаскивал информацию из вас по крупинкам, это кстати увеличивает стоимость выполнения.
чтобы он понял, надо нормально задачу формулировать, чтобы исполнитель клещами не вытаскивал информацию из вас по крупинкам, это кстати увеличивает стоимость выполнения.
на прямо заданные вопросы ответа не было, если это дизель-генератор, к примеру из серии ДГА-48 и далее, то они оборудованы шкафами автоматики, ранее это было на логике-Т, то-есть можно получить часть данных со шкафа, для ручного управления там две кнопки (режим ручной проверки), пуск и стоп, сначала включается насос прокачки масла, далее, по истечении определённого периода времени если с давлением всё в норме включается запуск либо от аккумуляторов 24 вольта либо от рессиверов с воздухом и должен произойти выход на рабочие обороты (1500 об/мин) за определённое время, нет выхода - авария, стоп...
Так и не услышал, что за дизеля там такие и система автоматики к ним... а сейчас идёт обсуждение "сферического коня в вакууме"... и таких коней аж 7 вроде )))
посмотрел представленный код... блинкер вызывается в обработке запроса сервера? :) ну-ну...
Я так понимаю, что в этой задаче главная работа - это разгрести все то, что от невежества наворотили Заказчик и прошлый исполнитель?
посмотрел представленный код... блинкер вызывается в ответе сервера? :) ну-ну...
Я так понимаю, что в этой задаче главная работа - это разгрести все то, что от невежества наворотили Заказчик и прошлый исполнитель?
Я инициатор, я заказчик, я исполнитель. Платить исполнителю буду из своей зарплаты, сколько бы это не стоило. Стоимость не оглашал, надеялся на предложения. Код выложил с последними изменениями. Если хотите, то вот последний рабочий вариант:
Разве системы ГО и ЧС не требуют сертификатов на продукцию? От них жизнь людей зависит. А ну как зависнет эта ваша конструкция через пару недель, а никто и знать не будет, пока не жахнет.
Я, конечно, понимаю, что в это верить не хочется, но когда начнут искать виноватых - мысли в голове будут совсем другие: "на кой хер я взялся жопу начальству прикрывать и ещё за свой счёт?"
Вот по этому я долгое время скрывал настоящие цели, но шила в мешке не утаишь...
Сейчас ответственность за эти блоки государство перенесло на плечи предприятий где они установлены. Я работаю на одном из таких предприятий и когда зависнет, буду первый кто получит по шапке. Зачем мне это? Интерес и опыт какой-то. Тут или вперед или никто не поймет, почему проект был свернут в самый разгар.
Ну и зря скрывали. Никакая опасность потерять работу не стоит 5 лет колонии.
А уж начальники, будьте уверены, все оформят самоуправством за милую душу.
И, вообще, такая постановка задачи, в корне меняет подход к проектированию системы.
Почему "никто не поймет?"
Есть факт - система работает неустойчиво, к вводу в эксплуатацию допущена быть не может. Все.
Хорошо. Какие вы предлагаете изменения для получения стабильности?
Сертифицированное оборудование, а не нанки, у которых не дай бог кварцы поотваливаются после эксплуатации в промышленных условиях.
Я вижу - вы упрямо желаете стать фигурантом "Зимней Вишни - 2". Это крайне печально.
Просто я помню недавнюю историю с сертифицированным оборудованием...
Решили значит в цехах и не только заменить старые побитые жизнью алюминиевые рупоры для громкоговорящей связи. Питаются они от трансляционной линии 120 вольт. Фирма смонтировала свои сертифицированные рупоры, а усилители остались старыми. Через месяц начали гореть эти рупоры как семечки, фирма исчезла, а мы выколуповали из старых колоколов трансформаторы и меняли их в новых колоколах. Вот еще осталась кучка этих китайских типа трансформаторов, у них даже между собой параметры разные. Хотел этим сказать, что с сиренами которые включают 1 раз в месяц для проверки будет та же история, а включают их подпирая вручную палочкой контакты пускателя в назначенное время уже лет 10 если не больше. А видео наблюдение? Лучше промолчу! Нет веры никому, только себе. Нашу скромную электро-мастерскую нужно переименовать в бюро доводок и доделок.
я вам советую разделить задачу на понятные части.
Для начала закажите отдельно переписывание этого кода без делей. Только это, без всяких модификаций, без добавления чтения каких-то пинов и посылки POST запроса. Это относительно несложная задача, и, главное - на нее уже есть ТЗ.
Думаю, на это вы исполнителя найдете легко.
А потом, когда эта часть заработает - может напрягетесь и сумеете внятно сформулировать. что там вам за управление пинами через POST запросы нужно, потому как пока я абсолютно ничего не понял.
посмотрел представленный код... блинкер вызывается в обработке запроса сервера? :) ну-ну...
Я так понимаю, что в этой задаче главная работа - это разгрести все то, что от невежества наворотили Заказчик и прошлый исполнитель?
ващето blinker вызывается из прерывания если чё.
точно, не увидел...
Не сложилось у вас с ТС. я так понял?
точно, не увидел...
Не сложилось у вас с ТС. я так понял?
исполнителем этого проекта я не являюсь.
сейчас мяч на стороне ТС'а. задача в принципе понятна и решаема. загвоздка там в том, что, как я понял, http запросы к ардуино делает веб сервер крутящийся на локальном ПК. ТС,у надо написать соответствующий php скрипт под openserver, который по его словам ему сделает веб-программист когда у него найдётся на это время.
Начинается пожар, электричество вырубается, ПК в дауне, свичи в дауне - что делает система оповещения? Спокойно себе догарает.
Просто отлично.
И про вачдог не забывайте! На не «old bootloder” он прекрасно фунциклирует.
Просто отлично.
Это не пожарная сигнализация, это сирена по типу авианалета или химической опасности. Она не такая значимая, но ее проверяют 1 раз в месяц.
Вот такая же https://youtu.be/T1SBljDADto
UW5EGA - вся эта идея с кучей веб-серверов, которые что-то передают друг другу - абсолютно неприемлема для любой ответственной системы. Я вам еще в самом начале обсуждения сказал, что 7 вебсерверов для семи ардуино - это бредятина. Но вы же никого не слушаете...
Вот ведь удивительно - чтобы переписать простенький код без делеев - вы ищете исполнителя, чтобы сбацать какой-то там пхп-скрипт на сервер - просите веб-программиста, но по вопросам общего проектирования системы ничьих советов не слушаете и упорно строите какую-то городулю из гнилых палок и костылей...
то есть реально ни в чем конкретно не разбираетесь -но уверены что надо делать именно так...
упорно строите какую-то городулю из гнилых палок и костылей...
UDP широковещательного тут бы видимо хватило:
Широковещательный UDP не хорош тем, что нужно смотреть за настройками сети. Вдруг на каком-то шлюзе или маршрутизаторе их прохождение не настроено?
Широковещательный UDP не хорош тем, что нужно смотреть за настройками сети. Вдруг на каком-то шлюзе или маршрутизаторе их прохождение не настроено?
это уже к сетевикам вопросы )))
Посоветовал UDP вместо TCP, чем ещё больше снизил надёжность системы и задействовал ещё пару человек в обслуживании. Это такой конкурс тут у радиогубителей - сделать так, чтобы ломалось не просто от пердежа, а ещё только при мысли о нем? Да тогда просто семь веревок натяните и к рубильникам привяжите. Эффективность даже выше будет.
тогда всегда можно скинуть с себя в зону ответственности сетевиков )))
Грустный, ваще то TCP не лучше UDP. У них просто разное назначение. Если все правильно делать и понимать что делаешь, то команды как раз удобнее передавать используя UDP. Если шлешь большие куски и тебе важен порядок, то с TCP просто будет удобнее работать. Тут дело не в том на каком уровне отправляются данные, а в том как это делается. Кстати UDP пролезет в большее количество дыр. Кроме того, например если делать сетку например на ESP то используя TCP получишь ограничение в 5 нод (если у тебя держатель сети ESP). А с UDP этой траблы не будет.
А с UDP этой траблы не будет.
он еще и внимательно код не смотрел, код не мой, нагло заимствован )))
Мне достаточно того факта, что UDP-пакет вполне "по стандарту" может похерить любой промежуточный хост и об этом никто даже и не узнает. В данном случае UDP тут ничего не улучшает - ни скорости не требуется, ни экономии трафика. А вот потенциальный геморрой в поиске проблем доставки и усложнение на прикладном уровне - извольте, прям на блюде.
Вполне по стандарту и любой TCP пакет так же может быть похерен. Если мы не знаем настройки шлюза, то мы об этом и говорить можем сколь угодно долго и бесполезно.
я бы делал с обратным каналом, там датчик звуковой просится, и контроль прохождения пакетов, раз в пять минут - состояние канала, а на запрос включения (изменение состояния ) сразу и вэбформы тут вообще лишние
Сообщение для Gri_Gori_Y:
Это раздел для размещения платных заказов ("Ищу исполнителя"). Не нужно писать в чужие темы свои вопросы, не касающиеся этих платных заказов. Да и вообще в чужие темы по совсем другим вопросам (оффтоп). Вам было ранее неоднократно сказано создать СВОЮ тему и вести обсуждение в ней. Если Вам не нужны платные услуги и Вы хотите чему-то научиться, спросить совета - создайте тему в разделе "Песочница". Для этого перейдите в главный раздел "Форумы" и справа вверху нажмите на надпись "Создать материал", затем "Тема форума". Укажите тему Вашего обращения и правильно выберите раздел (Песочница).
Если всё таки понадобятся платные услуги - опять же, создайте СВОЮ тему в разделе "Ищу исполнителя". Не нужно писать в чужих.
Приложите некоторые усилия для правильного размещения ваших сообщений, а не где попало по всему форуму...
После добавления еще одного реле и контроля состояния входа все это вешается при работе. Заменил все провода на экранированные и все равно вешается, такое ощущение, что он зависает не из за наводок, а сам по себе. Допустим я уже решил, что оно зависло, а оно за секунду может прощелкать всеми контактами и остановиться. Как ПК виснет, а потом открывает 10 окон сразу. Все я отказался от дальнейшего воплощения, но только для себя может с годами доведу все до ума. Заяву на расчет написал.
Хорошо. Какие вы предлагаете изменения для получения стабильности?
Жаль что сдались. Решение могу предложить.