Прошу помощи в отладке Arduino Mega 2560

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

вот этот код, там стрелка вверх перекинет на сообщение

напоминаю мы тестируем код что бы в мониторе порта увидеть данные которые были до сбоя, верно ?

Только что выявил

  // ===== ПРИНУДИТЕЛЬНЫЙ СБРОС ТАЙМЕРА =====
  //Timer = 0;
  // =====================================

Если закомментировать //Timer = 0 - то код загружается без ошибки. Речь о том варианте кода, который не грузился… может это даст какие-то мысли

PPeterr давайте загрузим так… и посмотрим монитор порта…

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

Иду в сообщение 149 копирую оттуда код. Ставлю две черты //Timer = 0 и загружаю в контроллер. Подключаю провода, включаю систему, наблюдаю “серийный порт”…
Сейчас займусь

Собрал провода. Загрузил скетч. Запустил. Проработало недолго - даже компрессор не успел запуститься. Я не поверил своим глазам. По новой запустил, с монитором порта - то же самое - довольно быстро вырубилось всё.
Это весь лог, который записал монитор порта:

Спойлер
MCUSR=0x0
loop millis=1601 Timer=0
loop millis=1601 Timer=0
loop millis=1602 Timer=0
loop millis=1627 Timer=0
loop millis=1654 Timer=0
loop millis=1681 Timer=0
loop millis=1708 Timer=0
loop millis=1735 Timer=0
loop millis=1762 Timer=0
loop millis=1789 Timer=0
loop millis=1816 Timer=0
loop millis=1843 Timer=0
loop millis=1870 Timer=0
loop millis=1897 Timer=0
loop millis=1925 Timer=0
loop millis=1951 Timer=0
loop millis=1978 Timer=0
loop millis=2006 Timer=0
loop millis=2032 Timer=0
loop millis=2060 Timer=0
loop millis=2086 Timer=0
loop millis=2113 Timer=0
loop millis=2141 Timer=0
loop millis=2167 Timer=0
loop millis=2195 Timer=0
loop millis=2222 Timer=0
loop millis=2248 Timer=0
loop millis=2276 Timer=0
loop millis=2302 Timer=0
loop millis=2330 Timer=0
loop millis=2357 Timer=0
loop millis=2384 Timer=0
loop millis=2411 Timer=0
loop millis=2438 Timer=0
loop millis=2465 Timer=0
loop millis=2492 Timer=0
loop millis=2520 Timer=0
loop millis=2546 Timer=0
loop millis=2573 Timer=0
loop millis=2600 Timer=0
loop millis=2627 Timer=0
loop millis=2655 Timer=0
loop millis=2681 Timer=0
loop millis=2708 Timer=0
loop millis=2736 Timer=0
loop millis=2762 Timer=0
loop millis=2790 Timer=0
loop millis=2817 Timer=0
loop millis=2843 Timer=0
loop millis=2871 Timer=0
loop millis=2897 Timer=0
loop millis=2925 Timer=0
loop millis=2952 Timer=0
loop millis=2978 Timer=0
loop millis=3006 Timer=0
>>> Step 1: resetTemp
loop millis=3057 Timer=0
loop millis=3084 Timer=0
loop millis=3110 Timer=0
loop millis=3138 Timer=0
loop millis=3165 Timer=0
loop millis=3192 Timer=0
loop millis=3219 Timer=0
loop millis=3246 Timer=0
loop millis=3273 Timer=0
loop millis=3300 Timer=0
loop millis=3328 Timer=0
loop millis=3354 Timer=0
loop millis=3381 Timer=0
loop millis=3408 Timer=0
loop millis=3435 Timer=0
loop millis=3463 Timer=0
loop millis=3489 Timer=0
loop millis=3517 Timer=0
loop millis=3544 Timer=0
loop millis=3570 Timer=0
loop millis=3598 Timer=0
loop millis=3624 Timer=0
loop millis=3652 Timer=0
loop millis=3679 Timer=0
loop millis=3705 Timer=0
loop millis=3733 Timer=0
loop millis=3760 Timer=0
loop millis=3787 Timer=0
loop millis=3814 Timer=0
loop millis=3841 Timer=0
loop millis=3868 Timer=0
loop millis=3895 Timer=0
loop millis=3922 Timer=0
loop millis=3949 Timer=0
loop millis=3976 Timer=0
loop millis=4003 Timer=0
loop millis=4030 Timer=0
loop millis=4058 Timer=0
loop millis=4084 Timer=0
loop millis=4111 Timer=0
loop millis=4139 Timer=0
loop millis=4165 Timer=0
loop millis=4193 Timer=0
loop millis=4219 Timer=0
loop millis=4246 Timer=0
loop millis=4274 Timer=0
loop millis=4300 Timer=0
loop millis=4328 Timer=0
loop millis=4355 Timer=0
loop millis=4382 Timer=0
loop millis=4409 Timer=0
loop millis=4435 Timer=0
loop millis=4463 Timer=0
loop millis=4490 Timer=0
loop millis=4517 Timer=0
loop millis=4544 Timer=0
loop millis=4571 Timer=0
loop millis=4598 Timer=0
loop millis=4625 Timer=0
loop millis=4653 Timer=0
loop millis=4679 Timer=0
loop millis=4706 Timer=0
loop millis=4733 Timer=0
loop millis=4760 Timer=0
loop millis=4788 Timer=0
loop millis=4814 Timer=0
loop millis=4841 Timer=0
loop millis=4869 Timer=0
loop millis=4895 Timer=0
loop millis=4923 Timer=0
loop millis=4950 Timer=0
loop millis=4976 Timer=0
loop millis=5004 Timer=0
>>> Step 2: gettingTemp
loop millis=5112 Timer=0
loop millis=5112 Timer=0
loop millis=5113 Timer=0
loop millis=5138 Timer=0
loop millis=5166 Timer=0
loop millis=5192 Timer=0
loop millis=5219 Timer=0
loop millis=5246 Timer=0
loop millis=5273 Timer=0
loop millis=5301 Timer=0
loop millis=5327 Timer=0
loop millis=5354 Timer=0
loop millis=5382 Timer=0
loop millis=5408 Timer=0
loop millis=5436 Timer=0
loop millis=5463 Timer=0
loop millis=5490 Timer=0
loop millis=5517 Timer=0
loop millis=5543 Timer=0
loop millis=5571 Timer=0
loop millis=5598 Timer=0
loop millis=5625 Timer=0
loop millis=5652 Timer=0
loop millis=5679 Timer=0
loop millis=5706 Timer=0
loop millis=5733 Timer=0
loop millis=5761 Timer=0
loop millis=5787 Timer=0
loop millis=5814 Timer=0
loop millis=5841 Timer=0
loop millis=5868 Timer=0
loop millis=5896 Timer=0
loop millis=5922 Timer=0
loop millis=5949 Timer=0
loop millis=5977 Timer=0
loop millis=6003 Timer=0
loop millis=6031 Timer=0
loop millis=6057 Timer=0
loop millis=6084 Timer=0
loop millis=6112 Timer=0
loop millis=6138 Timer=0
loop millis=6166 Timer=0
loop millis=6193 Timer=0
loop millis=6219 Timer=0
loop millis=6247 Timer=0
loop millis=6274 Timer=0
loop millis=6301 Timer=0
loop millis=6328 Timer=0
loop millis=6355 Timer=0
loop millis=6382 Timer=0
loop millis=6409 Timer=0
loop millis=6436 Timer=0
loop millis=6463 Timer=0
loop millis=6491 Timer=0
loop millis=6517 Timer=0
loop millis=6544 Timer=0
loop millis=6572 Timer=0
loop millis=6598 Timer=0
loop millis=6626 Timer=0
loop millis=6652 Timer=0
loop millis=6679 Timer=0
loop millis=6707 Timer=0
loop millis=6733 Timer=0
loop millis=6761 Timer=0
loop millis=6788 Timer=0
loop millis=6814 Timer=0
loop millis=6842 Timer=0
loop millis=6868 Timer=0
loop millis=6896 Timer=0
loop millis=6923 Timer=0
loop millis=6949 Timer=0
loop millis=6977 Timer=0
loop millis=7004 Timer=0
>>> Step 3 START
>>> Step 3 END
loop millis=7174 Timer=0
loop millis=7175 Timer=0
loop millis=7189 Timer=0
loop millis=7217 Timer=0
loop millis=7243 Timer=0
loop millis=7271 Timer=0
loop millis=7298 Timer=0
loop millis=7325 Timer=0
loop millis=7352 Timer=0
loop millis=7378 Timer=0
loop millis=7406 Timer=0
loop millis=7433 Timer=0
loop millis=7460 Timer=0
loop millis=7487 Timer=0
loop millis=7514 Timer=0
loop millis=7541 Timer=0
loop millis=7568 Timer=0
loop millis=7596 Timer=0
loop millis=7622 Timer=0
loop millis=7649 Timer=0
loop millis=7676 Timer=0
loop millis=7703 Timer=0
loop millis=7731 Timer=0
loop millis=7757 Timer=0
loop millis=7784 Timer=0
loop millis=7812 Timer=0
loop millis=7838 Timer=0
loop millis=7866 Timer=0
loop millis=7892 Timer=0
loop millis=7919 Timer=0
loop millis=7947 Timer=0
loop millis=7973 Timer=0
loop millis=8001 Timer=0
loop millis=8028 Timer=0
loop millis=8054 Timer=0
loop millis=8082 Timer=0
loop millis=8109 Timer=0
loop millis=8136 Timer=0
loop millis=8163 Timer=0
loop millis=8190 Timer=0
loop millis=8217 Timer=0
loop millis=8244 Timer=0
loop millis=8271 Timer=0
loop millis=8298 Timer=0
loop millis=8326 Timer=0
loop millis=8352 Timer=0
loop millis=8379 Timer=0
loop millis=8407 Timer=0
loop millis=8433 Timer=0
loop millis=8461 Timer=0
loop millis=8487 Timer=0
loop millis=8514 Timer=0
loop millis=8542 Timer=0
loop millis=8568 Timer=0
loop millis=8596 Timer=0
loop millis=8623 Timer=0
loop millis=8649 Timer=0
loop millis=8677 Timer=0
loop millis=8704 Timer=0
loop millis=8731 Timer=0
loop millis=8758 Timer=0
loop millis=8784 Timer=0
loop millis=8812 Timer=0
loop millis=8839 Timer=0
loop millis=8866 Timer=0
loop millis=8893 Timer=0
loop millis=8920 Timer=0
loop millis=8947 Timer=0
loop millis=8974 Timer=0
loop millis=9001 Timer=0
>>> Step 4: Relays
loop millis=9049 Timer=0
loop millis=9076 Timer=0
loop millis=9103 Timer=0
loop millis=9131 Timer=0
loop millis=9157 Timer=0
loop millis=9184 Timer=0
loop millis=9211 Timer=0
loop millis=9238 Timer=0
loop millis=9266 Timer=0
loop millis=9292 Timer=0
loop millis=9319 Timer=0
loop millis=9347 Timer=0
loop millis=9373 Timer=0
loop millis=9401 Timer=0
loop millis=9427 Timer=0
loop millis=9455 Timer=0
loop millis=9482 Timer=0
loop millis=9508 Timer=0
loop millis=9536 Timer=0
loop millis=9563 Timer=0
loop millis=9590 Timer=0
loop millis=9617 Timer=0
loop millis=9644 Timer=0
loop millis=9671 Timer=0
loop millis=9698 Timer=0
loop millis=9725 Timer=0
loop millis=9752 Timer=0
loop millis=9779 Timer=0
loop millis=9806 Timer=0
loop millis=9833 Timer=0
loop millis=9861 Timer=0
loop millis=9887 Timer=0
loop millis=9914 Timer=0
loop millis=9942 Timer=0
loop millis=9968 Timer=0
loop millis=9996 Timer=0
>>> Step 5: Graphics reset, Cycle END
loop millis=11823 Timer=10050
loop millis=11824 Timer=10050
loop millis=11832 Timer=10050
loop millis=11865 Timer=10050
loop millis=11896 Timer=10050
loop millis=11929 Timer=10050
loop millis=11961 Timer=10050
loop millis=11994 Timer=10050
loop millis=12025 Timer=10050
loop millis=12058 Timer=10050
loop millis=12090 Timer=10050
loop millis=12123 Timer=10050
loop millis=12154 Timer=10050
loop millis=12187 Timer=10050
loop millis=12219 Timer=10050
loop millis=12252 Timer=10050
loop millis=12283 Timer=10050
loop millis=12316 Timer=10050
loop millis=12348 Timer=10050
loop millis=12380 Timer=10050
loop millis=12412 Timer=10050
loop millis=12444 Timer=10050
loop millis=12477 Timer=10050
loop millis=12509 Timer=10050
loop millis=12541 Timer=10050
loop millis=12573 Timer=10050
loop millis=12606 Timer=10050
loop millis=12638 Timer=10050
loop millis=12670 Timer=10050
loop millis=12702 Timer=10050
loop millis=12735 Timer=10050
loop millis=12767 Timer=10050
loop millis=12800 Timer=10050
loop millis=12831 Timer=10050
loop millis=12864 Timer=10050
loop millis=12896 Timer=10050
loop millis=12929 Timer=10050
loop millis=12960 Timer=10050
loop millis=12993 Timer=10050
loop millis=13025 Timer=10050
loop millis=13058 Timer=10050
>>> Step 1: resetTemp
loop millis=13114 Timer=10050
loop millis=13146 Timer=10050
loop millis=13177 Timer=10050
loop millis=13210 Timer=10050
loop millis=13242 Timer=10050
loop millis=13275 Timer=10050
loop millis=13306 Timer=10050
loop millis=13339 Timer=10050
loop millis=13371 Timer=10050
loop millis=13404 Timer=10050
loop millis=13435 Timer=10050
loop millis=13468 Timer=10050
loop millis=13500 Timer=10050
loop millis=13533 Timer=10050
loop millis=13564 Timer=10050
loop millis=13597 Timer=10050
loop millis=13629 Timer=10050
loop millis=13662 Timer=10050
loop millis=13693 Timer=10050
loop millis=13726 Timer=10050
loop millis=13758 Timer=10050
loop millis=13791 Timer=10050
loop millis=13822 Timer=10050
loop millis=13855 Timer=10050
loop millis=13887 Timer=10050
loop millis=13920 Timer=10050
loop millis=13952 Timer=10050
loop millis=13984 Timer=10050
loop millis=14016 Timer=10050
loop millis=14049 Timer=10050
loop millis=14081 Timer=10050
loop millis=14113 Timer=10050
loop millis=14145 Timer=10050
loop millis=14177 Timer=10050
loop millis=14210 Timer=10050
loop millis=14241 Timer=10050
loop millis=14274 Timer=10050
loop millis=14306 Timer=10050
loop millis=14339 Timer=10050
loop millis=14370 Timer=10050
loop millis=14403 Timer=10050
loop millis=14435 Timer=10050
loop millis=14468 Timer=10050
loop millis=14499 Timer=10050
loop millis=14532 Timer=10050
loop millis=14564 Timer=10050
loop millis=14597 Timer=10050
loop millis=14628 Timer=10050
loop millis=14661 Timer=10050
loop millis=14693 Timer=10050
loop millis=14726 Timer=10050
loop millis=14757 Timer=10050
loop millis=14790 Timer=10050
loop millis=14822 Timer=10050
loop millis=14855 Timer=10050
loop millis=14886 Timer=10050
loop millis=14919 Timer=10050
loop millis=14951 Timer=10050
loop millis=14984 Timer=10050
loop millis=15015 Timer=10050
loop millis=15048 Timer=10050
>>> Step 2: gettingTemp
loop millis=15162 Timer=10050
loop millis=15162 Timer=10050
loop millis=15171 Timer=10050
loop millis=15203 Timer=10050
loop millis=15236 Timer=10050
loop millis=15267 Timer=10050
loop millis=15300 Timer=10050
loop millis=15332 Timer=10050
loop millis=15365 Timer=10050
loop millis=15396 Timer=10050
loop millis=15429 Timer=10050
loop millis=15461 Timer=10050
loop millis=15494 Timer=10050
loop millis=15525 Timer=10050
loop millis=15558 Timer=10050
loop millis=15590 Timer=10050
loop millis=15623 Timer=10050
loop millis=15654 Timer=10050
loop millis=15687 Timer=10050
loop millis=15719 Timer=10050
loop millis=15751 Timer=10050
loop millis=15783 Timer=10050
loop millis=15815 Timer=10050
loop millis=15848 Timer=10050
loop millis=15880 Timer=10050
loop millis=15912 Timer=10050
loop millis=15944 Timer=10050
loop millis=15977 Timer=10050
loop millis=16009 Timer=10050
loop millis=16041 Timer=10050
loop millis=16073 Timer=10050
loop millis=16106 Timer=10050
loop millis=16138 Timer=10050
loop millis=16171 Timer=10050
loop millis=16202 Timer=10050
loop millis=16235 Timer=10050
loop millis=16267 Timer=10050
loop millis=16300 Timer=10050
loop millis=16331 Timer=10050
loop millis=16364 Timer=10050
loop millis=16396 Timer=10050
loop millis=16429 Timer=10050
loop millis=16460 Timer=10050
loop millis=16493 Timer=10050
loop millis=16525 Timer=10050
loop millis=16558 Timer=10050
loop millis=16589 Timer=10050
loop millis=16622 Timer=10050
loop millis=16654 Timer=10050
loop millis=16687 Timer=10050
loop millis=16718 Timer=10050
loop millis=16750 Timer=10050
loop millis=16783 Timer=10050
loop millis=16815 Timer=10050
loop millis=16847 Timer=10050
loop millis=16879 Timer=10050
loop millis=16912 Timer=10050
loop millis=16944 Timer=10050
loop millis=16976 Timer=10050
loop millis=17008 Timer=10050
loop millis=17041 Timer=10050
>>> Step 3 START
>>> Step 3 END
loop millis=17217 Timer=10050
loop millis=17217 Timer=10050
loop millis=17243 Timer=10050
loop millis=17274 Timer=10050
loop millis=17307 Timer=10050
loop millis=17339 Timer=10050
loop millis=17372 Timer=10050
loop millis=17403 Timer=10050
loop millis=17436 Timer=10050
loop millis=17468 Timer=10050
loop millis=17501 Timer=10050
loop millis=17532 Timer=10050
loop millis=17565 Timer=10050
loop millis=17597 Timer=10050
loop millis=17630 Timer=10050
loop millis=17661 Timer=10050
loop millis=17694 Timer=10050
loop millis=17726 Timer=10050
loop millis=17759 Timer=10050
loop millis=17790 Timer=10050
loop millis=17823 Timer=10050
loop millis=17855 Timer=10050
loop millis=17888 Timer=10050
loop millis=17920 Timer=10050
loop millis=17952 Timer=10050
loop millis=17984 Timer=10050
loop millis=18017 Timer=10050
loop millis=18049 Timer=10050
loop millis=18081 Timer=10050
loop millis=18113 Timer=10050
loop millis=18146 Timer=10050
loop millis=18178 Timer=10050
loop millis=18210 Timer=10050
loop millis=18242 Timer=10050
loop millis=18274 Timer=10050
loop millis=18307 Timer=10050
loop millis=18338 Timer=10050
loop millis=18371 Timer=10050
loop millis=18403 Timer=10050
loop millis=18436 Timer=10050
loop millis=18467 Timer=10050
loop millis=18500 Timer=10050
loop millis=18532 Timer=10050
loop millis=18565 Timer=10050
loop millis=18596 Timer=10050
loop millis=18629 Timer=10050
loop millis=18661 Timer=10050
loop millis=18694 Timer=10050
loop millis=18725 Timer=10050
loop millis=18758 Timer=10050
loop millis=18790 Timer=10050
loop millis=18823 Timer=10050
loop millis=18854 Timer=10050
loop millis=18887 Timer=10050
loop millis=18919 Timer=10050
loop millis=18952 Timer=10050
loop millis=18983 Timer=10050
loop millis=19016 Timer=10050
loop millis=19048 Timer=10050
>>> Step 4: Relays
loop millis=19101 Timer=10050
loop millis=19133 Timer=10050
loop millis=19166 Timer=10050
loop millis=19197 Timer=10050
loop millis=19230 Timer=10050
loop millis=19262 Timer=10050
loop millis=19295 Timer=10050
loop millis=19326 Timer=10050
loop millis=19359 Timer=10050
loop millis=19391 Timer=10050
loop millis=19424 Timer=10050
loop millis=19456 Timer=10050
loop millis=19488 Timer=10050
loop millis=19520 Timer=10050
loop millis=19553 Timer=10050
loop millis=19585 Timer=10050
loop millis=19617 Timer=10050
loop millis=19649 Timer=10050
loop millis=19682 Timer=10050
loop millis=19714 Timer=10050
loop millis=19746 Timer=10050
loop millis=19778 Timer=10050
loop millis=19811 Timer=10050
loop millis=19843 Timer=10050
loop millis=19875 Timer=10050
loop millis=19907 Timer=10050
loop millis=19939 Timer=10050
loop millis=19972 Timer=10050
loop millis=20003 Timer=10050
loop millis=20036 Timer=10050
>>> Step 5: Graphics reset, Cycle END
loop millis=20109 Timer=20097
loop millis=20142 Timer=20097
loop millis=20173 Timer=20097
loop millis=20205 Timer=20097
loop millis=20238 Timer=20097
loop millis=20270 Timer=20097
loop millis=20302 Timer=20097
loop millis=20334 Timer=20097
loop millis=20367 Timer=20097
loop millis=20399 Timer=20097
loop millis=20431 Timer=20097
loop millis=20463 Timer=20097
loop millis=20496 Timer=20097
loop millis=20528 Timer=20097
loop millis=20560 Timer=20097
loop millis=20592 Timer=20097
loop millis=20625 Timer=20097
loop millis=20657 Timer=20097
loop millis=20689 Timer=20097
loop millis=20721 Timer=20097
loop millis=20754 Timer=20097
loop millis=20786 Timer=20097
loop millis=20818 Timer=20097
loop millis=20850 Timer=20097
loop millis=20883 Timer=20097
loop millis=20915 Timer=20097
loop millis=20947 Timer=20097
loop millis=20979 Timer=20097
loop millis=21012 Timer=20097
loop millis=21044 Timer=20097
loop millis=21076 Timer=20097
loop millis=21108 Timer=20097
loop millis=21141 Timer=20097
loop millis=21173 Timer=20097
loop millis=21206 Timer=20097
loop millis=21237 Timer=20097
loop millis=21269 Timer=20097
loop millis=21302 Timer=20097
loop millis=21334 Timer=20097
loop millis=21366 Timer=20097
loop millis=21398 Timer=20097
loop millis=21431 Timer=20097
loop millis=21463 Timer=20097
loop millis=21495 Timer=20097
loop millis=21527 Timer=20097
loop millis=21560 Timer=20097
loop millis=21592 Timer=20097
loop millis=21624 Timer=20097
loop millis=21656 Timer=20097
loop millis=21689 Timer=20097
loop millis=21721 Timer=20097
loop millis=21753 Timer=20097
loop millis=21785 Timer=20097
loop millis=21818 Timer=20097
loop millis=21850 Timer=20097
loop millis=21882 Timer=20097
loop millis=21914 Timer=20097
loop millis=21947 Timer=20097
loop millis=21979 Timer=20097
loop millis=22011 Timer=20097
loop millis=22043 Timer=20097
loop millis=22076 Timer=20097
loop millis=22108 Timer=20097
loop millis=22140 Timer=20097
loop millis=22172 Timer=20097
loop millis=22205 Timer=20097
loop millis=22237 Timer=20097
loop millis=22268 Timer=20097
loop millis=22301 Timer=20097
loop millis=22333 Timer=20097
loop millis=22366 Timer=20097
loop millis=22397 Timer=20097
loop millis=22430 Timer=20097
loop millis=22462 Timer=20097
loop millis=22495 Timer=20097
loop millis=22526 Timer=20097
loop millis=22559 Timer=20097
loop millis=22591 Timer=20097
loop millis=22624 Timer=20097
loop millis=22656 Timer=20097
loop millis=22688 Timer=20097
loop millis=22720 Timer=20097
loop millis=22753 Timer=20097
loop millis=22785 Timer=20097
loop millis=22817 Timer=20097
loop millis=22849 Timer=20097
loop millis=22882 Timer=20097
loop millis=22914 Timer=20097
loop millis=22946 Timer=20097
loop millis=22978 Timer=20097
loop millis=23011 Timer=20097
loop millis=23043 Timer=20097
loop millis=23075 Timer=20097
loop millis=23107 Timer=20097
>>> Step 1: resetTemp
loop millis=23163 Timer=20097
loop millis=23195 Timer=20097
loop millis=23228 Timer=20097
loop millis=23260 Timer=20097
loop millis=23292 Timer=20097
loop millis=23324 Timer=20097
loop millis=23357 Timer=20097
loop millis=23389 Timer=20097
loop millis=23421 Timer=20097
loop millis=23453 Timer=20097
loop millis=23486 Timer=20097
loop millis=23518 Timer=20097
loop millis=23550 Timer=20097
loop millis=23582 Timer=20097
loop millis=23615 Timer=20097
loop millis=23647 Timer=20097
loop millis=23680 Timer=20097
loop millis=23711 Timer=20097
loop millis=23744 Timer=20097
loop millis=23776 Timer=20097
loop millis=23809 Timer=20097
loop millis=23840 Timer=20097
loop millis=23873 Timer=20097
loop millis=23905 Timer=20097
loop millis=23938 Timer=20097
loop millis=23969 Timer=20097
loop millis=24002 Timer=20097
loop millis=24034 Timer=20097
loop millis=24066 Timer=20097
loop millis=24098 Timer=20097
loop millis=24130 Timer=20097
loop millis=24163 Timer=20097
loop millis=24195 Timer=20097
loop millis=24227 Timer=20097
loop millis=24259 Timer=20097
loop millis=24292 Timer=20097
loop millis=24324 Timer=20097
loop millis=24356 Timer=20097
loop millis=24388 Timer=20097
loop millis=24421 Timer=20097
loop millis=24453 Timer=20097
loop millis=24485 Timer=20097
loop millis=24517 Timer=20097
loop millis=24550 Timer=20097
loop millis=24582 Timer=20097
loop millis=24614 Timer=20097
loop millis=24646 Timer=20097
loop millis=24679 Timer=20097
loop millis=24711 Timer=20097
loop millis=24743 Timer=20097
loop millis=24775 Timer=20097
loop millis=24808 Timer=20097
loop millis=24840 Timer=20097
loop millis=24872 Timer=20097
loop millis=24904 Timer=20097
loop millis=24937 Timer=20097
loop millis=24969 Timer=20097
loop millis=25001 Timer=20097
loop millis=25033 Timer=20097
loop millis=25066 Timer=20097
loop millis=25098 Timer=20097
>>> Step 2: gettingTemp
loop millis=25211 Timer=20097
loop millis=25212 Timer=20097
loop millis=25221 Timer=20097
loop millis=25253 Timer=20097
loop millis=25285 Timer=20097
loop millis=25318 Timer=20097
loop millis=25350 Timer=20097
loop millis=25382 Timer=20097
loop millis=25414 Timer=20097
loop millis=25447 Timer=20097
loop millis=25479 Timer=20097
loop millis=25511 Timer=20097
loop millis=25543 Timer=20097
loop millis=25575 Timer=20097
loop millis=25608 Timer=20097
loop millis=25639 Timer=20097
loop millis=25672 Timer=20097
loop millis=25704 Timer=20097
loop millis=25737 Timer=20097
loop millis=25768 Timer=20097
loop millis=25801 Timer=20097
loop millis=25833 Timer=20097
loop millis=25866 Timer=20097
loop millis=25897 Timer=20097
loop millis=25930 Timer=20097
loop millis=25962 Timer=20097
loop millis=25995 Timer=20097
loop millis=26027 Timer=20097
loop millis=26059 Timer=20097
loop millis=26091 Timer=20097
loop millis=26124 Timer=20097
loop millis=26156 Timer=20097
loop millis=26188 Timer=20097
loop millis=26220 Timer=20097
loop millis=26253 Timer=20097
loop millis=26285 Timer=20097
loop millis=26317 Timer=20097
loop millis=26349 Timer=20097
loop millis=26382 Timer=20097
loop millis=26414 Timer=20097
loop millis=26446 Timer=20097
loop millis=26478 Timer=20097
loop millis=26511 Timer=20097
loop millis=26543 Timer=20097
loop millis=26575 Timer=20097
loop millis=26607 Timer=20097
loop millis=26639 Timer=20097
loop millis=26672 Timer=20097
loop millis=26703 Timer=20097
loop millis=26736 Timer=20097
loop millis=26768 Timer=20097
loop millis=26801 Timer=20097
loop millis=26832 Timer=20097
loop millis=26865 Timer=20097
loop millis=26897 Timer=20097
loop millis=26930 Timer=20097
loop millis=26961 Timer=20097
loop millis=26994 Timer=20097
loop millis=27026 Timer=20097
loop millis=27059 Timer=20097
loop millis=27090 Timer=20097
>>> Step 3 START
>>> Step 3 END
loop millis=27268 Timer=20097
loop millis=27268 Timer=20097
loop millis=27293 Timer=20097
loop millis=27325 Timer=20097
loop millis=27358 Timer=20097
loop millis=27389 Timer=20097
loop millis=27422 Timer=20097
loop millis=27454 Timer=20097
loop millis=27487 Timer=20097
loop millis=27518 Timer=20097
loop millis=27551 Timer=20097
loop millis=27583 Timer=20097
loop millis=27616 Timer=20097
loop millis=27648 Timer=20097
loop millis=27680 Timer=20097
loop millis=27712 Timer=20097
loop millis=27745 Timer=20097
loop millis=27777 Timer=20097
loop millis=27809 Timer=20097
loop millis=27841 Timer=20097
loop millis=27873 Timer=20097
loop millis=27906 Timer=20097
loop millis=27937 Timer=20097
loop millis=27970 Timer=20097
loop millis=28002 Timer=20097
loop millis=28035 Timer=20097
loop millis=28066 Timer=20097
loop millis=28099 Timer=20097
loop millis=28131 Timer=20097
loop millis=28164 Timer=20097
loop millis=28195 Timer=20097
loop millis=28228 Timer=20097
loop millis=28260 Timer=20097
loop millis=28293 Timer=20097
loop millis=28324 Timer=20097
loop millis=28357 Timer=20097
loop millis=28389 Timer=20097
loop millis=28422 Timer=20097
loop millis=28453 Timer=20097
loop millis=28486 Timer=20097
loop millis=28518 Timer=20097
loop millis=28551 Timer=20097
loop millis=28582 Timer=20097
loop millis=28615 Timer=20097
loop millis=28647 Timer=20097
loop millis=28680 Timer=20097
loop millis=28711 Timer=20097
loop millis=28744 Timer=20097
loop millis=28776 Timer=20097
loop millis=28809 Timer=20097
loop millis=28840 Timer=20097
loop millis=28872 Timer=20097
loop millis=28905 Timer=20097
loop millis=28937 Timer=20097
loop millis=28969 Timer=20097
loop millis=29001 Timer=20097
loop millis=29034 Timer=20097
loop millis=29066 Timer=20097
loop millis=29099 Timer=20097
>>> Step 4: Relays
loop millis=29152 Timer=20097
loop millis=29184 Timer=20097
loop millis=29216 Timer=20097
loop millis=29248 Timer=20097
loop millis=29281 Timer=20097
loop millis=29313 Timer=20097
loop millis=29345 Timer=20097
loop millis=29377 Timer=20097
loop millis=29410 Timer=20097
loop millis=29442 Timer=20097
loop millis=29474 Timer=20097
loop millis=29506 Timer=20097
loop millis=29538 Timer=20097
loop millis=29571 Timer=20097
loop millis=29602 Timer=20097
loop millis=29635 Timer=20097
loop millis=29667 Timer=20097
loop millis=29700 Timer=20097
loop millis=29731 Timer=20097
loop millis=29764 Timer=20097
loop millis=29796 Timer=20097
loop millis=29829 Timer=20097
loop millis=29860 Timer=20097
loop millis=29893 Timer=20097
loop millis=29925 Timer=20097
loop millis=29958 Timer=20097
loop millis=29989 Timer=20097
loop millis=30022 Timer=20097
loop millis=30054 Timer=20097
loop millis=30087 Timer=20097
>>> Step 5: Graphics reset, Cycle END
loop millis=30159 Timer=30147
loop millis=30191 Timer=30147
loop millis=30224 Timer=30147
loop millis=30256 Timer=30147
loop millis=30288 Timer=30147
loop millis=30320 Timer=30147
loop millis=30353 Timer=30147
loop millis=30385 Timer=30147
loop millis=30417 Timer=30147
loop millis=30449 Timer=30147
loop millis=30482 Timer=30147
loop millis=30514 Timer=30147
loop millis=30546 Timer=30147
loop millis=30578 Timer=30147
loop millis=30611 Timer=30147
loop millis=30643 Timer=30147
loop millis=30675 Timer=30147
loop millis=30707 Timer=30147
loop millis=30740 Timer=30147
loop millis=30772 Timer=30147
loop millis=30804 Timer=30147
loop millis=30836 Timer=30147
loop millis=30868 Timer=30147
loop millis=30901 Timer=30147
loop millis=30932 Timer=30147
loop millis=30965 Timer=30147
loop millis=30997 Timer=30147
loop millis=31030 Timer=30147
loop millis=31062 Timer=30147
loop millis=31094 Timer=30147
loop millis=31126 Timer=30147
loop millis=31159 Timer=30147
loop millis=31191 Timer=30147
loop millis=31223 Timer=30147
loop millis=31255 Timer=30147
loop millis=31288 Timer=30147
loop millis=31320 Timer=30147
loop millis=31352 Timer=30147
loop millis=31384 Timer=30147
loop millis=31417 Timer=30147
loop millis=31449 Timer=30147
loop millis=31481 Timer=30147
loop millis=31513 Timer=30147
loop millis=31546 Timer=30147
loop millis=31578 Timer=30147
loop millis=31610 Timer=30147
loop millis=31642 Timer=30147
loop millis=31675 Timer=30147
loop millis=31707 Timer=30147
loop millis=31739 Timer=30147
loop millis=31771 Timer=30147
loop millis=31804 Timer=30147
loop millis=31836 Timer=30147
loop millis=31867 Timer=30147
loop millis=31900 Timer=30147
loop millis=31932 Timer=30147
loop millis=31965 Timer=30147
loop millis=31996 Timer=30147
loop millis=32029 Timer=30147
loop millis=32061 Timer=30147
loop millis=32094 Timer=30147
loop millis=32125 Timer=30147
loop millis=32158 Timer=30147
loop millis=32190 Timer=30147
loop millis=32223 Timer=30147
loop millis=32254 Timer=30147
loop millis=32287 Timer=30147
loop millis=32319 Timer=30147
loop millis=32352 Timer=30147
loop millis=32384 Timer=30147
loop millis=32416 Timer=30147
loop millis=32448 Timer=30147
loop millis=32481 Timer=30147
loop millis=32513 Timer=30147
loop millis=32545 Timer=30147
loop millis=32577 Timer=30147
loop millis=32610 Timer=30147
loop millis=32642 Timer=30147
loop millis=32674 Timer=30147
loop millis=32706 Timer=30147
loop millis=32739 Timer=30147
loop millis=32771 Timer=30147
loop millis=32803 Timer=30147
loop millis=32835 Timer=30147
loop millis=32868 Timer=30147
loop millis=32900 Timer=30147
loop millis=32931 Timer=30147
loop millis=32964 Timer=30147
loop millis=32996 Timer=30147
loop millis=33029 Timer=30147
loop millis=33060 Timer=30147
loop millis=33093 Timer=30147
loop millis=33125 Timer=30147
loop millis=33158 Timer=30147
>>> Step 1: resetTemp
loop millis=33214 Timer=30147
loop millis=33246 Timer=30147
loop millis=33278 Timer=30147
loop millis=33310 Timer=30147
loop millis=33343 Timer=30147
loop millis=33375 Timer=30147
loop millis=33408 Timer=30147
loop millis=33439 Timer=30147
loop millis=33472 Timer=30147
loop millis=33504 Timer=30147
loop millis=33537 Timer=30147
loop millis=33568 Timer=30147
loop millis=33601 Timer=30147
loop millis=33633 Timer=30147
loop millis=33665 Timer=30147
loop millis=33697 Timer=30147
loop millis=33729 Timer=30147
loop millis=33762 Timer=30147
loop millis=33794 Timer=30147
loop millis=33826 Timer=30147
loop millis=33858 Timer=30147
loop millis=33891 Timer=30147
loop millis=33923 Timer=30147
loop millis=33955 Timer=30147
loop millis=33987 Timer=30147
loop millis=34020 Timer=30147
loop millis=34052 Timer=30147
loop millis=34084 Timer=30147
loop millis=34116 Timer=30147
loop millis=34149 Timer=30147
loop millis=34181 Timer=30147
loop millis=34213 Timer=30147
loop millis=34245 Timer=30147
loop millis=34278 Timer=30147
loop millis=34310 Timer=30147
loop millis=34342 Timer=30147
loop millis=34374 Timer=30147
loop millis=34407 Timer=30147
loop millis=34439 Timer=30147
loop millis=34471 Timer=30147
loop millis=34503 Timer=30147
loop millis=34536 Timer=30147
loop millis=34568 Timer=30147
loop millis=34600 Timer=30147
loop millis=34632 Timer=30147
loop millis=34665 Timer=30147
loop millis=34697 Timer=30147
loop millis=34728 Timer=30147
loop millis=34761 Timer=30147
loop millis=34793 Timer=30147
loop millis=34826 Timer=30147
loop millis=34857 Timer=30147
loop millis=34890 Timer=30147
loop millis=34922 Timer=30147
loop millis=34955 Timer=30147
loop millis=34987 Timer=30147
loop millis=35019 Timer=30147
loop millis=35051 Timer=30147
loop millis=35084 Timer=30147
loop millis=35116 Timer=30147
loop millis=35148 Timer=30147
>>> Step 2: gettingTemp
loop millis=35262 Timer=30147
loop millis=35263 Timer=30147
loop millis=35271 Timer=30147
loop millis=35303 Timer=30147
loop millis=35336 Timer=30147
loop millis=35367 Timer=30147
loop millis=35400 Timer=30147
loop millis=35432 Timer=30147
loop millis=35465 Timer=30147
loop millis=35496 Timer=30147
loop millis=35529 Timer=30147
loop millis=35561 Timer=30147
loop millis=35594 Timer=30147
loop millis=35625 Timer=30147
loop millis=35658 Timer=30147
loop millis=35690 Timer=30147
loop millis=35723 Timer=30147
loop millis=35755 Timer=30147
loop millis=35787 Timer=30147
loop millis=35819 Timer=30147
loop millis=35852 Timer=30147
loop millis=35884 Timer=30147
loop millis=35916 Timer=30147
loop millis=35948 Timer=30147
loop millis=35981 Timer=30147
loop millis=36013 Timer=30147
loop millis=36045 Timer=30147
loop millis=36077 Timer=30147
loop millis=36110 Timer=30147
loop millis=36142 Timer=30147
loop millis=36174 Timer=30147
loop millis=36206 Timer=30147
loop millis=36238 Timer=30147
loop millis=36271 Timer=30147
loop millis=36302 Timer=30147
loop millis=36335 Timer=30147
loop millis=36367 Timer=30147
loop millis=36400 Timer=30147
loop millis=36431 Timer=30147
loop millis=36464 Timer=30147
loop millis=36496 Timer=30147
loop millis=36529 Timer=30147
loop millis=36560 Timer=30147
loop millis=36593 Timer=30147
loop millis=36625 Timer=30147
loop millis=36658 Timer=30147
loop millis=36689 Timer=30147
loop millis=36722 Timer=30147
loop millis=36754 Timer=30147
loop millis=36787 Timer=30147
loop millis=36818 Timer=30147
loop millis=36851 Timer=30147
loop millis=36883 Timer=30147
loop millis=36916 Timer=30147
loop millis=36947 Timer=30147
loop millis=36980 Timer=30147
loop millis=37012 Timer=30147
loop millis=37045 Timer=30147
loop millis=37076 Timer=30147
loop millis=37109 Timer=30147
loop millis=37141 Timer=30147
>>> Step 3 START
>>> Step 3 END
loop millis=37316 Timer=30147
loop millis=37317 Timer=30147
loop millis=37342 Timer=30147
loop millis=37374 Timer=30147
loop millis=37406 Timer=30147
loop millis=37439 Timer=30147
loop millis=37471 Timer=30147
loop millis=37504 Timer=30147
loop millis=37535 Timer=30147
loop millis=37568 Timer=30147
loop millis=37600 Timer=30147
loop millis=37633 Timer=30147
loop millis=37664 Timer=30147
loop millis=37696 Timer=30147
loop millis=37729 Timer=30147
loop millis=37761 Timer=30147
loop millis=37793 Timer=30147
loop millis=37825 Timer=30147
loop millis=37858 Timer=30147
loop millis=37890 Timer=30147
loop millis=37922 Timer=30147
loop millis=37954 Timer=30147
loop millis=37987 Timer=30147
loop millis=38019 Timer=30147
loop millis=38051 Timer=30147
loop millis=38083 Timer=30147
loop millis=38116 Timer=30147
loop millis=38148 Timer=30147
loop millis=38180 Timer=30147
loop millis=38212 Timer=30147
loop millis=38245 Timer=30147
loop millis=38277 Timer=30147
loop millis=38309 Timer=30147
loop millis=38341 Timer=30147
loop millis=38374 Timer=30147
loop millis=38406 Timer=30147
loop millis=38438 Timer=30147
loop millis=38470 Timer=30147
loop millis=38503 Timer=30147
loop millis=38535 Timer=30147
loop millis=38567 Timer=30147
loop millis=38599 Timer=30147
loop millis=38632 Timer=30147
loop millis=38664 Timer=30147
loop millis=38696 Timer=30147
loop millis=38728 Timer=30147
loop millis=38760 Timer=30147
loop millis=38793 Timer=30147
loop millis=38824 Timer=30147
loop millis=38857 Timer=30147
loop millis=38889 Timer=30147
loop millis=38922 Timer=30147
loop millis=38953 Timer=30147
loop millis=38986 Timer=30147
loop millis=39018 Timer=30147
loop millis=39051 Timer=30147
loop millis=39083 Timer=30147
loop mill

