Здраствуйте! Подскажите у меня ардуино мега с freeduino motorshield v3 и к нему подключены два шаговика и два серво.
Есть необходимость подключить еще серво, возможно ли подключить доп. серво например с 22 по 52 пин?
Страницы 1
Вы не вошли. Пожалуйста, войдите или зарегистрируйтесь.
Форум freeduino.ru → Сообщения от DanielR
Страницы 1
Здраствуйте! Подскажите у меня ардуино мега с freeduino motorshield v3 и к нему подключены два шаговика и два серво.
Есть необходимость подключить еще серво, возможно ли подключить доп. серво например с 22 по 52 пин?
Все разобрался. Теперь не будут греться шаговики. Просто в данном случае коммада stepper1.disableOutputs () не работает вместо нее надо motor1.release();. Так как управление идет через AFMotor.h.
Эта проблемма серьезно мешает процессу моего творческого проекта. Пытаюсь сделать XY платформу которая бы функционировала длительное время до 10 часов. Вот есть видео того что пока получилось
https://vimeo.com/30379866
У меня через serial посылаются значения положения шаговиков. Использую библеотеки AccelStepper и AFMotor.
Читал что типа ничего не сделаеш такова особенность шаговиков. Но вот в библеотеке AccelStepper есть комманда disableOutputs (). Поидее то что надо - в момент остановки шаговика выключалось бы напряжение на него и он бы остывал. Вот только в моем случае не работает. Незнаю куда вписать эту комманду. В коде пока ее нет и как вписать понимание есть но вот если просто даже я впишу stepper1.disableOutputs () в конце лупа - неработает. Мотор все равно продолжает ездить по коммандам.
Такой код ардуино:
#include <AccelStepper.h>
#include <AFMotor.h>AF_Stepper motor1(96, 1);
AF_Stepper motor2(96, 2);
String inString = ""; // string to hold input
int currentColor = 0;
int m1pos, m1speed, m1accel, m2pos, m2speed, m2accel, blue = 0;// wrappers for the first motor!
void forwardstep1() {
motor1.onestep(FORWARD, SINGLE);
}
void backwardstep1() {
motor1.onestep(BACKWARD, SINGLE);
}
// wrappers for the second motor!
void forwardstep2() {
motor2.onestep(FORWARD, SINGLE);
}
void backwardstep2() {
motor2.onestep(BACKWARD, SINGLE);
}// Motor shield has two motor ports, now we'll wrap them in an AccelStepper object
AccelStepper stepper1(forwardstep1, backwardstep1); // use functions to step
AccelStepper stepper2(forwardstep2, backwardstep2);void setup() {
// stepper1.moveTo(0);
// stepper1.setMaxSpeed(100);
// stepper1.setAcceleration(100);
// stepper2.setMaxSpeed(300.0);
// stepper2.setAcceleration(100.0);
// stepper2.moveTo(0);Serial.begin(9600);
}void loop() {
int inChar;
if (Serial.available() > 0) {
inChar = Serial.read();
}if (isDigit(inChar)) {
inString += (char)inChar;
}if (inChar == ',') {
switch (currentColor) {
case 0: // 0 = red
m1pos = inString.toInt();
// clear the string for new input:
inString = "";
break;
case 1: // 1 = green:
m1speed = inString.toInt();
// clear the string for new input:
inString = "";
break;
case 2:
m1accel = inString.toInt();
inString = "";
break;
case 3:
m2pos = inString.toInt();
inString = "";
break;
case 4:
m2speed = inString.toInt();
inString = "";
break;
case 5:
m2accel = inString.toInt();
inString = "";
break;
}
currentColor++;
}
if (inChar == '\n') {
blue = inString.toInt();
inString = "";
stepper1.moveTo(m1pos);
stepper1.setMaxSpeed(m1speed+10);
stepper1.setAcceleration(m1accel+10);
stepper2.moveTo(m2pos);
stepper2.setMaxSpeed(m2speed+10);
stepper2.setAcceleration(m2accel+10);currentColor = 0;
}
stepper1.run();
stepper2.run();
}
Страницы 1
Форум freeduino.ru → Сообщения от DanielR
Форум работает на PunBB, при поддержке Informer Technologies, Inc