При включении контроллера игнорировать концевой выключатель

В рамках данных программ никак.

кстати, судя по исходному коду ezButton, ваш концевик в таком случае даже не будет считаться нажатым.
Я вообще не понимаю, в чем у вас проблема.

@applecad
А концевики как подключены?
Замыкаются на плюс или на GND?

а в сетапе проверять состояние концевика на пробовали?

В сетапе если концевики разомкнуты - подрограмма 1
замкнут верх - 2
низ - 3
В лупе свич подпрграмма
кейс 1 - едем куда надо
2 - вниз
3 - вверх

а может у вас индуктивный концевик еще не готов пока включается контроллер

@applecad, я думаю, основная проблема в:

#include <GyverStepper2.h>
#include <ezButton.h>

Уберите это и напишите алгоритм работы сами - именно так, как он должен работать, а не так, как запрограммировали авторы этих двух библиотек.

1 лайк

Я бы, пожалуй, заменил

if(stopdown.isPressed())

На

if(stopdown.getState()==состояние_при_замыкании)

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

Если, конечно, правильно вопрос понял.

Концевик LJ12A3-4-2/BX-5V, три провода - плюс, gnd, цифровой на пин.

Напиши в setup()

stepperState = STATE_MOVE_UP;

И не мучайся )))

ЗЫ: Ну или иное нужное тебе положение каретки.

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

мне кажется индуктивному stopdowm не очень нужен дебоунс

Так у меня только каретка сама собой поедет, в момент включения контроллера, без нажатия на кнопку “вверх”. И проблему не снимает, любой из.

Не в этом же был вопрос, вопрос был как (по сути) инициализировать «систему» при включении. Чем не решение? А замкнуты оба концевика могут быть и при работе (поломка, например).

А когда каретка начнёт движение (ну или хотя бы продумает об этом), разве логика ПО не должна сама определить где он, что он и как быть дальше? Инициализация, ещё раз.

Тогда напиши что именно хочешь? Я как понял проблема в том, что каретка не определяется «системой» если в крайнем положении. Предложил вариант «определения» (инициализации). Что не так то?

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

Каким? Ты же понимаешь, что я не придумываю и проблема в первоначальной инициализации? Ну инициализируй полностью, если один «костыль» мало (это я к ТС).

Если необходимость только такая, то обработку кнопок нужно проводить после опроса концевиков, чтобы “перебить” stepperState с концевика.

В чем ошибка моей логики? Или каретка ездит не с одним параметром? Тогда и другие добавьте.

Если нужно с кнопки именно, то ждём нажатия кнопки в setup() и делаем все что я выше написал.