Внешне - всё это выглядело как перезагрузка - то есть после “отрубания” - дисплей выводит то, что обычно происходит при перезагрузке. Монитор порта при этом - останавливается и дальше ничего нового не фиксирует.

Что, >>> Step 4: Relays вырубило контроллер?

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

Почему так быстро? Почему - пока не было добавлено в код этой отсылки на серийный порт - контроллер мог работать без сбоев довольно долго (часами)? А теперь - так быстро “спотыкается”? Ему что - так сложно “печатать” в серийный порт?
Это просто - мои немые вопросы вслух…

А зачем вы так часто выводите бессмысленную информацию (значение millis)? Выводите это значение (если оно вам нужно) только когда выводите важную информацию (STEP и тп).

PPeterr вы же сможете отключить питание которое идет через реле, на модули ?

Вы про 5В?

нет я про большее напряжение, которое у вас идет через реле
а еще пины реле у вас вот так выключаются ? digitalWrite(48, HIGH); верно ? а не digitalWrite(48, LOW);

вот новый код для теста

/*
   ПРОГРАММА ДЛЯ МОНИТОРИНГА ТЕПЛОВОГО НАСОСА
   ТЕСТОВАЯ ВЕРСИЯ: БЕЗ ДИСПЛЕЯ, БЕЗ РЕЛЕ, ТОЛЬКО ЛОГ В МОНИТОР ПОРТА
*/

