Nano. Нужен исполнитель.

UW5EGA
Offline
Зарегистрирован: 16.09.2020

Необходимо написать или переписать данный код. Необходима работа без Deley, то есть что-бы цикл задержек всегда можно было остановить. Данный вариант кода не работает, почему я не знаю, автор не общительный. Нужно добавить дополнительно: контролировать положение LOW или HIGH на digital pin 2, объяснить мне как это значение контролировать с помощью POST запроса. То есть от положения контакта должна загораться лампочка на другой вебстранице, сообщающая о готовности устройства к работе. Доступ к редактору страницы доступен через TeamViewer. Так же создать условие запрещающее перевод digital pin 8 в положение LOW, пока на digital pin 2 не будет LOW. Вывод информации на html страницу не нужен, ниже будет скрипт с помощью которого на другой вебстранице осуществляется управление кнопками "Пуск" "Стоп". С помощью подобного скрипта необходимо зажигать лампочку о готовности без обновления страницы.

001#include <SPI.h>
002#include <Ethernet.h>
003boolean newInfo = 0;
004byte mac[] = { 0x00, 0xAA, 0xBB, 0xCC, 0xDA, 0x02 };    
005byte gateway[] = { 192, 168, 4, 1 };
006byte subnet[] = { 255, 255, 255, 0 };
007IPAddress ip(192,168,4,70);
008  
009EthernetServer server(80);
010  int a;
011  int count;
012  int operation;
013void setup()
014{
015  cli();
016  pinMode(8, OUTPUT);
017  digitalWrite(8,HIGH);
018  Ethernet.begin(mac, ip);
019  server.begin();
020  Serial.begin(9600);
021  /*
022   * Настройка таймера по переполнению
023   */
024  TCCR1A = 0; // установить TCCR1A регистр в 0
025  OCR1A = 15624; // установка регистра совпадения
026  TCCR1B |= (1 << WGM12); // включение в CTC режим
027  TIMSK1 = (1 << OCIE1A);//включить прерывание Timer1 overflow
028  TCCR1B |= (1 << CS12);
029  TCCR1B |= (0 << CS11);
030  TCCR1B |= (1 << CS10);
031  sei();
032  
033  a = 0;
034  count = 0;
035  operation = 0;
036}
037ISR(TIMER1_COMPA_vect)
038{
039  switch (a){
040    case 1:
041      count = 0;
042      break;
043    case 2:
044      count = count + 1;
045      break;
046    default:;
047  }
048  if(a == 1)blinker();
049}
050void blinker()
051{
052  /*
053  digitalWrite(8, LOW);
054  delay(8000);
055  digitalWrite(8, HIGH);
056  delay(5000);
057  digitalWrite(8, LOW);
058  delay(8000);
059  digitalWrite(8, HIGH);
060  delay(10000);
061  digitalWrite(8, LOW);
062  delay(210000);
063  digitalWrite(8, HIGH);
064  */
065  if(operation == 1){
066    digitalWrite(8, HIGH);
067    operation = 2;
068    a = 1;
069  }
070  if((operation == 2) && (count == 8)){
071    digitalWrite(8, LOW);
072    operation = 3;
073    count = 0;
074  }
075  if((operation == 3) && (count == 5)){
076    digitalWrite(8, HIGH);
077    operation = 4;
078    count = 0;
079  }
080  if((operation == 4) && (count == 8)){
081    digitalWrite(8, LOW);
082    operation = 5;
083    count = 0;
084  }
085  if((operation == 5) && (count == 10)){
086    digitalWrite(8, HIGH);
087    operation = 6;
088    count = 0;
089  }
090  if((operation == 6) && (count == 210)){
091    digitalWrite(8, LOW);
092    operation = 0;
093    a = 0;
094  }
095}
096  
097void loop()
098{
099  EthernetClient client = server.available();
100  if(client){
101  boolean currentLineIsBlank = true;
102  while (client.connected()) {
103    if (client.available()) {
104      char c = client.read();
105                                                   
106      if(newInfo && c == ' '){
107        newInfo = 0;
108      }
109       
110      if(c == '$'){
111        newInfo = 1;
112      }
113       
114      if((newInfo == 1) && (operation == 0)){
115          Serial.println(c);
116          if(c == '1'){
117          Serial.println("ON");
118          operation = 1;
119          blinker();
120          }
121           
122          if(c == '2'){
123          Serial.println("OFF");
124          digitalWrite(8, HIGH);
125          }   
126      }
127       
128      if (c == '\n') {
129        currentLineIsBlank = true;
130      }
131      else if (c != '\r') {
132        currentLineIsBlank = false;
133      }
134     
135      if (c == '\n' && currentLineIsBlank) {
136        client.println("HTTP/1.1 200 OK");
137        client.println("Content-Type: text/html");
138        client.println("Connection: close"); 
139        client.println("Refresh: 30");
140        client.println();
141        client.println("<!DOCTYPE HTML>");
142        client.println("<html>");
143        client.print("<title>Web Server</title>");
144        client.print("<H1>Web Server</H1>");
145        client.print("<a href=\"/$1\"><button>On</button></a>");
146        client.print("<a href=\"/$2\"><button>Off</button></a>");
147        client.println("<br />");      
148        client.println("</html>");
149        break;
150      }
151     
152    }
153     
154  }
155  delay(1);
156  client.stop();
157}
158}
01<script>
02$(function(){
03 
04 
05$('#pusk').click(function() {
06    $.post('<a href="http://192.168.4.70/$1" rel="nofollow">http://192.168.4.70/$1</a>', {"url": '$1',},
07        function(data){
08            if (data.success) {
09                $('#result').html(data.success.msg);
10            } else {
11                $('#result').html(data.error.msg);
12            }
13        }, "json");
14    return false;
15});
16 
17});
18 
19$(function(){
20 
21 
22$('#stop').click(function() {
23    $.post('<a href="http://192.168.4.70/$2" rel="nofollow">http://192.168.4.70/$2</a>', {"url": '$2',},
24        function(data){
25            if (data.success) {
26                $('#result').html(data.success.msg);
27            } else {
28                $('#result').html(data.error.msg);
29            }
30        }, "json");
31    return false;
32});
33 
34});
35</script>

 

