Добрый день. Начал заниматься ардуино и сразу с практики. Цель была создать два вращающихся в разные стороны шаговых двигателя, а управление ими осуществлялось бы с помощью кнопок. Нашел идеальное для себя видео, где мужик показал как собрать то, что мне нужно: https://www.youtube.com/watch?v=-e9nUEuuTyU&t=15s&ab_channel=MasterKolotushkinArduino. Однако я столкнулся с проблемой что на моей плате Arduino UNO нет таких контактов подключения питания от драйвера к плате, как на его Uno. Прилагаю схему подключения по его видосу и мою плату.
А также код, представленный челом с видео:
const int buttonPin1 = 15; //15 контакт он же А1 мотор 1 вправо
const int buttonPin2 = 16; //16 контакт он же А2 мотор 1 влево
const int buttonPin3 = 17; //17 контакт он же А3 мотор 2 вправо
const int buttonPin4 = 18; //18 контакт он же А4 мотор 2 влево
int buttonState1 = 0;
int buttonState2 = 0;
int buttonState3 = 0;
int buttonState4 = 0;
int i1 = 0;
int i2 = 0;
int i3 = 0;
int i4 = 0;
int t1 = 4; //НАСТРОЙКА!!!//
int t2 = 4; //НАСТРОЙКА!!!//
void setup() {
//4, 5, 6, 7 контакты для 1 двигателя
pinMode(4, OUTPUT);
pinMode(5, OUTPUT);
pinMode(6, OUTPUT);
pinMode(7, OUTPUT);
// 12, 13, 10, 11 контакты для 2 двигателя
pinMode(12, OUTPUT);
pinMode(13, OUTPUT);
pinMode(10, OUTPUT);
pinMode(11, OUTPUT);
// контакты для кнопок
pinMode(15, INPUT_PULLUP); //А1
pinMode(16, INPUT_PULLUP); //А2
pinMode(17, INPUT_PULLUP); //А3
pinMode(18, INPUT_PULLUP); //А4
}
void prodlit() { //функция для продления цикла
buttonState1 = digitalRead( buttonPin1); buttonState2 = digitalRead( buttonPin2);
buttonState3 = digitalRead( buttonPin3); buttonState4 = digitalRead( buttonPin4);
if (buttonState1 == LOW) {
i1--;
} if (buttonState2 == LOW) {
i2--;
}
if (buttonState3 == LOW) {
i3--;
} if (buttonState4 == LOW) {
i4--;
}
}
void stopPins() {
digitalWrite(4, LOW); digitalWrite(5, LOW); digitalWrite(6, LOW);
digitalWrite(7, LOW); digitalWrite(10, LOW); digitalWrite(11, LOW);
digitalWrite(12, LOW); digitalWrite(13, LOW); delay(500);
}
void loop() {
buttonState1 = digitalRead( buttonPin1);
if (buttonState1 == LOW) {
while (i1 < 1) { //цикл для вращения мотора 1 вправо
digitalWrite(7, HIGH); digitalWrite(5, LOW); delay(t1);
digitalWrite(6, HIGH); digitalWrite(4, LOW); delay(t1);
digitalWrite(5, HIGH); digitalWrite(7, LOW); delay(t1);
digitalWrite(4, HIGH); digitalWrite(6, LOW); delay(t1);
i1++; prodlit();
} i1 = 0; stopPins();
}
buttonState2 = digitalRead( buttonPin2);
if (buttonState2 == LOW) {
while (i2 < 1) { //цикл для вращения мотора 1 влево
digitalWrite(4, HIGH); digitalWrite(6, LOW); delay(t1);
digitalWrite(5, HIGH); digitalWrite(7, LOW); delay(t1);
digitalWrite(6, HIGH); digitalWrite(4, LOW); delay(t1);
digitalWrite(7, HIGH); digitalWrite(5, LOW); delay(t1);
i2++; prodlit();
} i2 = 0; stopPins();
}
buttonState3 = digitalRead( buttonPin3);
if (buttonState3 == LOW) {
while (i3 < 1) { //цикл для вращения мотора 2 вправо
digitalWrite(13, HIGH); digitalWrite(11, LOW); delay(t2);
digitalWrite(12, HIGH); digitalWrite(10, LOW); delay(t2);
digitalWrite(11, HIGH); digitalWrite(13, LOW); delay(t2);
digitalWrite(10, HIGH); digitalWrite(12, LOW); delay(t2);
i3++; prodlit();
} i3 = 0; stopPins();
}
buttonState4 = digitalRead( buttonPin4);
if (buttonState4 == LOW) {
while (i4 < 1) { //цикл для вращения мотора 2 влево
digitalWrite(10, HIGH); digitalWrite(12, LOW); delay(t2);
digitalWrite(10, HIGH); digitalWrite(12, LOW); delay(t2);
digitalWrite(11, HIGH); digitalWrite(13, LOW); delay(t2);
digitalWrite(12, HIGH); digitalWrite(10, LOW); delay(t2);
digitalWrite(13, HIGH); digitalWrite(11, LOW); delay(t2);
i4++; prodlit();
} i4 = 0; stopPins();
}
}
Вопрос: можно ли как-то исправить ситуацию или только покупать плату как на видео? мб по-другому подключить что-то или изменить код?
Буду рад вашей помощи!