#include <OneWire.h>
OneWire ds(21);

// Пины для счётчиков
#define pinVoda_tick   18
boolean stateCheck_voda;

#define pinElectr_tick  19
boolean stateCheck_electr;

// Управление реле (битовое, но физически не включаются)
uint8_t relay;

// Адреса датчиков температуры
byte ADDR_DS18B20 [6][8] = {
  {0x28, 0xD5, 0x97, 0x76, 0x0, 0x0, 0x0, 0x76},
  {0x28, 0x4F, 0x9C, 0x73, 0x0, 0x0, 0x0, 0xF9},
  {0x28, 0xFC, 0xD1, 0x72, 0x0, 0x0, 0x0, 0x2D},
  {0x28, 0x95, 0x28, 0x75, 0x0, 0x0, 0x0, 0xAB},
  {0x28, 0xEF, 0x8C, 0x76, 0x0, 0x0, 0x0, 0x58},
  {0x28, 0x8C, 0x3A, 0xB4, 0xE, 0x0, 0x0, 0xDB}
};

// Точные значения
int16_t tOverheatReal;
int32_t gWaterReal;
int32_t heatPowerReal;
int32_t ElectrPowReal;
int32_t COPreal;

int32_t gWaterRealPrew;
boolean FlagWater = false;
boolean FirstImpulsWater = false;
boolean SecondImpulsWater = false;

