27-02-2019, 09:19
Witam, to mój pierwszy post i początek z Arduino więc proszę o wyrozumiałość.
Buduję proste jak budowa cepa urządzenie a jednak się zawiesza.
Thumb joystick z płytką -> Pololu A-star 328PB -> ULN2003 + silnik krokowy 28BYJ-48
Silnik ma pracować w lewo i w prawo z 4 różnymi prędkościami, gdy joystick jest w pozycji domyślnej to silnik ma stać w miejscu. Niby działa ale tylko w jedną stronę, a w drugą wykonuje jeden krok i układ się zawiesza. Poniżej wklejam kod być może ktoś znajdzie w nim błąd.
Buduję proste jak budowa cepa urządzenie a jednak się zawiesza.
Thumb joystick z płytką -> Pololu A-star 328PB -> ULN2003 + silnik krokowy 28BYJ-48
Silnik ma pracować w lewo i w prawo z 4 różnymi prędkościami, gdy joystick jest w pozycji domyślnej to silnik ma stać w miejscu. Niby działa ale tylko w jedną stronę, a w drugą wykonuje jeden krok i układ się zawiesza. Poniżej wklejam kod być może ktoś znajdzie w nim błąd.
Cytat:
#include <Stepper.h>
#define MOT_1 7
#define MOT_2 8
#define MOT_3 9
#define MOT_4 2
int XPIN = A2;
int steps = 2050;
Stepper motor(steps, MOT_1, MOT_3, MOT_2, MOT_4);
void setup() {
pinMode(XPIN, INPUT);
Serial.begin(9600);
}
void loop() {
int axisPosition = analogRead(XPIN);
Serial.println(axisPosition);
if (axisPosition > 530) {
//motor_CW(axisPosition)
//digitalWrite(CWPIN, HIGH);
//digitalWrite(CCWPIN, LOW);
motor.setSpeed(5);
motor.step(1);
if (axisPosition > 650 && axisPosition <= 800) {
motor.setSpeed(7);
motor.step(1);
}
if (axisPosition > 800 && axisPosition <= 950 ) {
motor.setSpeed(9);
motor.step(1);
}
if (axisPosition > 950) {
motor.setSpeed(14);
motor.step(1);
}
}
if (axisPosition < 510) {
//motor_CCW(axisPosition)
//digitalWrite(CWPIN, LOW);
//digitalWrite(CCWPIN, HIGH);
motor.setSpeed(5);
motor.step(-1);
if (axisPosition < 450 && axisPosition >= 250 ) {
motor.setSpeed(7);
motor.step(-1);
}
if (axisPosition < 250 && axisPosition >= 150) {
motor.setSpeed(9);
motor.step(-1);
}
if (axisPosition < 150) {
motor.setSpeed(12);
motor.step(-1);
}
}
delay(10);
}