sadman41
Offline
Зарегистрирован: 19.10.2016

Цикл задержек остановить чем? Пулеметной очередью, ударом кузнечного молота? Как исполнитель должен это требование реализовывать? Вы так и не желаете учиться оценивать перспективу, замечаете только delay().

UW5EGA
Offline
Зарегистрирован: 16.09.2020

Данное устройство будет работать 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 было обсуждение данной поделки. В теме дано много подсказок, но я не понимаю как применить их на практике. 

UW5EGA
Offline
Зарегистрирован: 16.09.2020

sadman41 пишет:
Цикл задержек остановить чем? Пулеметной очередью, ударом кузнечного молота? Как исполнитель должен это требование реализовывать? Вы так и не желаете учиться оценивать перспективу, замечаете только delay().

Просто остановиться в ожидании запуска. По истечению 210 секунд перейти из LOW в HIGH и ждать следующего запуска. 

UW5EGA
Offline
Зарегистрирован: 16.09.2020

sadman41 пишет:
Цикл задержек остановить чем? Пулеметной очередью, ударом кузнечного молота? Как исполнитель должен это требование реализовывать? Вы так и не желаете учиться оценивать перспективу, замечаете только delay().

Наверное в этом форуме отсутствует возможность написания личных сообщений. Я много раз хотел написать вам в личку но никак. Хотел попросить вас закончить эту эпопею, не бесплатно конечно. 

man9913
Offline
Зарегистрирован: 19.03.2016

напишу правильно работающий скетч заново. 2тр. man9913@mail.ru

sadman41
Offline
Зарегистрирован: 19.10.2016

Я сейчас наслаждаюсь прелестями "медициносодержащей услуги" от Минздрава, так что браться пока за это не буду. А с учётом уже озвученных 2 тыщ при тех проблемах , что мне уже известны, данный заказ вообще становится не очень привлекателен.

UW5EGA
Offline
Зарегистрирован: 16.09.2020

Выше написали только за скетч, про зажигание лампочек ничего не говорилось. Мне нужно все вместе сделать или по отдельности но без обратной связи никак. 

ua6em
ua6em аватар
Offline
Зарегистрирован: 17.08.2016

