Короткий простой код управления кареткой

залил только что, виде снять?

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

(Едем вниз) ---- сработал нижний концевик ---- (Остановка внизу…) ----прошло 1сек----(Едем вверх)…

типа такого.

Хорошо

ну, вот и до Вас дошёл смысл моего сообщения №16 после которого, кстати, никаких извинений перед Вами не последовало.

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

2 лайка

если вы про { то я за вами её дописал. Но проблема не в ней, а в том что это всё не работает

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

теперь согласен, еще надо добавить КД и ЕСПД )

конечно, я не знаю, поэтому тут и спрашиваю. Всяко есть люди с более богатым опытом в программировании ардуино чем я

Вы слишком распыляетесь на посторонние дискуссии и плохо описываете проблему - либо слишком кратко (“ничего не работает”), либо слишком мутно (сумбурные рассуждения про логические единицы и прочее). Хотелось бы видеть примерно такое сообщение.

  1. Приводите самую последнюю, актуальную, реально сейчас залитую в контроллер версию скетча.
  2. Описываете поведение Вашей системы с этим скетчем. Человеческим языком. Подробно. Примерно так. Исходное состояние - питание выключено, каретка находится … (вверху, внизу, посередине). Включаем питание - каретка … (стоит, двигается куда-то). Каретка, достигнув … (верха, низа) … (останавливается, начинает двигаться в противоположную сторону, продолжает ломиться в ту же сторону).
    Если на каком-то этапе поведение отличается от ожидаемого, на этом можно остановиться, но в описании должно быть это отличие, например - каретка поехала вниз, а должна была стоять на месте.

У Вас очень простая система, скетч Вам уже дали. Не работать особо нечему. Но так как нет чёткого описания что идёт не так, то и помочь сложно.

2 лайка

Я понимаю, что желание поумничать иногда затмевает все, но зачем давать новичкам плохой пример?

Дайте хороший пример.

Вы правила оформления кода знаете? Знаете. Зачем вываливаете его простым текстом? Вам наплевать на правила и окружающих?

Вы чо привязались? Вам одно мое сообщение жить не дает?.. Я простой добродушный мужык и ничего никому доказывать не собирался… странно это!

Хотите опять развести срач на сотню постов?

а чо ещё делать? отличное развлечение в конце дня! ахаха.

я удалил своё отвратительное сообщение и каюсь.

2 лайка

Что-то ерунда какая-то… Не может оно не работать

//https://wokwi.com/projects/398516669526050817
#define MOTOR_DOWN 4
#define MOTOR_UP   5
#define END_DOWN   6
#define END_UP     7

void setup() {
  pinMode(MOTOR_UP, OUTPUT);
  pinMode(MOTOR_DOWN, OUTPUT);
  if (!digitalRead(END_DOWN)) digitalWrite(MOTOR_UP, HIGH);
}

void loop() {
  if (digitalRead(END_DOWN)) {
    digitalWrite(MOTOR_DOWN, LOW);
    delay(1000);
    digitalWrite(MOTOR_UP, HIGH);
  }
  if (digitalRead(END_UP)) {
    digitalWrite(MOTOR_UP, LOW);
    delay(1000);
    digitalWrite(MOTOR_DOWN, HIGH);
  }
}
1 лайк

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

Причина неработоспособности - моя невнимательность. Колодка цифровых выходов на плате Mega частично не маркирована из-за отверстия в районе предполагаемого выхода. см фото. По неопытности мне ПОКАЗАЛОСЬ что в этой колодке присутствуют выходы 20 и 21, но на месте нумерации есть отверстие в плате. И в эти выходы я вставлял контакт от выхода 20. Так как и программно на выходе 20 появляется высокий уровень, казалось, что начало работы нормальное. Но на самом деле на этом пине питание +5 вольт и он программно не отключался.

выход 20 находится в группе коммуникационных каналов. Это плохо видно даже при хорошем освещении и открытой фотографии на весь экран, в жизни это обозначение 1 мм высотой выполненное сливающейся строкой.

P.S. МММ - ваш код я сразу вставлял в IDE для компиляции. При компиляции IDE сообщает об ошибках. Найти незакрытую фигурную скобку было не сложно, я даже не счел, что это сделано нарочно для проверки меня на “вшивость”. Ошибка банальная и сходу мной исправилась закрывающей скобкой. Зря вы.

Код работает.

Ну вот все же знаешь…
Если аппаратно вроде как не должно такого быть (хотя может, так как залипание контактов никто не отменял), то от дурака, который нажмёт от скуки, надо защищаться.

1 лайк