Помогите разобраться
-
Editor
- Рядовой
- Сообщения: 41
- Зарегистрирован: 17 авг 2025, 17:33
- Имя: Ашот
- Благодарил (а): 4 раза
- Поблагодарили: 2 раза
Помогите разобраться
Всем привет. В общем проект прост, обычный терморегулятор на ардуино нано. Не могу понять что происходит, уже два раз после включения работает недели две без проблем ,а потом вдруг включается и не выключается. После того как перезагрузил или обесточил и снова включил, всё снова работает пару недель и всё повторяется. Может кто может подсказать чём дело?
У вас нет необходимых прав для просмотра вложений в этом сообщении.
-
vovka1973
- Подполковник
- Сообщения: 1271
- Зарегистрирован: 14 фев 2016, 14:16
- Откуда: kazahstan
- Благодарил (а): 115 раз
- Поблагодарили: 17 раз
Re: Помогите разобраться
что то мне подсказывает что дело в помехах ,а не в коде.Editor писал(а): 10 фев 2026, 19:34 Всем привет. В общем проект прост, обычный терморегулятор на ардуино нано. Не могу понять что происходит, уже два раз после включения работает недели две без проблем ,а потом вдруг включается и не выключается. После того как перезагрузил или обесточил и снова включил, всё снова работает пару недель и всё повторяется. Может кто может подсказать чём дело?
-
ecoins
- Администратор
- Сообщения: 4493
- Зарегистрирован: 12 фев 2016, 11:40
- Откуда: Шатура
- Имя: Энвер
- Благодарил (а): 225 раз
- Поблагодарили: 381 раз
Re: Помогите разобраться
1.Это могут быть и помехи.Editor писал(а): 10 фев 2026, 19:34 Всем привет. В общем проект прост, обычный терморегулятор на ардуино нано. Не могу понять что происходит, уже два раз после включения работает недели две без проблем ,а потом вдруг включается и не выключается. После того как перезагрузил или обесточил и снова включил, всё снова работает пару недель и всё повторяется. Может кто может подсказать чём дело?
2.Но показалась странно, постоянная периодичность - две недели.
3.Посмотрел проект. Хороший. Удивило и использование OLED 1306 - автор библиотеки конечно молодец, сумел сделать компактное решение, которое и на Nano заработало.
4.У Вас проблема похоже в проекте, который не может устойчиво работать на Nano. 5.У Вас занято 89% динамической памяти и есть предупреждения, что программа может работать не стабильно. Возможно у Вас версия 7.5.2 и тогда ситуация будет получше.
6.Когда-то он может и работал, но возможно Вы его улучшали. В проекте много строковых переменных - они много оперативной памяти занимают. 7.Простое решение (если проблема в памяти) - перейти на другой контроллер, например на RP2040.
С уважением,ecoins.
У вас нет необходимых прав для просмотра вложений в этом сообщении.
-
Editor
- Рядовой
- Сообщения: 41
- Зарегистрирован: 17 авг 2025, 17:33
- Имя: Ашот
- Благодарил (а): 4 раза
- Поблагодарили: 2 раза
Re: Помогите разобраться
Привет. Может Вы и правы,питание у меня сделано через зарядку от телефона,включено в одну и ту же розетку куда включен обогреватель на 2 кВт,провод до розетки метров 10.Может в момент включения обогревателя проседает напряжение и происходит сбой. Надо будет проверить.Я читал что аруины зависают и их нужно перезагружать,даже устройства делают внешние на одном транзисторе.
Спасибо за ответ. Как Ваш проект,что говорили реализуете к весне?
Просто вопрос без просьб. Умеете делать из кода Basik блоки для FLProg? Это сложно? Что то может посоветуете почитать?
Есть пару видео в интернете,пару уроков но там не всё понятно, как организовать входа\выхода и что то там надо убирать из кода ,чтобы утилиты FLProg это дело брали на себя. У меня что то получается,но коряво и хоть и говорит программа что всё корректно, но не работает ничего.
Спасибо за ответ. Как Ваш проект,что говорили реализуете к весне?
Просто вопрос без просьб. Умеете делать из кода Basik блоки для FLProg? Это сложно? Что то может посоветуете почитать?
Есть пару видео в интернете,пару уроков но там не всё понятно, как организовать входа\выхода и что то там надо убирать из кода ,чтобы утилиты FLProg это дело брали на себя. У меня что то получается,но коряво и хоть и говорит программа что всё корректно, но не работает ничего.
Последний раз редактировалось Editor 10 фев 2026, 20:37, всего редактировалось 1 раз.
-
Editor
- Рядовой
- Сообщения: 41
- Зарегистрирован: 17 авг 2025, 17:33
- Имя: Ашот
- Благодарил (а): 4 раза
- Поблагодарили: 2 раза
Re: Помогите разобраться
У меня и правда были мысли о помехах.Выше я ответил как всё меня устроено,скорее всего. Потому что в доме в прихожей у меня стоит такой же точно,но там есть и будильники когда включаться и регулировать температуру ,то есть код ещё больше и всё без сбоев.ecoins писал(а): 10 фев 2026, 20:211.Это могут быть и помехи.Editor писал(а): 10 фев 2026, 19:34 Всем привет. В общем проект прост, обычный терморегулятор на ардуино нано. Не могу понять что происходит, уже два раз после включения работает недели две без проблем ,а потом вдруг включается и не выключается. После того как перезагрузил или обесточил и снова включил, всё снова работает пару недель и всё повторяется. Может кто может подсказать чём дело?
2.Но показалась странно, постоянная периодичность - две недели.
4.У Вас проблема похоже в проекте, который не может устойчиво работать на Nano.
Nano_OLED.png
5.У Вас занято 89% динамической памяти и есть предупреждения, что программа может работать не стабильно. Возможно у Вас версия 7.5.2 и тогда ситуация будет получше.
Версия 8.2.3 ,в других код просто не лезет в ардуино нано. И да,они уже у меня заканчиваются ,а 2040 я ещё толком не освоил,но один уже в наличии есть.Спасибо за ответ.
- montirovka
- Подполковник
- Сообщения: 1320
- Зарегистрирован: 15 фев 2021, 16:16
- Откуда: Геленджик
- Имя: Сергей
- Благодарил (а): 161 раз
- Поблагодарили: 519 раз
Re: Помогите разобраться
Решил проверить объем занимаемый проектом в версия FLprog 8.2.3. В IDE нет библиотеки ASOLED.h. Библиотеку взял здесь.
При компиляции проект использует 54% памяти. Почему на картинке выше 89% под вопросом. Может у меня не та библиотека? Проверить нет возможности в связи с отсутствием дисплея.
По поводу сбоев. Залог правильной работы это экранирование и правильное питание. Сейчас сильный солнечный фон. Это то же не стоит исключать из факторов воздействующих на работу.
При компиляции проект использует 54% памяти. Почему на картинке выше 89% под вопросом. Может у меня не та библиотека? Проверить нет возможности в связи с отсутствием дисплея.
По поводу сбоев. Залог правильной работы это экранирование и правильное питание. Сейчас сильный солнечный фон. Это то же не стоит исключать из факторов воздействующих на работу.
У вас нет необходимых прав для просмотра вложений в этом сообщении.
-
lfgjikjjyj
- Лейтенант
- Сообщения: 403
- Зарегистрирован: 27 мар 2025, 12:13
- Имя: Коля
- Поблагодарили: 134 раза
Re: Помогите разобраться
вероятно фрагментация памяти из за стринга
как вариант попробовать вставить отслеживание свободной оперативки
если стремится к нулю по мере непрерывной работы значит каждый раз выделяется новый участок памяти пока она не закончится
либо если это 328Р то сменить загрузчик на уно и добавить вачдог обязательно апаратный собственно для этого загрузчик и меняется
как вариант попробовать вставить отслеживание свободной оперативки
если стремится к нулю по мере непрерывной работы значит каждый раз выделяется новый участок памяти пока она не закончится
либо если это 328Р то сменить загрузчик на уно и добавить вачдог обязательно апаратный собственно для этого загрузчик и меняется
-
Editor
- Рядовой
- Сообщения: 41
- Зарегистрирован: 17 авг 2025, 17:33
- Имя: Ашот
- Благодарил (а): 4 раза
- Поблагодарили: 2 раза
Re: Помогите разобраться
Попробую с этой библиотекой,может будет по меньше объем проекта.Спасибо.montirovka писал(а): 11 фев 2026, 08:03 Решил проверить объем занимаемый проектом в версия FLprog 8.2.3. В IDE нет библиотеки ASOLED.h. Библиотеку взял здесь.
При компиляции проект использует 54% памяти.
2026-02-11_07-32-25.png
Почему на картинке выше 89% под вопросом. Может у меня не та библиотека? Проверить нет возможности в связи с отсутствием дисплея.
По поводу сбоев. Залог правильной работы это экранирование и правильное питание. Сейчас сильный солнечный фон. Это то же не стоит исключать из факторов воздействующих на работу.
-
Editor
- Рядовой
- Сообщения: 41
- Зарегистрирован: 17 авг 2025, 17:33
- Имя: Ашот
- Благодарил (а): 4 раза
- Поблагодарили: 2 раза
Re: Помогите разобраться
Я конечно чему то уже научился в FLProg и уже не начинающий ,но не знаю как делать это отслеживание. Может оно и не понадобится, но хотелось бы знать ,может пригодится в будущем. Что и где прочесть ,посоветуйте.lfgjikjjyj писал(а): 11 фев 2026, 09:07 вероятно фрагментация памяти из за стринга
как вариант попробовать вставить отслеживание свободной оперативки
если стремится к нулю по мере непрерывной работы значит каждый раз выделяется новый участок памяти пока она не закончится
либо если это 328Р то сменить загрузчик на уно и добавить вачдог обязательно апаратный собственно для этого загрузчик и меняется
Может посоветуете за одно какой то аппаратный вачдог?
Алиса предложила на таймере NE555 ,но может есть и другое ,более компактное решение?
-
Boggard
- Рядовой
- Сообщения: 76
- Зарегистрирован: 23 дек 2020, 01:10
- Имя: Андрей
- Благодарил (а): 22 раза
- Поблагодарили: 2 раза
Re: Помогите разобраться
Друзья, помогите пожалуйста! Есть задача. Считать от датчика , считать быстро. А он быстро считать ни как не хочет. Если прикрутить генератор ,считает ,зарраза, быстро ,а вот с кнопки ( тотже датчик (дифракционный ,ну это по стули ДА-НЕТ) Так же кнопка. чо ему нужно понять никак не могу! ЕСП32 ,типа быстро считать должен ,а он ...Прижмешь к минусу ,ждешь ,сработает ,отпустишь , прижмешь -ждешь -сработает... Ну , это ни в какие ворота. Есть способ ,как при простом касании минуса ,он бы тут же считал? Все пруфы ,вроде бы как приложил. Библиотека не влазит. ST7789_ESP8266_v1_3 Да ,не для 32ой ,но работает.
Код: Выделить всё
#include <TFT_eSPI.h>
TFT_eSPI tft= TFT_eSPI();
bool EN_31582123_5;
String Text_31582123_5;
int SIZE_31582123_5;
byte X_31582123_5;
byte Y_31582123_5;
bool EN_31582123_1;
String Text_31582123_1;
int SIZE_31582123_1;
byte X_31582123_1;
byte Y_31582123_1;
bool EN_31582123_2;
String Text_31582123_2;
int SIZE_31582123_2;
byte X_31582123_2;
byte Y_31582123_2;
bool EN_31582123_3;
String Text_31582123_3;
int SIZE_31582123_3;
byte X_31582123_3;
byte Y_31582123_3;
bool _tim1I = 0;
bool _tim1O = 0;
unsigned long _tim1P = 0UL;
bool _bounseInputD14S = 0;
bool _bounseInputD14O = 0;
unsigned long _bounseInputD14P = 0UL;
bool _count1I = 0;
unsigned long _count1_Value = 0UL;
bool _trgrt1 = 0;
bool _trgrt1I = 0;
bool _gen3I = 0;
bool _gen3O = 0;
unsigned long _gen3P = 0UL;
bool _tim3I = 0;
bool _tim3O = 0;
unsigned long _tim3P = 0UL;
bool _trgrt4 = 0;
bool _trgrt4I = 0;
bool _bounseInputD12S = 0;
bool _bounseInputD12O = 0;
unsigned long _bounseInputD12P = 0UL;
bool _gen1I = 0;
bool _gen1O = 0;
unsigned long _gen1P = 0UL;
bool _count3I = 0;
bool _count3_SCST = 0;
int _count3_Value = 0;
bool _bounseInputD22S = 0;
bool _bounseInputD22O = 0;
unsigned long _bounseInputD22P = 0UL;
void setup()
{
pinMode(14, INPUT_PULLUP);
pinMode(12, INPUT_PULLUP);
pinMode(22, INPUT_PULLUP);
_bounseInputD22O = digitalRead(22);
_bounseInputD14O = digitalRead(14);
_bounseInputD12O = digitalRead(12);
tft.init(); // инициализация дисплея
tft.setRotation(0); // вращение на90,180,240 градусов
tft.fillScreen(TFT_BLUE); // заливка цветом
Serial.begin(115200);
}
void loop()
{
bool _bounceInputTmpD22 = (digitalRead (22));
if (_bounseInputD22S)
{
if (millis() >= (_bounseInputD22P + 40))
{
_bounseInputD22O= _bounceInputTmpD22;
_bounseInputD22S=0;
}
}
else
{
if (_bounceInputTmpD22 != _bounseInputD22O)
{
_bounseInputD22S=1;
_bounseInputD22P = millis();
}
}
bool _bounceInputTmpD14 = (digitalRead (14));
if (_bounseInputD14S)
{
if (millis() >= (_bounseInputD14P + 40))
{
_bounseInputD14O= _bounceInputTmpD14;
_bounseInputD14S=0;
}
}
else
{
if (_bounceInputTmpD14 != _bounseInputD14O)
{
_bounseInputD14S=1;
_bounseInputD14P = millis();
}
}
bool _bounceInputTmpD12 = (digitalRead (12));
if (_bounseInputD12S)
{
if (millis() >= (_bounseInputD12P + 40))
{
_bounseInputD12O= _bounceInputTmpD12;
_bounseInputD12S=0;
}
}
else
{
if (_bounceInputTmpD12 != _bounseInputD12O)
{
_bounseInputD12S=1;
_bounseInputD12P = millis();
}
}
//Плата:1
//Наименование:УСТАВКА
EN_31582123_1 = !(0);
Text_31582123_1 = String("UCTABKA");
SIZE_31582123_1 = 4;
X_31582123_1 = 40;
Y_31582123_1 = 15;
if(EN_31582123_1)
{
tft.setCursor(X_31582123_1, Y_31582123_1); // x,y координаты текста
tft.setTextColor(TFT_WHITE,TFT_BLUE); // цвет текста
tft.setTextSize(SIZE_31582123_1); // размер текста - №2 (7*2 = 14 точек)
tft.print(Text_31582123_1); // вывод текста
delay(100);
}
if (!(_bounseInputD14O))
{
if (_tim1I)
{
if (_isTimer(_tim1P, 1000))
{
_tim1O = 1;
}
}
else
{
_tim1I =1;
_tim1P = millis();
}
}
else
{
_tim1O = 0;
_tim1I = 0;
}
if (_tim1O)
{
if (! _gen1I)
{
_gen1I = 1;
_gen1O = 1;
_gen1P = millis();
}
}
else
{
_gen1I = 0 ;
_gen1O= 0;
}
if (_gen1I)
{
if (_isTimer (_gen1P , 60))
{
_gen1P = millis();
_gen1O = ! _gen1O;
}
}
if (!(_bounseInputD14O))
{
if (_trgrt4I)
{
_trgrt4 = 0;
}
else
{
_trgrt4 = 1;
_trgrt4I = 1;
}
}
else
{
_trgrt4 = 0;
_trgrt4I = 0;
}
;
if (!(_bounseInputD12O))
{
if (_trgrt1I)
{
_trgrt1 = 0;
}
else
{
_trgrt1 = 1;
_trgrt1I = 1;
}
}
else
{
_trgrt1 = 0;
_trgrt1I = 0;
}
;
if (!(_bounseInputD12O))
{
if (_tim3I)
{
if (_isTimer(_tim3P, 1000))
{
_tim3O = 1;
}
}
else
{
_tim3I =1;
_tim3P = millis();
}
}
else
{
_tim3O = 0;
_tim3I = 0;
}
if (_tim3O)
{
if (! _gen3I)
{
_gen3I = 1;
_gen3O = 1;
_gen3P = millis();
}
}
else
{
_gen3I = 0 ;
_gen3O= 0;
}
if (_gen3I)
{
if (_isTimer (_gen3P , 250))
{
_gen3P = millis();
_gen3O = ! _gen3O;
}
}
if (((_gen1O) || (_trgrt4)))
{
if (! _count3I)
{
_count3I = 1;
_count3_Value = _count3_Value + 1;
}
}
else
{
_count3I = 0;
}
if (((_gen3O) || (_trgrt1)))
{
if (! _count3_SCST)
{
_count3_SCST = 1;
if(_count3_Value > 0)
{
_count3_Value = _count3_Value - 1;
}
}
}
else
{
_count3_SCST = 0;
}
if(_count3_Value <= 0)
{
_count3_Value = 0;
}
EN_31582123_5 = !(0);
Text_31582123_5 = (String(_count3_Value, DEC));
SIZE_31582123_5 = 5;
X_31582123_5 = 100;
Y_31582123_5 = 70;
if(EN_31582123_5)
{
tft.setCursor(X_31582123_5, Y_31582123_5); // x,y координаты текста
tft.setTextColor(TFT_GREEN,TFT_BLUE); // цвет текста
tft.setTextSize(SIZE_31582123_5); // размер текста - №2 (7*2 = 14 точек)
tft.print(Text_31582123_5); // вывод текста
delay(1);
}
//Плата:2
//Наименование:ДАТЧИК
EN_31582123_2 = !(0);
Text_31582123_2 = String("SCHETCHIK");
SIZE_31582123_2 = 4;
X_31582123_2 = 15;
Y_31582123_2 = 135;
if(EN_31582123_2)
{
tft.setCursor(X_31582123_2, Y_31582123_2); // x,y координаты текста
tft.setTextColor(TFT_WHITE,TFT_BLUE); // цвет текста
tft.setTextSize(SIZE_31582123_2); // размер текста - №2 (7*2 = 14 точек)
tft.print(Text_31582123_2); // вывод текста
delay(100);
}
if (_bounseInputD22O)
{
if (! _count1I)
{
_count1I = 1;
_count1_Value = _count1_Value + 1;
}
}
else
{
_count1I = 0;
}
EN_31582123_3 = !(0);
Text_31582123_3 = (String(_count1_Value, DEC));
SIZE_31582123_3 = 4;
X_31582123_3 = 80;
Y_31582123_3 = 190;
if(EN_31582123_3)
{
tft.setCursor(X_31582123_3, Y_31582123_3); // x,y координаты текста
tft.setTextColor(TFT_GREEN,TFT_BLUE); // цвет текста
tft.setTextSize(SIZE_31582123_3); // размер текста - №2 (7*2 = 14 точек)
tft.print(Text_31582123_3); // вывод текста
delay(1);
}
}
bool _isTimer(unsigned long startTime, unsigned long period)
{
unsigned long currentTime;
currentTime = millis();
if (currentTime>= startTime)
{
return (currentTime>=(startTime + period));
}
else
{
return (currentTime >=(4294967295-startTime+period));
}
}
У вас нет необходимых прав для просмотра вложений в этом сообщении.
- montirovka
- Подполковник
- Сообщения: 1320
- Зарегистрирован: 15 фев 2021, 16:16
- Откуда: Геленджик
- Имя: Сергей
- Благодарил (а): 161 раз
- Поблагодарили: 519 раз
-
slsl
- Лейтенант
- Сообщения: 403
- Зарегистрирован: 08 дек 2021, 22:41
- Имя: Вячеслав
- Благодарил (а): 30 раз
- Поблагодарили: 76 раз
Re: Помогите разобраться
TPL5010DDCREditor писал(а): 11 фев 2026, 20:04
Может посоветуете за одно какой то аппаратный вачдог?
Алиса предложила на таймере NE555 ,но может есть и другое ,более компактное решение?
-
Editor
- Рядовой
- Сообщения: 41
- Зарегистрирован: 17 авг 2025, 17:33
- Имя: Ашот
- Благодарил (а): 4 раза
- Поблагодарили: 2 раза
Кто сейчас на конференции
Сейчас этот форум просматривают: нет зарегистрированных пользователей и 2 гостя