sadman41 пишет:
Я сейчас наслаждаюсь прелестями "медициносодержащей услуги" от Минздрава, так что браться пока за это не буду. А с учётом уже озвученных 2 тыщ при тех проблемах , что мне уже известны, данный заказ вообще становится не очень привлекателен.

2 тысячи это совершенно не серьёзно или исполнитель не понял задачи

UW5EGA
Offline
Зарегистрирован: 16.09.2020

ua6em пишет:

sadman41 пишет:
Я сейчас наслаждаюсь прелестями "медициносодержащей услуги" от Минздрава, так что браться пока за это не буду. А с учётом уже озвученных 2 тыщ при тех проблемах , что мне уже известны, данный заказ вообще становится не очень привлекателен.

2 тысячи это совершенно не серьёзно или исполнитель не понял задачи

Он не понял. В течении часа в почте веду переписку. 

man9913
Offline
Зарегистрирован: 19.03.2016

чтобы он понял, надо нормально задачу формулировать, чтобы исполнитель клещами не вытаскивал информацию из вас по крупинкам, это кстати увеличивает стоимость выполнения.

ua6em
ua6em аватар
Offline
Зарегистрирован: 17.08.2016

man9913 пишет:

чтобы он понял, надо нормально задачу формулировать, чтобы исполнитель клещами не вытаскивал информацию из вас по крупинкам, это кстати увеличивает стоимость выполнения.

на прямо заданные вопросы ответа не было, если это дизель-генератор, к примеру из серии ДГА-48 и далее, то они оборудованы шкафами автоматики, ранее это было на логике-Т, то-есть можно получить часть данных со шкафа, для ручного управления там две кнопки (режим ручной проверки), пуск и стоп, сначала включается насос прокачки масла, далее, по истечении определённого периода времени если с давлением всё в норме включается запуск либо от аккумуляторов 24 вольта либо от рессиверов с воздухом и должен произойти выход на рабочие обороты (1500 об/мин) за определённое время, нет выхода - авария, стоп...
Так и не услышал, что за дизеля там такие и система автоматики к ним... а сейчас идёт обсуждение "сферического коня в вакууме"... и таких коней аж 7 вроде )))

b707
Offline
Зарегистрирован: 26.05.2017

посмотрел представленный код... блинкер вызывается в обработке запроса сервера? :) ну-ну...

Я так понимаю, что в этой задаче главная работа - это разгрести все то, что от невежества наворотили Заказчик и прошлый исполнитель?

rst
Offline
Зарегистрирован: 25.06.2018

b707 пишет:
Я так понимаю, что в этой задаче главная работа - это разгрести все то, что от невежества наворотили Заказчик и прошлый исполнитель?
А то-ж! Потому и оплата такая - как ассенизатору. За разгребание аналогичной субстанции.  ;)))

UW5EGA
Offline
Зарегистрирован: 16.09.2020

b707 пишет:

посмотрел представленный код... блинкер вызывается в ответе сервера? :) ну-ну...

Я так понимаю, что в этой задаче главная работа - это разгрести все то, что от невежества наворотили Заказчик и прошлый исполнитель?

Я инициатор, я заказчик, я исполнитель. Платить исполнителю буду из своей зарплаты, сколько бы это не стоило. Стоимость не оглашал, надеялся на предложения. Код выложил с последними изменениями. Если хотите, то вот последний рабочий вариант:

 

