DTG printer / принтер планшетный

джойстик с правильными значениями 561
тот который ранее был тоже отлично работает не хуже
выкладываю сюда чтобы не потерять

#define ENABLE_PIN  8 // Пин для включения/выключения драйвера мотора
#define STEP_PIN    4 // Пин для подачи сигнала на шаговый мотор
#define DIR_PIN     7 // Пин для определения направления вращения мотора

volatile int joystickValue = 560; // Глобальная переменная для хранения значения джойстика

void setup() {
    Serial.begin(115200); // Инициализация последовательного порта

    pinMode(ENABLE_PIN, OUTPUT); // Установка пина включения драйвера как выход
    pinMode(STEP_PIN, OUTPUT); // Установка пина шага как выход
    pinMode(DIR_PIN, OUTPUT); // Установка пина направления как выход
    digitalWrite(ENABLE_PIN, LOW); // Включаем драйвер мотора

    // Настройка АЦП
    ADMUX = (1 << REFS0) | (1 << ADLAR); // Опорное напряжение AVCC, ADC0
    DIDR0 = 1 << ADC0D; // Отключаем цифровую часть АЦП для пина ADC0
    ADCSRA = (1 << ADEN) | (1 << ADPS0) | (1 << ADPS2); // Включаем АЦП с делителем 1/32
}

void loop() {
    // Обрабатываем джойстик
    handleJoystick();
}

// Быстрое считывание 10-битного значения с АЦП
uint32_t ADCfast_10bit() {
    uint32_t H, L;
    ADCSRA |= (1 << ADSC); // Запускаем преобразование
    while (ADCSRA & (1 << ADSC)); // Ждем завершения преобразования
    L = ADCL; // Считываем младший байт
    H = ADCH; // Считываем старший байт
    return (H << 2) | (L >> 6); // Возвращаем 10-битное значение
}

void handleJoystick() {
    // Обработка джойстика
    uint32_t T; // Переменная для задержки
    joystickValue = ADCfast_10bit(); // Считываем значение с джойстика

    Serial.println(joystickValue); // Выводим значение joystickValue в последовательный порт

    if (joystickValue >= 570) { // Если джойстик отклонен вправо
        T = (uint32_t)map(joystickValue, 570, 1023, 255, 0); // Мапируем значение для скорости
        digitalWrite(ENABLE_PIN, LOW); // Включаем драйвер мотора
        digitalWrite(DIR_PIN, HIGH); // Устанавливаем направление
        for (uint32_t i = 0; i < 4; i++) { // Выполняем несколько шагов
            digitalWrite(STEP_PIN, HIGH); // Активируем шаг
            delayMicroseconds(T); // Задержка для скорости
            digitalWrite(STEP_PIN, LOW); // Деактивируем шаг
            delayMicroseconds(T); // Задержка для скорости
        }
    } 
    else if (joystickValue < 550) { // Если джойстик отклонен влево
        T = (uint32_t)map(joystickValue, 550, 0, 255, 0); // Мапируем значение для скорости
        digitalWrite(ENABLE_PIN, LOW); // Включаем драйвер мотора
        digitalWrite(DIR_PIN, LOW); // Устанавливаем направление
        for (uint32_t i = 0; i < 4; i++) { // Выполняем несколько шагов
            digitalWrite(STEP_PIN, HIGH); // Активируем шаг
            delayMicroseconds(T); // Задержка для скорости
            digitalWrite(STEP_PIN, LOW); // Деактивируем шаг
            delayMicroseconds(T); // Задержка для скорости
        }
    } 


     if (joystickValue >= 1000) { 
       for (uint32_t i = 0; i < 6; i++) { // Выполняем несколько шагов
            digitalWrite(STEP_PIN, HIGH); // Активируем шаг
            delayMicroseconds(T); // Задержка для скорости
            digitalWrite(STEP_PIN, LOW); // Деактивируем шаг
            delayMicroseconds(T); // Задержка для скорости
        }
        }   
}