#define POT1 A1 //Пин A1 подключеие потенциометра
const uint8_t DIR = 11; //Пин 11 направление вращения
const uint8_t STEP = 12;//Пин 12 импульсов для шагового двигателя
const uint8_t ENA = 13; //Пин 13 разрешение вращения
int dx1 = 14; //Пин A0 подключеие датчика холла начального положения
int b1 = 10;//пин 10 - подключение кнопки пуск-зажим
int b2 = 9;//пин 9 - подключение кнопки стоп-разжим
int b3 = 8;//пин 8 - подключение кнопки пуск- сварки
int b4 = 7;//Пин 7 - подключение тумблера левая/правая стойка
int led1 = 5;//пин 5 - подключение опт.реле зажим - разжим
int led2 = 4;//пин 4 - подключение опт.реле подвод горелок
int led3 = 3;//пин 3 - подключение опт.реле сварка
int led4 = 2;//пин 2 - подключение опт.реле сварка
int knopka=0;
int sensorValue1; //Значения с потенциометра
int a = 0;//Начльное положение двигателя
int n_svarka; // Число шагов сварки
bool flag = 0;//Логический флаг для рабочего режима
uint32_t t;
uint32_t t1;
int x;
int n = 4; //Коэф. от режима установки шага на драйвере
int t0; //Время между импульсами при выходе в 0
void setup() {
Serial.begin(115200);
pinMode(POT1, INPUT); // Конфигурируем вывод Arduino как вход
pinMode(DIR, OUTPUT); // Конфигурируем вывод Arduino как выход.
pinMode(STEP, OUTPUT); // Конфигурируем вывод Arduino как выход.
pinMode(ENA, OUTPUT); // Конфигурируем вывод Arduino как выход.
pinMode(led1, OUTPUT); // Конфигурируем вывод Arduino как выход.
pinMode(led2, OUTPUT); // Конфигурируем вывод Arduino как выход.
pinMode(led3, OUTPUT); // Конфигурируем вывод Arduino как выход.
pinMode(led4, OUTPUT); // Конфигурируем вывод Arduino как выход.
pinMode(dx1, INPUT); // Конфигурируем вывод Arduino как вход.
pinMode(b1, INPUT); // Конфигурируем вывод Arduino как вход.
pinMode(b2, INPUT); // Конфигурируем вывод Arduino как вход.
pinMode(b3, INPUT); // Конфигурируем вывод Arduino как вход.
pinMode(b4, INPUT); // Конфигурируем вывод Arduino как вход.
digitalWrite(led1, HIGH);// установка на выходе высокого уровня т.к. реле включается нулём
digitalWrite(led2, HIGH);// установка на выходе высокого уровня т.к. реле включается нулём
digitalWrite(led3, HIGH);// установка на выходе высокого уровня т.к. реле включается нулём
digitalWrite(led4, HIGH);// установка на выходе высокого уровня т.к. реле включается нулём
digitalWrite(ENA, 0); //Выключаем мотор, чтобы не грелся
t0 = 2000 / n;
}
void loop() {
if (digitalRead(b1) == 0){
digitalWrite(led1, LOW);
}
if (digitalRead(b2) == 1){
digitalWrite(led1, HIGH);
}
if (digitalRead(b4) == 0){
a = 0;} //Начало1
else {
a = 0;} //Начало2
if (digitalRead(b3)==0&&knopka==0){
delay(100);
knopka++;
flag = 1;
if (flag == 1){digitalWrite(ENA, 1);}
while(digitalRead(dx1) == 1){
digitalRead(dx1);
digitalWrite(DIR, 1);
digitalWrite(STEP, 0);
delayMicroseconds(2000);
digitalWrite(STEP, 1);
delayMicroseconds(2000);
}
for(int i = 0; i < a; i++){
digitalWrite(STEP, 0);
delayMicroseconds(t0);
digitalWrite(STEP, 1);
delayMicroseconds(t0);
}
digitalWrite(led2, LOW);
delay(2000);
digitalWrite(led3, LOW);
digitalWrite(led4, LOW);
delay(500);
digitalWrite(led3, HIGH);
digitalWrite(led4, HIGH);
}
if (digitalRead(b3)==LOW&&knopka==1){
delay(200);
knopka--;
digitalWrite(DIR, HIGH);
delayMicroseconds(5);
for(int i = 0; i < 50 * n; i++){
digitalWrite(STEP, 0);
delayMicroseconds(t0);
digitalWrite(STEP, 1);
delayMicroseconds(t0);
}
uint32_t t = analogRead(POT1); //Получение данных от задатчика
t = map(t, 0, 1023, 9000, 2000);
t1 = t / n;
n_svarka = 850 * n;
digitalWrite(led3, LOW);
digitalWrite(led4, LOW);
for(int i = 0; i < n_svarka; i++){
digitalWrite(ENA, 1);
digitalWrite(STEP, 0);
delayMicroseconds(t1);
digitalWrite(STEP, 1);
delayMicroseconds(t1);
}
digitalWrite(led3, HIGH);
digitalWrite(led4, HIGH);
digitalWrite(led2, HIGH);
for(int i = 0; i < 10 * n; i++){
digitalWrite(ENA, 1);
digitalWrite(STEP, 0);
delayMicroseconds(t0);
digitalWrite(STEP, 1);
delayMicroseconds(t0);
}
digitalWrite(DIR, LOW);
delay(500);
for(int i = 0; i < 850 * n; i++){
digitalWrite(ENA, 1);
digitalWrite(STEP, 0);
delayMicroseconds(t0);
digitalWrite(STEP, 1);
delayMicroseconds(t0);
}
digitalWrite(ENA, 0);
}
flag = 0;
if (digitalRead(b3)==HIGH&&knopka==0){
knopka=0;
}
}