001#include <SPI.h>
002#include <Ethernet.h>
003boolean newInfo = 0;
004byte mac[] = { 0x00, 0xAA, 0xBB, 0xCC, 0xDA, 0x02 };    
005byte gateway[] = { 192, 168, 4, 1 };
006byte subnet[] = { 255, 255, 255, 0 };
007IPAddress ip(192,168,4,70);
008EthernetServer server(80);
009 
010 
011void setup()
012{
013  pinMode(8, OUTPUT);         
014  digitalWrite(8,HIGH);
015  Ethernet.begin(mac, ip);
016  server.begin();
017  Serial.begin(9600);
018}
019 
020void blinker()
021{
022  digitalWrite(8, LOW);
023  delay(8000);
024  digitalWrite(8, HIGH);
025  delay(5000);
026  digitalWrite(8, LOW);
027  delay(8000);
028  digitalWrite(8, HIGH);
029  delay(10000);
030  digitalWrite(8, LOW);
031  delay(210000);
032  digitalWrite(8, HIGH);
033}
034 
035 
036void loop()
037{
038  EthernetClient client = server.available();
039  if(client){
040  boolean currentLineIsBlank = true;
041  while (client.connected()) {            
042    if (client.available()) {                      
043      char c = client.read();                      
044                                                   
045      if(newInfo && c == ' '){                     
046        newInfo = 0;                               
047      }
048       
049      if(c == '$'){                                
050                                                     
051        newInfo = 1;                               
052      }
053       
054                                                      
055      if(newInfo == 1){                             
056          Serial.println(c);
057          if(c == '1'){                             
058          Serial.println("ON");
059          digitalWrite(8, LOW);
060          blinker();
061          }
062           
063          if(c == '2'){                             
064          Serial.println("OFF");
065          digitalWrite(8, HIGH);                    
066          }   
067      }
068       
069      if (c == '\n') {                             
070        currentLineIsBlank = true;                 
071      }
072      else if (c != '\r') {                        
073        currentLineIsBlank = false;                
074      }
075     
076      if (c == '\n' && currentLineIsBlank) {       
077        client.println("HTTP/1.1 200 OK");         
078        client.println("Content-Type: text/html");
079        client.println("Connection: close"); 
080        client.println("Refresh: 1");             
081        client.println();
082        client.println("<!DOCTYPE HTML>");        
083        client.println("<html>");                  
084        client.print("<title>Alarm</title>");               
085        client.print("<H1>Block 1</H1>");                       
086        if (digitalRead(8))
087  {
088    client.println("<h3>OFF</h3>");
089  }
090  else
091  {
092    client.println("<h3>ON</h3>");
093  }     
094        client.println("<br />");      
095        client.println("</html>");                 
096        break;                                    
097      }
098     
099    }
100     
101  }
102  delay(1);                                         
103  client.stop();
104}
105}

 

sadman41
Offline
Зарегистрирован: 19.10.2016

Разве системы ГО и ЧС не требуют сертификатов на продукцию? От них жизнь людей зависит. А ну как зависнет эта ваша конструкция через пару недель, а никто и знать не будет, пока не жахнет.

Я, конечно, понимаю, что в это верить не хочется, но когда начнут искать виноватых - мысли в голове будут совсем другие: "на кой хер я взялся жопу начальству прикрывать и ещё за свой счёт?"

UW5EGA
Offline
Зарегистрирован: 16.09.2020

sadman41 пишет:
Разве системы ГО и ЧС не требуют сертификатов на продукцию? От них жизнь людей зависит. А ну как зависнет эта ваша конструкция через пару недель, а никто и знать не будет, пока не жахнет.

Вот по этому я долгое время скрывал настоящие цели, но шила в мешке не утаишь... 

Сейчас ответственность за эти блоки государство перенесло на плечи предприятий где они установлены. Я работаю на одном из таких предприятий и когда зависнет, буду первый кто получит по шапке. Зачем мне это? Интерес и опыт какой-то. Тут или вперед или никто не поймет, почему проект был свернут в самый разгар. 

sadman41
Offline
Зарегистрирован: 19.10.2016

Ну и зря скрывали. Никакая опасность потерять работу не стоит 5 лет колонии.

А уж начальники, будьте уверены, все оформят самоуправством за милую душу.

И, вообще, такая постановка задачи, в корне меняет подход к проектированию системы.

Почему "никто не поймет?"
Есть факт - система работает неустойчиво, к вводу в эксплуатацию допущена быть не может. Все.

UW5EGA
Offline
Зарегистрирован: 16.09.2020

Хорошо. Какие вы предлагаете изменения для получения стабильности?

sadman41
Offline
Зарегистрирован: 19.10.2016

Сертифицированное оборудование, а не нанки, у которых не дай бог кварцы поотваливаются после эксплуатации в промышленных условиях.

Я вижу - вы упрямо желаете стать фигурантом "Зимней Вишни - 2". Это крайне печально.

UW5EGA
Offline
Зарегистрирован: 16.09.2020

Просто я помню недавнюю историю с сертифицированным оборудованием...

