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 подключённый к переключателю (оптическому датчику).
void step()
{
digitalWrite( pin_PUL, 1 ); // Устанавливаем на выводе PUL состояние логической «1».
delay(40);//delayMicroseconds(500); // Выполняем задержку t3.
digitalWrite( pin_PUL, 0 ); // Устанавливаем на выводе PUL состояние логического «0».
delay(40);//delayMicroseconds(500); // Выполняем задержку t4.
}
void dir_dir()
{
delay(100);
// Устанавливаем движение вала в пряммом направлении:
digitalWrite( pin_ENA, 0 ); // Разрешаем работу двигателя.
delayMicroseconds(500); // Выполняем задержку t1 (5мкс)
digitalWrite( pin_DIR, 0 ); // Указываем валу вижение в прямом направлении
delayMicroseconds(500);
}
void rev_dir()
{
delay(100);
// Устанавливаем движение вала в обратном направлении:
digitalWrite( pin_ENA, 0 ); // Разрешаем работу двигателя.
delayMicroseconds(500); // Выполняем задержку t1 (5мкс)
digitalWrite( pin_DIR, 1 ); // Указываем валу вижение в обратном направлении
delayMicroseconds(500); // Выполняем задержку t2 (5мкс)
}
void setup()
{
Serial.begin(115200);
pinMode( pin_ENA, OUTPUT ); // Конфигурируем вывод 2 Arduino как выход.
pinMode( pin_DIR, OUTPUT ); // Конфигурируем вывод 3 Arduino как выход.
pinMode( pin_PUL, OUTPUT ); // Конфигурируем вывод 4 Arduino как выход.
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))//если каретка не в начале
{
rev_dir();
}
while (digitalRead(pin_Datchik_2))
{
step();
Serial.println("SETUP D2_HIGH");
}
}
void loop()
{
if (digitalRead(pin_Datchik_1))//если каретка не в конце
{
if (!digitalRead((pin_Datchik_3)))//если сработал D_3
{
dir_dir();
/* //делаем цикл?
for (int i = 0; i < 100 ; i++)
{
step();
}
*/
while (digitalRead(pin_Datchik_1))//пока не сработал D_1
{
step();
Serial.println("LOOP D1_HIGH D3_LOW");
}
Serial.println("D1_LOW");
}
}
else //если каретка в конце
{
if (!digitalRead((pin_Datchik_3))) //если сработал D_3
{
rev_dir();
while (digitalRead(pin_Datchik_2))//пока не сработал D_2
{
step();
Serial.println("LOOP D2_HIGH D3_LOW");
}
Serial.println("D2_LOW");
}
}
}
D2 START
D1 STOP
D3