Как в скетче добавить еще шаги для рамдомного вращения двигателя?
- Войдите на сайт для отправки комментариев
Втр, 26/12/2017 - 17:16
Здравствуйте уважаемые форумчане! Сразу скажу, что я не программист, а "технарь". Сейчас переделываю дискотечный световой прибор типа "лунный цветок" на шаговые двигатели. Появилась необходимость в скетче для двух шаговых двигателей с рамдомным вращением. Собрал скетч для двух двигателей 28BYJ-48 с регулировкой скорости каждого по отдельности. Все работает, скорость у двигателей разная, а вот шаги одинаковые. Нужно чтобы кол-во шагов тоже было разное. Как теперь добавить еще шагов? Например, чтобы двигатель прокрутился на 180 градусов вперед, потом на 90 назад, потом на 360 вперед, на 360 назад и т.д. Вот скетч:
#include <AccelStepper.h>
#define HALFSTEP 8
// motor pins
#define motorPin1 3 // IN1 on the ULN2003 driver 1
#define motorPin2 4 // IN2 on the ULN2003 driver 1
#define motorPin3 5 // IN3 on the ULN2003 driver 1
#define motorPin4 6 // IN4 on the ULN2003 driver 1
#define motorPin5 8 // IN1 on the ULN2003 driver 2
#define motorPin6 9 // IN2 on the ULN2003 driver 2
#define motorPin7 10 // IN3 on the ULN2003 driver 2
#define motorPin8 11 // IN4 on the ULN2003 driver 2
// Initialize with pin sequence IN1-IN3-IN2-IN4 for using the AccelStepper with 28BYJ-48
AccelStepper stepper1(HALFSTEP, motorPin1, motorPin3, motorPin2, motorPin4);
AccelStepper stepper2(HALFSTEP, motorPin5, motorPin7, motorPin6, motorPin8);
// variables
int turnSteps = 600; // number of steps for a 90 degree turn
int lineSteps = -900; //number of steps to drive straight
int stepperSpeed1 = 300;
int stepperSpeed2 = 100;//speed of the stepper (steps per second)
int steps1 = 0; // keep track of the step count for motor 1
int steps2 = 0; // keep track of the step count for motor 2
boolean turn1 = false; //keep track if we are turning or going straight next
boolean turn2 = false; //keep track if we are turning or going straight next
void setup() {
delay(3000); //sime time to put the robot down after swithing it on
stepper1.setMaxSpeed(2000.0);
stepper1.move(1); // I found this necessary
stepper1.setSpeed(stepperSpeed1);
stepper2.setMaxSpeed(2000.0);
stepper2.move(1); // I found this necessary
stepper2.setSpeed(stepperSpeed2);
}
void loop() {
if (steps1 == 0) {
int target = 0;
if (turn1 == true) {
target = turnSteps;
}
else {
target = lineSteps;
}
stepper1.move(target);
stepper1.setSpeed(stepperSpeed1);
turn1 = !turn1;
}
if (steps2 == 0) {
int target = 0;
if (turn2 == true) {
target = turnSteps;
}
else {
target = lineSteps;
}
stepper2.move(target);
stepper2.setSpeed(stepperSpeed2);
turn2 = !turn2;
}
steps1 = stepper1.distanceToGo();
steps2 = stepper2.distanceToGo();
stepper1.runSpeedToPosition();
stepper2.runSpeedToPosition();
}
Заранее спасибо!
http://arduino.ru/forum/obshchii/vstavka-programmnogo-koda-v-temukomment...
Спасибо что ткнули носом!! Так?
Смотрите, добавляю еще шаги
потом в void loop делаю вот так для первого двигателя:
и... выдает ошибку:
Вот полный переделаный скетч:
Написано же закрывающих скобок не хватает - }. Даже двух, по-видимому.
А уж где они у Вас должны быть - Вам виднее! Проверяйте свои if-ы.
Знать бы еще где... Я вижу, что не хватает скобок на "выходе". На выходе чего? Буду пробовать "методом научного тыка". Спасибо! Перепроверю if-ы
Знать бы еще где... Я вижу, что не хватает скобок на "выходе". На выходе чего? Буду пробовать "методом научного тыка". Спасибо! Перепроверю if-ы
В Arduino IDE парные скобки подсвечиваются.
Когда в arduino IDE выдает ошибку, то розовым подсвечивает самую последнюю строку со скобкой №101. И что в ней не так? Там же закрытая скобка...
не понимаю, неужели в IDE трудно нажать Ctr-T ?
а то в ней не так, что у вас не хватает ДВУХ ! закрывающих скобок.
Похое, что все else без предваряющих скобок.
да он строки 57 и 66 впихнул, а закрывать эти условия не впихнул.
Ваще код какой то адский.
Накликаете сейчас беду - придет квон и тогда код действительно будет адский ))
После нажатия Ctr-T выдает: "Для автоформатирования не нужны изменения".
все ! надо клапу звать )))
Вы не поверите, но я всего неделю назад впервые в глаза увидел ардуино уно, и код этот от робомашинки, и поэтому прошу помощи. Я могу собрать усилитель мощности класса А-В на пару киловатт, это не проблема, а вот с программированием проблема, поэтому я здесь. Можете конечно постебаться, но что такое квон, я действительно не знаю, и как закрывать эти условия, я тоже не знаю. Посмотрите пост №2, этот код у меня работает. Да, я просто добавлял строки, и спрашивал, правильно ли я делаю... Но в ответ много букв и стебания, а помощи 0. Ну и за много букАв тож спасибо!
А если я усилитель мощности буду умощнять припаивая параллельно одним черненьким деталькам другие черненькие - это каково будет с вашей точки зрения?
Удвойте в строках 56 и 65 фигурные скобки. Все скомпилируется.
не так не надо !!!
все равно вы не поймете и так и будете пальцем в небо !
уберите все из фунции loop, решите чего вы хотите от моторов
ознакомтесь ВНИМАТЕЛЬНО с этим
что то попробуйте, не получится возвращайтесь с конкретными вопросами, а не с вопросоми туда или не туда я чего то вставил.
я думаю на первое время вам хватит одной функции - mystepper.runToPosition();
А если я усилитель мощности буду умощнять припаивая параллельно одним черненьким деталькам другие черненькие - это каково будет с вашей точки зрения?
Удвойте в строках 56 и 65 фигурные скобки. Все скомпилируется.
xDriver, огромное спасибо! Хорошее "пособие" начинающему.
Что то у меня не получается "цитировать"... выдает ошибку:
Internal Server Error
The server encountered an internal error or misconfiguration and was unable to complete your request.
Please contact the server administrator, zzziii@mail.ru and inform them of the time the error occurred, and anything you might have done that may have caused the error.
More information about this error may be available in the server error log.
Я вроде не косячил...