Решили значит в цехах и не только заменить старые побитые жизнью алюминиевые рупоры для громкоговорящей связи. Питаются они от трансляционной линии 120 вольт. Фирма смонтировала свои сертифицированные рупоры, а усилители остались старыми. Через месяц начали гореть эти рупоры как семечки, фирма исчезла, а мы выколуповали из старых колоколов трансформаторы и меняли их в новых колоколах. Вот еще осталась кучка этих китайских типа трансформаторов, у них даже между собой параметры разные. Хотел этим сказать, что с сиренами которые включают 1 раз в месяц для проверки будет та же история, а включают их подпирая вручную палочкой контакты пускателя в назначенное время уже лет 10 если не больше. А видео наблюдение? Лучше промолчу! Нет веры никому, только себе. Нашу скромную электро-мастерскую нужно переименовать в бюро доводок и доделок. 

 

b707
Offline
Зарегистрирован: 26.05.2017

я вам советую разделить задачу на понятные части.

Для начала закажите отдельно переписывание этого кода без делей. Только это, без всяких модификаций, без добавления чтения каких-то пинов и посылки POST запроса. Это относительно несложная задача, и, главное - на нее уже есть ТЗ.

Думаю, на это вы исполнителя найдете легко.

А потом, когда эта часть заработает - может напрягетесь и сумеете внятно сформулировать. что там вам за управление пинами через POST запросы нужно, потому как пока я абсолютно ничего не понял.

man9913
Offline
Зарегистрирован: 19.03.2016

b707 пишет:

посмотрел представленный код... блинкер вызывается в обработке запроса сервера? :) ну-ну...

Я так понимаю, что в этой задаче главная работа - это разгрести все то, что от невежества наворотили Заказчик и прошлый исполнитель?

ващето blinker вызывается из прерывания если чё.

b707
Offline
Зарегистрирован: 26.05.2017

man9913 пишет:

ващето blinker вызывается из прерывания если чё.

точно, не увидел...

Не сложилось у вас с ТС. я так понял?

man9913
Offline
Зарегистрирован: 19.03.2016

b707 пишет:

точно, не увидел...

Не сложилось у вас с ТС. я так понял?

исполнителем этого проекта я не являюсь.

сейчас мяч на стороне ТС'а. задача в принципе понятна и решаема. загвоздка там в том, что, как я понял, http запросы к ардуино делает веб сервер крутящийся на локальном ПК. ТС,у надо написать соответствующий php скрипт под openserver, который по его словам ему сделает веб-программист когда у него найдётся на это время.

sadman41
Offline
Зарегистрирован: 19.10.2016

Начинается пожар, электричество вырубается, ПК в дауне, свичи в дауне - что делает система оповещения? Спокойно себе догарает.

Просто отлично.

inspiritus
Offline
Зарегистрирован: 17.12.2012

И про вачдог не забывайте! На не «old bootloder” он прекрасно фунциклирует.

UW5EGA
Offline
Зарегистрирован: 16.09.2020

sadman41 пишет:
Начинается пожар, электричество вырубается, ПК в дауне, свичи в дауне - что делает система оповещения? Спокойно себе догарает.

Просто отлично.


Это не пожарная сигнализация, это сирена по типу авианалета или химической опасности. Она не такая значимая, но ее проверяют 1 раз в месяц.

UW5EGA
Offline
Зарегистрирован: 16.09.2020

Вот такая же https://youtu.be/T1SBljDADto

b707
Offline
Зарегистрирован: 26.05.2017

UW5EGA - вся эта идея с кучей веб-серверов, которые что-то передают друг другу - абсолютно неприемлема для любой ответственной системы. Я вам еще в самом начале обсуждения сказал,  что 7 вебсерверов для семи ардуино - это бредятина. Но вы же никого не слушаете...

Вот ведь удивительно - чтобы переписать простенький код без делеев - вы ищете исполнителя, чтобы сбацать какой-то там пхп-скрипт на сервер - просите веб-программиста, но по вопросам общего проектирования системы ничьих советов не слушаете и упорно строите какую-то городулю из гнилых палок и костылей...

то есть реально ни в чем конкретно не разбираетесь -но уверены что надо делать именно так...

