Всем большое спасибо за участие в теме, особенно "Дим-мычъ". Код подредактировал - Все работает как надо.
//для управления двигателем
const uint8_t pin_ENA = 2; // Вывод 2 Arduino подключённый к входу драйвера ENA+.
const uint8_t pin_DIR = 6; // Вывод 3 Arduino подключённый к входу драйвера DIR+.
const uint8_t pin_PUL = 4; // Вывод 4 Arduino подключённый к входу драйвера PUL+.
// Вывод GND Arduino соединён с входами драйвера ENA-, DIR-, PUL-.
const uint8_t pin_Datchik_1 = 8; // Вывод 8 Arduino подключённый к переключателю (емкостному датчику1)
const uint8_t pin_Datchik_2 = 10; // Вывод 10 Arduino подключённый к переключателю (емкостному датчику2)
const uint8_t pin_Datchik_3 = 12; // Вывод 12 Arduino подключённый к переключателю (оптическому датчику)
int spd = A0; // потенциометр - регулирует скорость вращения двигателя
int t; // Определяем частоту следования микрошагов
void start()
{
digitalWrite( pin_PUL, 1 ); // Устанавливаем на выводе PUL состояние логической «1»
delayMicroseconds(t); // Выполняем задержку микрошага двигателя
digitalWrite( pin_PUL, 0 ); // Устанавливаем на выводе PUL состояние логического «0»
delayMicroseconds(t); // Выполняем задержку микрошага двигателя
}
void prymo()
{
// Устанавливаем движение вала в пряммом направлении:
digitalWrite( pin_ENA, 0 ); // Разрешаем работу двигателя
delayMicroseconds(5); // Выполняем задержку
digitalWrite( pin_DIR, 0 ); // Указываем валу вижение в прямом направлении
delayMicroseconds(5); // Выполняем задержку
}
void obratno()
{
// Устанавливаем движение вала в обратном направлении:
digitalWrite( pin_ENA, 0 ); // Разрешаем работу двигателя
delayMicroseconds(5); // Выполняем задержку
digitalWrite( pin_DIR, 1 ); // Указываем валу вижение в обратном направлении
delayMicroseconds(5); // Выполняем задержку
}
void skorost()
{
//Функция map пропорционально переносит значение (value) из текущего диапазона
//значений (fromLow .. fromHigh) в новый диапазон (toLow .. toHigh), заданный параметрами.
//map(value, fromLow, fromHigh, toLow, toHigh)
t = map((analogRead(spd)),0,1023,1,20);
}
void setup() // void setup() – функция, которая выполняется единожды, при загрузке программы
{
pinMode( pin_ENA, OUTPUT ); // Конфигурируем вывод 2 Arduino как выход
pinMode( pin_DIR, OUTPUT ); // Конфигурируем вывод 3 Arduino как выход
pinMode( pin_PUL, OUTPUT ); // Конфигурируем вывод 4 Arduino как выход
// инициализируем пин, подключенный к потенциометру, как вход
//pinMode(A0, INPUT);
pinMode( pin_Datchik_3, INPUT_PULLUP ); // Конфигурируем вывод 8 Arduino как вход (pin8 датчик)
pinMode( pin_Datchik_1, INPUT_PULLUP ); // Конфигурируем вывод 9 Arduino как вход (pin9 датчик)
pinMode( pin_Datchik_2, INPUT_PULLUP ); // Конфигурируем вывод 10 Arduino как вход (pin10 датчик)
if (digitalRead(pin_Datchik_2)) // Если каретка не в начале
{
skorost();
obratno(); // Переключаем параматры двигателя движение в обратную сторону
}
while (digitalRead(pin_Datchik_2)) // Пока не сработал Датчик2
{
start(); // Включаем двигатель
}
} //void setup()
void loop() // void loop() – функция, которая выполняется постоянно, когда плата подключена к источнику питания
{
if (digitalRead(pin_Datchik_1)) // Если каретка не в конце (Датчик1 не сработал)
{
if (!digitalRead((pin_Datchik_3))) // Если сработал Датчик3
{
skorost();
prymo(); // Переключаем параматры двигателя движение в прямом направлении
while (digitalRead(pin_Datchik_1)) // Пока не сработал Датчик1
{
start(); // Включаем двигатель
}
}
}
else // Если каретка в конце (Датчик1 сработал)
{
if(!digitalRead((pin_Datchik_3))) // Если сработал Датчик3
{
skorost();
obratno(); // Переключаем параматры двигателя движение в обратном направлении
while (digitalRead(pin_Datchik_2)) // Пока не сработал Датчик2
{
start(); // Включаем двигатель
}
}
}
} //void loop()