В рамках данных программ никак.
кстати, судя по исходному коду ezButton, ваш концевик в таком случае даже не будет считаться нажатым.
Я вообще не понимаю, в чем у вас проблема.
@applecad
А концевики как подключены?
Замыкаются на плюс или на GND?
а в сетапе проверять состояние концевика на пробовали?
В сетапе если концевики разомкнуты - подрограмма 1
замкнут верх - 2
низ - 3
В лупе свич подпрграмма
кейс 1 - едем куда надо
2 - вниз
3 - вверх
а может у вас индуктивный концевик еще не готов пока включается контроллер
@applecad, я думаю, основная проблема в:
#include <GyverStepper2.h>
#include <ezButton.h>
Уберите это и напишите алгоритм работы сами - именно так, как он должен работать, а не так, как запрограммировали авторы этих двух библиотек.
Я бы, пожалуй, заменил
if(stopdown.isPressed())
На
if(stopdown.getState()==состояние_при_замыкании)
И перенес анализ концевиков под свич, чтобы калибранулась система.
Если, конечно, правильно вопрос понял.
Концевик LJ12A3-4-2/BX-5V, три провода - плюс, gnd, цифровой на пин.
Напиши в setup()
stepperState = STATE_MOVE_UP;
И не мучайся )))
ЗЫ: Ну или иное нужное тебе положение каретки.
Выход интересный, но тут не очень хороша сама логика. Концевику надо бы проверяться на состояние, а не на переход. Всякое бывает - система включилась, а оба конца замкнуты. Аварийное состояние, но с переходом не поймается.
мне кажется индуктивному stopdowm не очень нужен дебоунс
Так у меня только каретка сама собой поедет, в момент включения контроллера, без нажатия на кнопку “вверх”. И проблему не снимает, любой из.
Не в этом же был вопрос, вопрос был как (по сути) инициализировать «систему» при включении. Чем не решение? А замкнуты оба концевика могут быть и при работе (поломка, например).
А когда каретка начнёт движение (ну или хотя бы продумает об этом), разве логика ПО не должна сама определить где он, что он и как быть дальше? Инициализация, ещё раз.
Тогда напиши что именно хочешь? Я как понял проблема в том, что каретка не определяется «системой» если в крайнем положении. Предложил вариант «определения» (инициализации). Что не так то?
Это я понимаю. Но в данном случае это просто костыль, который может привести к другим проблемам.
Каким? Ты же понимаешь, что я не придумываю и проблема в первоначальной инициализации? Ну инициализируй полностью, если один «костыль» мало (это я к ТС).
Если необходимость только такая, то обработку кнопок нужно проводить после опроса концевиков, чтобы “перебить” stepperState
с концевика.
В чем ошибка моей логики? Или каретка ездит не с одним параметром? Тогда и другие добавьте.
Если нужно с кнопки именно, то ждём нажатия кнопки в setup() и делаем все что я выше написал.