ua6em
ua6em аватар
Offline
Зарегистрирован: 17.08.2016

b707 пишет:

 упорно строите какую-то городулю из гнилых палок и костылей...

UDP широковещательного тут бы видимо хватило:
 

 

imp
Offline
Зарегистрирован: 20.06.2020

Широковещательный UDP не хорош тем, что нужно смотреть за настройками сети. Вдруг на каком-то шлюзе или маршрутизаторе их прохождение не настроено?

ua6em
ua6em аватар
Offline
Зарегистрирован: 17.08.2016

imp пишет:

Широковещательный UDP не хорош тем, что нужно смотреть за настройками сети. Вдруг на каком-то шлюзе или маршрутизаторе их прохождение не настроено?

это уже к сетевикам вопросы )))

sadman41
Offline
Зарегистрирован: 19.10.2016

Посоветовал UDP вместо TCP, чем ещё больше снизил надёжность системы и задействовал ещё пару человек в обслуживании. Это такой конкурс тут у радиогубителей - сделать так, чтобы ломалось не просто от пердежа, а ещё только при мысли о нем? Да тогда просто семь веревок натяните и к рубильникам привяжите. Эффективность даже выше будет.

ua6em
ua6em аватар
Offline
Зарегистрирован: 17.08.2016

sadman41 пишет:
Посоветовал UDP вместо TCP, чем ещё больше снизил надёжность системы и задействовал ещё пару человек в обслуживании. Это такой конкурс тут у радиогубителей - сделать так, чтобы ломалось не просто от пердежа, а ещё только при мысли о нем? Да тогда просто семь веревок натяните и к рубильникам привяжите. Эффективность даже выше будет.

тогда всегда можно скинуть с себя в зону ответственности сетевиков )))

brokly
brokly аватар
Offline
Зарегистрирован: 08.02.2014

Грустный, ваще то TCP не лучше UDP. У них просто разное назначение. Если все правильно делать и понимать что делаешь, то команды как раз удобнее передавать используя UDP.  Если шлешь большие куски и тебе важен порядок, то с TCP просто будет удобнее работать. Тут дело не в том на каком уровне отправляются данные, а в том как это делается. Кстати UDP пролезет в большее количество дыр. Кроме того, например если делать сетку например на ESP то используя TCP получишь ограничение в 5 нод (если у тебя держатель сети ESP). А с UDP этой траблы не будет. 

ua6em
ua6em аватар
Offline
Зарегистрирован: 17.08.2016

brokly пишет:

 А с UDP этой траблы не будет. 

он еще и внимательно код не смотрел, код не мой, нагло заимствован )))

sadman41
Offline
Зарегистрирован: 19.10.2016

Мне достаточно того факта, что UDP-пакет вполне "по стандарту" может похерить любой промежуточный хост и об этом никто даже и не узнает. В данном случае UDP тут ничего не улучшает - ни скорости не требуется, ни экономии трафика. А вот потенциальный геморрой в поиске проблем доставки и усложнение на прикладном уровне - извольте, прям на блюде.

brokly
brokly аватар
Offline
Зарегистрирован: 08.02.2014

Вполне по стандарту и любой TCP пакет так же может быть похерен. Если мы не знаем настройки шлюза, то мы об этом и говорить можем сколь угодно долго и бесполезно.

ua6em
ua6em аватар
Offline
Зарегистрирован: 17.08.2016

sadman41 пишет:
Мне достаточно того факта, что UDP-пакет вполне "по стандарту" может похерить любой промежуточный хост и об этом никто даже и не узнает. В данном случае UDP тут ничего не улучшает - ни скорости не требуется, ни экономии трафика. А вот потенциальный геморрой в поиске проблем доставки и усложнение на прикладном уровне - извольте, прям на блюде.

я бы делал с обратным каналом, там датчик звуковой просится, и контроль прохождения пакетов, раз в пять минут - состояние канала, а на запрос включения (изменение состояния ) сразу и вэбформы тут вообще лишние

Jeka_M
Jeka_M аватар
Offline
Зарегистрирован: 06.07.2014