// Средние значения
int32_t countHeatAndElectr = 0;
int32_t countHeat = 0;
int32_t countElectr = 0;

// Флаги цикла
boolean Flag1 = true;
boolean Flag2 = true;
boolean Flag3 = true;
boolean Flag4 = true;
uint32_t Timer;

// Переменные для расходомера воды
uint32_t tmr;
boolean gWaterFlag = false;
uint32_t WaterStartTimer = 0;
uint32_t WaterCountTimer;

// Переменные для электросчётчика
uint32_t tmr2;
boolean ElectrFlag = false;
uint32_t ElectrStartTimer = 0;
uint32_t ElectrCountTimer;

// Флаги режимов работы
boolean StartHeatFlag;
boolean StopFlag;
boolean HeatOptionFlag;
boolean HeatOptionPauseFlag;
boolean DefrostOptionFlag;

// Счётчики для защиты
uint8_t tKompressorCounter = 0;
uint8_t HeatOptionCout = 0;
uint8_t HeatOptionPauseCout = 0;
uint8_t defrostCount = 0;
uint8_t StopMaxTemp = 0;
uint8_t StopMaxElectr = 0;
uint8_t StopMinTempHeater = 0;
uint8_t StopNo4xvalve = 0;
uint8_t StopNoElectric = 0;

