Заголовок темы должен отражать содержимое. Исправь или тема будет удалена
Приветствую! В общем я пытаюсь управлять стартом при помощи низкого сигнала (на оптопару идет 24 вольта, и она замыкает с землей третий пин), также есть два датчика которые хотел назначит на стоп (сигнальный провод при контакте выдает минус) - это 2 и 3 пины. Питание для датчиков разведены на плате +24, с нее же питается ардуинка через бек и сам двигатель. При подаче сигнала двигатель начинает движение нормально, но если во время движения подать еще один входной сигнал (любой) на 2 3 или 4 пин, даже если в условии на срабатывание ничего нет, двигатель начинает глючить. Подскажите пожалуйста, куда копать? Идей вообще нет, только если плату перепаивать и МК менять




тест входных сигналов:
#include <Arduino.h>
#define SMOOTH_ALGORITHM
#define DRIVER_STEP_TIME 5
#include "GyverStepper2.h"
#include "GyverTimers.h"
GStepper2<STEPPER2WIRE> stepper(3200, 10, 11, 12); // step, dir, en);
#include <EEPROM.h>
bool d = true;
void setup() {
Serial.begin(57600);
stepper.autoPower(true);//отключение при достижении позиции
pinMode(3, INPUT_PULLUP);//Сигнал с робота о начале
pinMode(2, INPUT_PULLUP);//первый датчик D1
pinMode(4, INPUT_PULLUP);//второй датчик D2
pinMode(5, OUTPUT); //сигнал при движении
pinMode(6, OUTPUT); //сигнал по достижении цели
pinMode(7, OUTPUT); //не используется
pinMode(A0, INPUT); //Ускорение
pinMode(A1, INPUT); //Скорость
stepper.setAcceleration(10000); // стандартные значения скорости и ускорения (на случай, если не сработает считывание с порта
stepper.setMaxSpeed(10000);
}
void loop() {
stepper.tick();
if (!digitalRead(3) == true) {
Serial.println("Кнопка СТАРТ нажата");
if (d == true){
stepper.setTarget(999999999); // цель
}
d = false;
}
if (!digitalRead(2)) {
Serial.println("Датчик1");
// d = false;
}
if (!digitalRead(4)) {
Serial.println("Датчик2");
// d = true;
}
}