Сообщение для Gri_Gori_Y:
Это раздел для размещения платных заказов ("Ищу исполнителя"). Не нужно писать в чужие темы свои вопросы, не касающиеся этих платных заказов. Да и вообще в чужие темы по совсем другим вопросам (оффтоп). Вам было ранее неоднократно сказано создать СВОЮ тему и вести обсуждение в ней. Если Вам не нужны платные услуги и Вы хотите чему-то научиться, спросить совета - создайте тему в разделе "Песочница". Для этого перейдите в главный раздел "Форумы" и справа вверху нажмите на надпись "Создать материал", затем "Тема форума". Укажите тему Вашего обращения и правильно выберите раздел (Песочница). 
Если всё таки понадобятся платные услуги - опять же, создайте СВОЮ тему в разделе "Ищу исполнителя". Не нужно писать в чужих.

Приложите некоторые усилия для правильного размещения ваших сообщений, а не где попало по всему форуму...

UW5EGA
Offline
Зарегистрирован: 16.09.2020
01#include <SPI.h>
02#include <Ethernet.h>
03boolean newInfo = 0;
04byte mac[] = { 0x00, 0xAA, 0xBB, 0xCC, 0xDA, 0x02 };    
05byte gateway[] = { 192, 168, 4, 1 };
06byte subnet[] = { 255, 255, 255, 0 };
07IPAddress ip(192,168,4,70);
08EthernetServer server(80);
09 
10void setup()
11{
12  pinMode(8, OUTPUT);
13  pinMode(6, OUTPUT);
14  pinMode(3, INPUT_PULLUP);
15  digitalWrite(8,HIGH);
16  digitalWrite(6,HIGH);
17  Ethernet.begin(mac, ip);
18  server.begin();
19  Serial.begin(9600);
20}
21 
22void loop()
23{
24  EthernetClient client = server.available();
25  if(client){
26  boolean currentLineIsBlank = true;
27  while (client.connected()) {            
28    if (client.available()) {                      
29      char c = client.read();                      
30                                                   
31      if(newInfo && c == ' '){                     
32        newInfo = 0;                               
33      }
34       
35      if(c == '$'){                                
36                                                     
37        newInfo = 1;                               
38      }
39       
40                                                      
41          if(newInfo == 1){                             
42          Serial.println(c);
43          if(c == '1'){                             
44          Serial.println("ON");
45          digitalWrite(8, LOW);
46          }
47           
48          if(c == '2'){                             
49          Serial.println("OFF");
50          digitalWrite(8, HIGH);
51          digitalWrite(6,HIGH);
52          }
53           
54          if(c == '3'){                             
55          Serial.println("ON");
56          digitalWrite(6, LOW);
57          }
58      }
59       
60      if (c == '\n') {                             
61        currentLineIsBlank = true;                 
62      }
63      else if (c != '\r') {                        
64        currentLineIsBlank = false;                
65      }
66     
67      if (c == '\n' && currentLineIsBlank) {       
68        client.println("HTTP/1.1 200 OK");         
69        client.println("Content-Type: text/html");
70        client.println("Connection: close"); 
71        client.println("Refresh: 1");             
72        client.println();
73        client.println("<!DOCTYPE HTML>");        
74        client.println("<html>");                  
75        client.print("<title>Alarm</title>");               
76        client.print("<H1>Block 1</H1>");                       
77        if (digitalRead(3))
78  {
79    client.println("<h3>OFF</h3>");
80  }
81  else
82  {
83    client.println("<h3>ON</h3>");
84  }     
85        client.println("<br />");      
86        client.println("</html>");                 
87        break;                                    
88      }
89     
90    }
91     
92  }
93  delay(1);                                         
94  client.stop();
95}
96}

 

После добавления еще одного реле и контроля состояния входа все это вешается при работе. Заменил все провода на экранированные и все равно вешается, такое ощущение, что он зависает не из за наводок, а сам по себе. Допустим я уже решил, что оно зависло, а оно за секунду может прощелкать всеми контактами и остановиться. Как ПК виснет, а потом открывает 10 окон сразу. Все я отказался от дальнейшего воплощения, но только для себя может с годами доведу все до ума. Заяву на расчет написал. 

smart_pic
Offline
Зарегистрирован: 17.04.2016

UW5EGA пишет:

Хорошо. Какие вы предлагаете изменения для получения стабильности?

Жаль что сдались. Решение могу предложить.