uint8_t StopKind = 0;
uint8_t MistakeTemp[6] = {};
boolean getMistakeFlag = false;

// Временные метки
uint32_t HeatOptionPauseStartTime;
uint32_t StartHeatTime;
uint32_t StopTime;
uint32_t DefrostTime;

// Массивы температур
int16_t Temper[6] = {0, 0, 0, 0, 0, 0};
int16_t TemperPrev[6];

// ========== ФУНКЦИЯ ПРОВЕРКИ CRC ==========
uint8_t dallas_crc8(const uint8_t *data, uint8_t len) {
  uint8_t crc = 0;
  for (uint8_t i = 0; i < len; i++) {
    uint8_t inbyte = data[i];
    for (uint8_t j = 0; j < 8; j++) {
      uint8_t mix = (crc ^ inbyte) & 0x01;
      crc >>= 1;
      if (mix) crc ^= 0x8C;
      inbyte >>= 1;
    }
  }
  return crc;
}

// ========== ЧТЕНИЕ ТЕМПЕРАТУРЫ С ДАТЧИКА ==========
bool readDS18B20(byte *addr, int16_t *dest) {
  uint8_t data[9];
  ds.reset();
  ds.select(addr);
  ds.write(0xBE);
  for (uint8_t i = 0; i < 9; i++) {
    data[i] = ds.read();
  }
  if (dallas_crc8(data, 8) != data[8]) {
    return false;
  }
  int16_t raw = (int16_t)((data[1] << 8) | data[0]);
  *dest = (raw * 5) / 8;
  return true;
}

