Связь Arduino & ESP по uart

ardulamer
Offline
Зарегистрирован: 13.03.2022

Добрый день. Есть A.Nano & ESP8266.

К Нано подключен датчик тока. Раз в 5 секунд нано считывает показания с датчика. В лупе:

 if(curr_voltage >= 180)
    {
      voltage_status = 1;
    }
    else
    {
      voltage_status = 0;
    }
  //транслируем в сериалы
  Serial.write(voltage_status); // пробовал и  print
  delay(5000); 
 

Показание 0 / 1 транслируются раз в 5 сек в сериал. 

На есп натянут веб интерфейс. Соеденены нано и есп RX-TX TX-RX. 

В есп слушаем:

if (Serial.available() > 0) {  
 delay(50);
// считываем байт
char enlikerajer = Serial.read();                  
  client.print("в сериале щас это:");
  client.print(enlikerajer );
  client.print("<br/>____<br/>");
if(enlikerajer ==0){
  enlikerajer_zinnod = 0;
}else{
  enlikerajer_zinnod = 1;
};
  client.print(enlikerajer_zinnod );
}else{
  client.println("нихера нет");
}
}

 

 

 Где-то может косяки в коде - не суть. Оно работает, но криво. 

Проблема в том, что enlikerajer_zinnod - тут должно отображаться статус сети: 0 нет питания, 1 - есть. При подключении питания, при обновлении веб страницы есп - показывается как 1. Отключаем питание - спустя 10-2- обновлений и секунд 10-15 статус изменится на 0 (а может и не изменится, как повезет). Примерно та же история с подачей питания. 

В чем может быть проблема? Или как сделать по-другому эту логику?

 

Еще раз: нано считывает показания напряжения. Если напряжение менее 180в - передать параметр ЕСП = 0. При обновлении страницы веба ЕСП хотя  бы раз в минуту нужно получать актуальные значения статуса напряжения. 

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

ardulamer пишет:

 Где-то может косяки в коде - не суть. Оно работает, но криво.

если вопрос не по коду - то почему он тут? Если у вас вопрос по веб - обратитесь на соответвующий форум.

Если же все-таки вопрос по ардуино и его взаимодействию с есп - приложите ПОЛНЫЕ КОДЫ обоих скетчей

BOOM
BOOM аватар
Offline
Зарегистрирован: 14.11.2018

ardulamer пишет:

В чем может быть проблема? Или как сделать по-другому эту логику?

1. Зачем в 12 строке точка с запятой?

2. Дал обрывки кода, поэтому я точно не знаю:

enlikerajer == 0;         // 
enlikerajer_zinnod = 0;   // первичная инициализация

if (Serial.available() > 0) {
  delay(50);
  // считываем байт
  int8_t enlikerajer = Serial.read();
  client.print("в сериале щас это:");
  client.print(enlikerajer );
  client.print("<br/>____<br/>");
} else {
  client.println("нихера нет");
}

if (enlikerajer) {
  enlikerajer_zinnod = 1;
} else {
  enlikerajer_zinnod = 0;
}

client.print(enlikerajer_zinnod);

 

vrd
Offline
Зарегистрирован: 20.01.2022

Ещё Гайвер писал - что форматы дуины и есп НЕ совпадают!

BOOM
BOOM аватар
Offline
Зарегистрирован: 14.11.2018

vrd пишет:

Ещё Гайвер писал - что форматы дуины и есп НЕ совпадают!

Лучше промолчи, за умного сойдёшь.

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

vrd пишет:

Ещё Гайвер писал - что форматы дуины и есп НЕ совпадают!

что не слово, то перл!

Гайвер прям пророк, конечно, но такой дурости даже он не писал :)

Что такое "форматы дуино и есп"? - форматы чего? Исходных файлов? прошивок?  И главное - причем тут вообще какие-то форматы, как это поможет автору вопроса? :)))