Доброго времени суток. Волею случая только начинаю осваивать среду ардуино и многие моменты еще не понимаю , как они работают или почему не работают. Для себя немного уже разобрался принцип написания скетча для работы с Шаговыми,Серво и бесколлекторными двигателями. Но у меня что-то не получается совместить в скетче работу разных типов двигателей и их управление с джостика. Часть писал сам, часть собирал из других готовых скетчей. Заранее спасибо, прошу указать на мои ошибки, или показать готовый скетч. Код (C++): #include <Stepper.h> float N = 10. ; int xValue, yValue; const int stepsmotor1 = 2000; Stepper myStepper1(stepsmotor1, 4, 5, 6, 7); int ENB = 9; int in1 = 10; int in2 = 11; int joypinx = A1; int joypiny = A0; int joypinf = A2; int led = 8; void setup() { pinMode(ENB, OUTPUT); pinMode(in1, OUTPUT); pinMode(in2, OUTPUT); pinMode(joypinx, INPUT); pinMode(joypiny, INPUT); pinMode(joypinf, INPUT); pinMode(led, OUTPUT); Serial.begin(9600); } void loop() { joypinx = analogRead(joypinx)>>7; // shift 7 0.1.2.3.4.5.6.7 joypiny = analogRead(joypiny)>>7; // shift 7 0.1.2.3.4.5.6.7 joypinf = analogRead(joypinf)>>7; // shift 7 0.1.2.3.4.5.6.7 Serial.print('X');Serial.print(joypinx);Serial.print(';'); Serial.print('Y');Serial.print(joypiny);Serial.print(';'); Serial.print('F');Serial.print(joypinf);Serial.println(';'); //test if(joypinx==0){in1, in2 .step(+1);} //step1(false,stepxcor,sp1table);}//speed if(joypinx==7){in1,in2 .step(-1);} //step1(true ,stepxcor,sp1table);}//speed if(joypiny==0){myStepper1.step(+1);} //step2(false,stepycor,sp2laser);}//speed if(joypiny==7){myStepper1.step(-1);} //step2(true ,stepycor,sp1laser);}//speed !!! sp1laser !!! slow down if(joypinf==0) { digitalWrite(led2, LOW); digitalWrite(led3, LOW);} // laser to work else { digitalWrite(led2,HIGH); digitalWrite(led3,HIGH); } // laser to work }
Это будет двух осевой штатив. А в дальнейшем ,как разберусь с этим, на его базе хочу сделать радиоуправляемую турель для страйкбола.
Хорошо ,это уяснил. Но и с другим кодом почему то тоже не работает. Если он стоит в коде совместно с Шаговым то есть step. Я предполагаю, что не корректно присваиваю каждому из моторов свою ось (x/y). Собственно даже когда часть кода брал для шагового двигателя , а другую часть от бесколлекторного. Итог один, не работает. Код (C++): { xValue = xValue + ( (map(analogRead(xPin), 0, 1024, 0, 510) -xValue)*2)/(N+1) ; yValue = yValue + ( (map(analogRead(yPin), 0, 1024, 0, 510) -yValue)*2)/(N+1) ; Serial.print(xValue); Serial.print("\t"); Serial.print(yValue); Serial.println("\t"); if(xValue>255) { analogWrite(ENA, xValue-255); digitalWrite(in1, HIGH); digitalWrite(in2, LOW); } else { analogWrite(ENA, 255-xValue); // digitalWrite(in1, LOW); digitalWrite(in2, HIGH); }
Да по отдельности все работает без проблем. Со всеми типами двигателей научился работать не важно с каким количеством моторов, а вот чтобы разные типы двигателей одновременно в одном скетче, вот возникли проблемы.
Доброго времени суток, все вожусь со скетчем одновременной работы бесколлекторного мотора с шаговым двигателем. В представленном скетче оба мотора двигаются , но почему-то только по одно оси. Помогите исправить сей момент. Код (C++): #include <Stepper.h> int xValue; float N = 10. ; const int stepsmotor1 = 2000; Stepper myStepper1(stepsmotor1, 4, 5, 6, 7); int ENA = 9; int in1 = 10; int in2 = 11; int joypinx = A1; int joypiny = A0; int joypinf = A2; int led = 8; void setup() { pinMode(ENA, OUTPUT); pinMode(in1, OUTPUT); pinMode(in2, OUTPUT); pinMode(joypinx, INPUT); pinMode(joypiny, INPUT); pinMode(joypinf, INPUT_PULLUP); pinMode(led, OUTPUT); Serial.begin(9600); myStepper1.setSpeed(80); } void loop() { if (digitalRead(joypinf) == HIGH) { digitalWrite(led, HIGH); } else { digitalWrite(led, LOW); xValue = xValue + ( (map(analogRead(joypinx), 0, 1024, 0, 510) -xValue)*2)/(N+1) ; Serial.print(xValue); Serial.print("\t"); if(xValue>255) { analogWrite(ENA, xValue-255); digitalWrite(in1, HIGH); digitalWrite(in2, LOW); } else { analogWrite(ENA, 255-xValue); digitalWrite(in1, LOW); digitalWrite(in2, HIGH); } ////////////////////////////////////////////////////////////////////////// Serial.print('Y');Serial.print(joypiny);Serial.print(';'); joypiny = analogRead(joypiny)>>7; if(joypiny==0){myStepper1.step(+1);} if(joypiny==7){myStepper1.step(-1);} } }
Ветку не читал, но осуждаю Это все делается без ардуино на стандартном пульте для р/у моделей, приемнике и сервах