// ========== ЗАПУСК ИЗМЕРЕНИЯ ТЕМПЕРАТУРЫ ==========
void resetTemp() {
  ds.reset();
  ds.write(0xCC);
  ds.write(0x44);
}

// ========== ПОЛУЧЕНИЕ ТЕМПЕРАТУР ==========
void gettingTemp() {
  int16_t temp;
  for (uint8_t i = 0; i < 6; i++) {
    if (readDS18B20(ADDR_DS18B20[i], &temp)) {
      Temper[i] = temp;
      TemperPrev[i] = temp;
      if (MistakeTemp[i] <= 6) MistakeTemp[i] = 0;
    }
  }
}

// ========== ПРОВЕРКА ГРАНИЦ ТЕМПЕРАТУР ==========
void tempMistake(uint8_t a, int16_t b, int16_t c, int16_t d) {
  if (Temper[a] >= b && Temper[a] <= c && abs(Temper[a] - TemperPrev[a]) <= d) {
    MistakeTemp[a] = 0;
    return;
  }
  Temper[a] = TemperPrev[a];
  if (StopFlag == false) {
    MistakeTemp[a]++;
    if (MistakeTemp[a] > 6) {
      StopFlag = true;
      StopTime = millis();
      StopKind = 6;
    }
  }
}

