Имеется готовый (с технической части) проект манипулятора. Если с техникой на короткой ноге, то вот с программным обеспечением возникли трудности. Манипулятор базируется на шаговых двигателях 28BYJ-48. На просторах интернета был взят вот этот скетч: Код (C++): // подключение библиотеки #include<AccelStepper.h> #define HALFSTEP 8 // Инициализируемся с последовательностью выводов IN1-IN3-IN2-IN4 // для использования AccelStepper с 28BYJ-48 AccelStepper stepper1(HALFSTEP, 8, 10, 9, 11); // клавиши выбора режима int pinButtons[]={5,6,7}; int lastButtons[]={0,0,0}; int currentButtons[]={0,0,0}; // boolean go=false; void setup(){ Serial.begin(9600); stepper1.setMaxSpeed(1000.0); stepper1.setAcceleration(100.0); stepper1.setSpeed(-500); } void loop() { // проверка нажатия кнопок выбора программ for(int i=0;i<3;i++) { currentButtons[i] = debounce(lastButtons[i],pinButtons[i]); // если нажатие... if (lastButtons[i] == 0 && currentButtons[i] == 1) { switch(i) { case 0: // против часовой stepper1.setSpeed(500); go=true; Serial.println("CW"); break; case 1: // стоп stepper1.stop(); go=false; Serial.println("stop"); break; case 2: // по часовой stepper1.setSpeed(-500); go=true; Serial.println("CCW"); break; default: break; } } lastButtons[i] = currentButtons[i]; } if(go==true) stepper1.runSpeed(); } // Функция сглаживания дребезга int debounce(int last,int pin1){ int current = digitalRead(pin1); // Считать состояние кнопки if (last != current) // если изменилось... { delay(5); // ждем 5мс current = digitalRead(pin1); // считываем состояние кнопки return current; // возвращаем состояние кнопки } } Он работает, но там 3 двигателя, то бишь нужно еще добавить управление 2 двигателями и одной сервой. Пробовал править, добавить еще 2 двигателя на другие пины (использую Мегу 2560), но не получается. Помогите пожалуйста подсказками. (Желающие покидаться тапками, да я знаю нужно учить мат часть и все такое, но затея эта с благими намерениями, дабы заинтересовать робототехникой детей в школе, сам выучить все физически не успеваю. Спасибо за понимание).
Тапками кидаться ты запретил, пива не ставишь, вот скажи, какой интерес тебе что-то советовать и с тобой возиться? Мотивация-то какова? И, да, этот скетч не будет нормально работать на 2 и более моторов. Надо не добавлять, а переписывать, в частности, избавляться от delay.
1. Используйте уже готовые драйверы для шаговиков,где импульсом шаг, а комбинацией направление и размер этого шага. Избежите лишних сложностей, рывков и глюков. 2. Избавьтесь от delay даже на 5 мс.
Для начала продумайте и распишите ваш алгоритм управления манипулятором. Прикиньте свои финансовые возможности для этого проекта и озвучьте. Тогда народ или возмется или что то посоветует или озвучит за сколько сделают.
Алгоритм работы без цыклов, то бишь просто движение по нажатию кнопки на пульте. Пульт по 3 кнопки на каждый двигатель (стоп, лево (перед), (назад) право) и энкодер для управления сервоприводом на захвате. Составные, манипулятор взят вот тут: https://www.thingiverse.com/thing:2838859 Есть ардуины всех моделей: Mega 2560, Uno, Nano. Двигатели шаговые 28BYJ-48, сервоприводы. Финансовые возможности не большие, делается на энтузиазме, дабы заинтересовать подрастающие поколения. Манипулятор будет показываться в школе на уроках информатики. Но как я уже писал, понимаю что за просто так ничего не бывает. В пределах разумного разумеется.
Использую драйвера которые в комплекте с шаговиками, других нету увы. За совет спасибо, попробую сделать!)
к сожалению это ну никак не алгоритм работы вашего манипулятора. у вас движение вперёд-назад сложное. участвуют два мотора. для вас самый простой способ-посидеть вечерок в гуглях и найти готовую программу. раз на видео всё работает, значит есть.....
Спасибо большое за помощь! Такую ответственность в подходе к работе в наше время трудно встретить! Манипулятор теперь работает как швейцарские часы)))