// ========== ОБРАБОТЧИК ИМПУЛЬСОВ СЧЁТЧИКА ВОДЫ ==========
void voda_tick() {
  boolean current_status = digitalRead(pinVoda_tick);
  if (stateCheck_voda && !current_status) {
    tmr = millis();
    gWaterFlag = true;
    stateCheck_voda = current_status;
    return;
  }
  if (!stateCheck_voda && current_status) {
    stateCheck_voda = current_status;
    return;
  }
  if (current_status) {
    gWaterFlag = false;
    return;
  }
  if (!current_status && (millis() - tmr >= 1000) && gWaterFlag == true) {
    if (WaterStartTimer == 0) {
      WaterStartTimer = millis();
      gWaterFlag = false;
      return;
    }
    WaterCountTimer = millis() - WaterStartTimer;
    WaterStartTimer = millis();
    gWaterFlag = false;
    if (FirstImpulsWater == true) SecondImpulsWater = true;
    FirstImpulsWater = true;
  }
}

// ========== ОБРАБОТЧИК ИМПУЛЬСОВ ЭЛЕКТРОСЧЁТЧИКА ==========
void electr_tick() {
  boolean current_status = digitalRead(pinElectr_tick);
  if (stateCheck_electr && !current_status) {
    tmr2 = millis();
    ElectrFlag = true;
    stateCheck_electr = current_status;
    return;
  }
  if (!stateCheck_electr && current_status) {
    stateCheck_electr = current_status;
    return;
  }
  if (current_status) {
    ElectrFlag = false;
    return;
  }
  if (!current_status && (millis() - tmr2 >= 50) && ElectrFlag == true) {
    if (ElectrStartTimer == 0) {
      ElectrStartTimer = millis();
      ElectrFlag = false;
      return;
    }
    ElectrCountTimer = millis() - ElectrStartTimer;
    ElectrStartTimer = millis();
    ElectrFlag = false;
  }
}

// ========== НАЧАЛЬНАЯ НАСТРОЙКА ==========
void setup() {
  Serial.begin(9600);

  // Детектор причины перезагрузки
  Serial.print("MCUSR=0x");
  Serial.println(MCUSR, HEX);
  if (MCUSR & (1 << PORF)) Serial.println("RESET: Power-on reset");
  if (MCUSR & (1 << EXTRF)) Serial.println("RESET: External reset (пин RESET)");
  if (MCUSR & (1 << BORF)) Serial.println("RESET: Brown-out (просадка питания)");
  if (MCUSR & (1 << WDRF)) Serial.println("RESET: Watchdog (зависание)");
  MCUSR = 0;

  pinMode(18, INPUT_PULLUP);
  stateCheck_voda = digitalRead(pinVoda_tick);

  pinMode(19, INPUT_PULLUP);
  stateCheck_electr = digitalRead(pinElectr_tick);

  // Пины реле настраиваем как выходы, но НЕ включаем
  pinMode(48, OUTPUT); digitalWrite(48, HIGH);
  pinMode(49, OUTPUT); digitalWrite(49, HIGH);
  pinMode(50, OUTPUT); digitalWrite(50, HIGH);
  pinMode(51, OUTPUT); digitalWrite(51, HIGH);

  StopFlag = false;
  HeatOptionFlag = false;
  HeatOptionPauseFlag = false;
  DefrostOptionFlag = false;
  StartHeatFlag = true;
  StartHeatTime = millis();

  Serial.println("=== SETUP COMPLETE ===");
  delay(1000);
}

// ========== ГЛАВНЫЙ ЦИКЛ ==========
void loop() {
  Serial.print("L ms=");
  Serial.print(millis());
  Serial.print(" T=");
  Serial.println(Timer);

  Serial.println("  voda_tick IN");
  voda_tick();
  Serial.println("  voda_tick OUT");

  Serial.println("  electr_tick IN");
  electr_tick();
  Serial.println("  electr_tick OUT");

  // Шаг 1: запуск конвертации (3-5 сек)
  if (millis() - Timer >= 3000 && millis() - Timer < 5000 && Flag1 == true) {
    Serial.println(">>> Step 1 START");
    resetTemp();
    Flag1 = false;
    Serial.println(">>> Step 1 END");
  }

  // Шаг 2: чтение температур (5-7 сек)
  if (millis() - Timer >= 5000 && millis() - Timer < 7000 && Flag2 == true) {
    Serial.println(">>> Step 2 START");
    gettingTemp();
    Flag2 = false;
    Serial.print("   T0="); Serial.print(Temper[0]);
    Serial.print(" T1="); Serial.print(Temper[1]);
    Serial.print(" T2="); Serial.print(Temper[2]);
    Serial.print(" T3="); Serial.print(Temper[3]);
    Serial.print(" T4="); Serial.print(Temper[4]);
    Serial.print(" T5="); Serial.println(Temper[5]);
    Serial.println(">>> Step 2 END");
  }

  // Шаг 3: расчёты и логика (7-9 сек)
  if (millis() - Timer >= 7000 && millis() - Timer < 9000 && Flag3 == true) {
    Serial.println(">>> Step 3 START");

    if (getMistakeFlag == false) {
      for (uint8_t i = 0; i < 6; i++) TemperPrev[i] = Temper[i];
      getMistakeFlag = true;
    }

    tempMistake(0, -100, 1200, 200);
    tempMistake(1, 0, 600, 100);
    tempMistake(2, 0, 900, 50);
    tempMistake(3, -400, 800, 400);
    tempMistake(4, -400, 600, 300);
    tempMistake(5, -400, 800, 200);

    tOverheatReal = (Temper[3] - Temper[5]);

    // Расход воды
    if (digitalRead(51) == HIGH) {
      gWaterReal = 0;
      gWaterRealPrew = gWaterReal;
      FlagWater = false;
    } else if (digitalRead(51) == LOW && millis() - WaterStartTimer > 400000) {
      StopFlag = true; StopTime = millis(); StopKind = 7;
    } else if (SecondImpulsWater == false) {
      gWaterReal = gWaterRealPrew; FlagWater = true;
    } else {
      gWaterReal = round(3600000 / WaterCountTimer);
      gWaterRealPrew = gWaterReal; FlagWater = false;
    }

    // Электрическая мощность
    if (millis() - ElectrStartTimer > 60000) ElectrPowReal = 0;
    else ElectrPowReal = 72000 / ElectrCountTimer;

    // Тепловая мощность
    heatPowerReal = ((int32_t)Temper[2] - (int32_t)Temper[1]) * gWaterReal * 1163 / 10000;

    // COP
    if (ElectrPowReal < 10) COPreal = 0;
    else COPreal = 100 * heatPowerReal / ElectrPowReal;

    countHeat = countHeat + heatPowerReal;
    countElectr = countElectr + ElectrPowReal;
    countHeatAndElectr++;

    // Логика управления (relay) работает, но физически реле не включаются
    if (HeatOptionFlag == true && Temper[0] >= 850 && tOverheatReal >= 300 && digitalRead(48) == LOW) {
      tKompressorCounter++;
      if (tKompressorCounter >= 4) { bitClear(relay, 0); tKompressorCounter = 0; }
    } else if (HeatOptionFlag == true && (Temper[0] <= 750 || tOverheatReal <= 200) && digitalRead(48) == HIGH) {
      tKompressorCounter++;
      if (tKompressorCounter >= 2) { bitSet(relay, 0); tKompressorCounter = 0; }
    } else tKompressorCounter = 0;

    if (HeatOptionFlag == true && Temper[1] >= 360) {
      HeatOptionCout++;
      if (HeatOptionCout >= 6) {
        HeatOptionFlag = false; HeatOptionPauseFlag = true; HeatOptionCout = 0;
        HeatOptionPauseStartTime = millis(); bitClear(relay, 2); bitClear(relay, 0);
      }
    } else HeatOptionCout = 0;

    if (HeatOptionPauseFlag == true && digitalRead(49) == LOW && millis() - HeatOptionPauseStartTime >= 120000)
      bitClear(relay, 1);

    if (HeatOptionPauseFlag == true && digitalRead(51) == HIGH && millis() - HeatOptionPauseStartTime >= 960000) {
      if (digitalRead(51) == HIGH) {
        WaterStartTimer = millis(); FirstImpulsWater = false; SecondImpulsWater = false;
      }
      bitSet(relay, 3); HeatOptionPauseStartTime = millis();
    }

    if (HeatOptionPauseFlag == true && digitalRead(51) == LOW && millis() - HeatOptionPauseStartTime >= 60000) {
      bitClear(relay, 3); HeatOptionPauseStartTime = millis();
    }

    if (HeatOptionPauseFlag == true && Temper[1] <= 280) {
      HeatOptionPauseCout++;
      if (HeatOptionPauseCout >= 5) {
        HeatOptionPauseFlag = false; HeatOptionPauseCout = 0;
        StartHeatTime = millis(); StartHeatFlag = true;
      }
    } else HeatOptionPauseCout = 0;

    if (HeatOptionFlag == true && Temper[5] < -100) {
      defrostCount++;
      if (defrostCount >= 6) {
        HeatOptionFlag = false; DefrostOptionFlag = true; DefrostTime = millis(); defrostCount = 0;
      }
    } else defrostCount = 0;

    // Защиты
    if (HeatOptionFlag == true && digitalRead(49) == HIGH) {
      StopNo4xvalve++;
      if (StopNo4xvalve >= 3) {
        bitClear(relay, 2); StopFlag = true; StopTime = millis(); StopKind = 1; StopNo4xvalve = 0;
      }
    } else StopNo4xvalve = 0;

    if ((StartHeatFlag || HeatOptionFlag || HeatOptionPauseFlag || DefrostOptionFlag) && Temper[0] >= 1000) {
      StopMaxTemp++;
      if (StopMaxTemp >= 5) { StopFlag = true; StopTime = millis(); StopKind = 2; StopMaxTemp = 0; }
    } else StopMaxTemp = 0;

    if ((StartHeatFlag || HeatOptionFlag || HeatOptionPauseFlag || DefrostOptionFlag) && ElectrPowReal >= 151) {
      StopMaxElectr++;
      if (StopMaxElectr >= 6) { StopFlag = true; StopTime = millis(); StopKind = 3; StopMaxElectr = 0; }
    } else StopMaxElectr = 0;

    if ((StartHeatFlag || HeatOptionFlag || HeatOptionPauseFlag) && Temper[4] <= 50) {
      StopMinTempHeater++;
      if (StopMinTempHeater >= 3) { StopFlag = true; StopTime = millis(); StopKind = 4; StopMinTempHeater = 0; }
    } else StopMinTempHeater = 0;

    if (digitalRead(50) == LOW && ElectrPowReal <= 10) {
      StopNoElectric++;
      if (StopNoElectric >= 6) { StopFlag = true; StopTime = millis(); StopKind = 5; StopNoElectric = 0; }
    } else StopNoElectric = 0;

    // Start heat
    if (StartHeatFlag && millis() - StartHeatTime >= 20000 && Temper[1] >= 50) {
      if (digitalRead(51) == HIGH) {
        WaterStartTimer = millis(); FirstImpulsWater = false; SecondImpulsWater = false;
      }
      bitSet(relay, 3);
    }
    if (StartHeatFlag && digitalRead(51) == LOW && millis() - StartHeatTime >= 30000 && Temper[0] <= 850) bitSet(relay, 0);
    if (StartHeatFlag && digitalRead(51) == LOW && digitalRead(48) == LOW && millis() - StartHeatTime >= 40000) bitSet(relay, 1);
    if (StartHeatFlag && digitalRead(51) == LOW && digitalRead(48) == LOW && digitalRead(49) == LOW && millis() - StartHeatTime >= 45000) bitSet(relay, 2);
    if (StartHeatFlag && digitalRead(51) == LOW && digitalRead(48) == LOW && digitalRead(50) == LOW && digitalRead(49) == LOW) {
      StartHeatFlag = false; HeatOptionFlag = true;
    }

    // Stop
    if (StopFlag) {
      StartHeatFlag = false; HeatOptionFlag = false; HeatOptionPauseFlag = false; DefrostOptionFlag = false;
      bitClear(relay, 2); bitClear(relay, 0);
      if (millis() - StopTime >= 120000) bitClear(relay, 1);
      if (millis() - StopTime >= 180000) bitClear(relay, 3);
    }

    // Defrost
    if (DefrostOptionFlag) {
      if (digitalRead(51) == HIGH) {
        WaterStartTimer = millis(); FirstImpulsWater = false; SecondImpulsWater = false;
      }
      bitSet(relay, 3); bitClear(relay, 2); bitSet(relay, 0);
      if (millis() - DefrostTime >= 120000) bitClear(relay, 1);
      if (millis() - DefrostTime >= 900000 && Temper[5] >= 20) {
        DefrostOptionFlag = false; StartHeatTime = millis(); StartHeatFlag = true;
      }
    }

    Serial.print("   Relay bits: Fan="); Serial.print(bitRead(relay, 0));
    Serial.print(" 4way="); Serial.print(bitRead(relay, 1));
    Serial.print(" Kompr="); Serial.print(bitRead(relay, 2));
    Serial.print(" Pump="); Serial.print(bitRead(relay, 3));
    Serial.print(" Mode=");
    if (StopFlag) Serial.print("STOP"); else if (StartHeatFlag) Serial.print("START"); else if (HeatOptionFlag) Serial.print("HEAT"); else if (HeatOptionPauseFlag) Serial.print("PAUSE"); else if (DefrostOptionFlag) Serial.print("DEFROST");
    Serial.println();

    Flag3 = false;
    Serial.println(">>> Step 3 END");
  }

  // Шаг 4: реле НЕ включаются физически (безопасный тест)
  if (millis() - Timer >= 9000 && millis() - Timer < 10000 && Flag4 == true) {
    Serial.print(">>> Step 4 (no relays): Fan="); Serial.print(bitRead(relay, 0));
    Serial.print(" 4way="); Serial.print(bitRead(relay, 1));
    Serial.print(" Kompr="); Serial.print(bitRead(relay, 2));
    Serial.print(" Pump="); Serial.println(bitRead(relay, 3));
    Flag4 = false;
  }

  // Шаг 5: сброс цикла
  if (millis() - Timer >= 10000) {
    Serial.println(">>> Step 5: Cycle END");
    Timer = millis();
    Flag1 = true;
    Flag2 = true;
    Flag3 = true;
    Flag4 = true;
  }
}

то что на дисплей нечего не выводится теперь это нормально, давайте просто посмотрим что будет в мониторе порта

Верно. Когда “LOW” - через насос идёт ток (например)


вот так я могу отключить сильноточные цепи по быстрому.
Но конечно - могу любые варианты отключить

отключите еще подачу питания которое идет через реле,(то которое идет от сети) и надо последний код протестировать через ком порт
по времени не более 5 минут

Я могу выдернуть проводок, который даёт 5В на электромагнитные катушки реле. Это будет то же самое, или всё же - нужно все толстые провода поубирать из сильноточных разёмов реле?

можно и так наверное… я просто мало времени потратил на вникание в ваш вопрос…
фишка в том сейчас мы тестируем код, без управления силовой частью, а в схему не вникал…
на всякий случай лучше просто отключить питание которое идет через реле… что бы просто погоняли код…
и напоминаю на дисплее нечего не должно отображаться, все через ком порт, 5 минут будет достаточно, если не прервется раньше…

Поубираю сильноточные провода со стороны силовых контактов реле. Для чистоты эксперимента

Отсоединил все провода со стороны силовых контактов на блоке реле. Запустил контроллер, запустил монитор порта. В таком виде система отработала без замечаний больше 5 минут.

код запускал предыдущий… из сообщения 149