Zmień to:
Kod: Zaznacz cały
digitalWrite(Stepper_Y_Step, LOW);
digitalWrite(Stepper_Y_Step, HIGH);
Kod: Zaznacz cały
digitalWrite(Stepper_Y_Step, LOW);
delay(1);
digitalWrite(Stepper_Y_Step, HIGH);
delay(1);
Wróć do „Potrzebna pomoc przy "prostym" kodzie”
Kod: Zaznacz cały
digitalWrite(Stepper_Y_Step, LOW);
digitalWrite(Stepper_Y_Step, HIGH);
Kod: Zaznacz cały
digitalWrite(Stepper_Y_Step, LOW);
delay(1);
digitalWrite(Stepper_Y_Step, HIGH);
delay(1);
Kod: Zaznacz cały
//
// Limit Switches
//
#define X_MIN_PIN 3
#ifndef X_MAX_PIN
#define X_MAX_PIN 2
#endif
#define Y_MIN_PIN 14
#define Y_MAX_PIN 15
#define Z_MIN_PIN 18
#define Z_MAX_PIN 19
//
// Z Probe (when not Z_MIN_PIN)
//
#ifndef Z_MIN_PROBE_PIN
#define Z_MIN_PROBE_PIN 32
#endif
//
// Steppers
//
#define X_STEP_PIN 54
#define X_DIR_PIN 55
#define X_ENABLE_PIN 38
#ifndef X_CS_PIN
#define X_CS_PIN 53
#endif
#define Y_STEP_PIN 60
#define Y_DIR_PIN 61
#define Y_ENABLE_PIN 56
#ifndef Y_CS_PIN
#define Y_CS_PIN 49
#endif
Kod: Zaznacz cały
int Stepper_X_En = 38;
Kod: Zaznacz cały
pinMode(Stepper_X_En, OUTPUT);
digitalWrite(Stepper_X_En, LOW);
Kod: Zaznacz cały
//..........................................
// stałe
// do pracy
const int IleKrokow_X = 200;
const int IleKrokow_Y = 200;
//..........................................
//..........................................
// sprzęt
// deklaracja silnika (rpm i linie)
int Stepper_X_Dir = 2;
int Stepper_X_Step = 3;
int Stepper_Y_Dir = 4;
int Stepper_Y_Step = 5;
// linie z krańcówkami
int EndStop_X = 13;
int EndStop_Y = 14;
//..........................................
//..........................................
// init
void setup() {
pinMode(Stepper_X_Dir, OUTPUT);
pinMode(Stepper_X_Step, OUTPUT);
pinMode(Stepper_Y_Dir, OUTPUT);
pinMode(Stepper_Y_Step, OUTPUT);
digitalWrite(Stepper_X_Dir, LOW);
digitalWrite(Stepper_Y_Dir, LOW);
pinMode(EndStop_X, INPUT_PULLUP);
pinMode(EndStop_Y, INPUT_PULLUP);
}
//..........................................
//..........................................
// zmienne
int pozycja = 0; // tymczasowe do liczenia kroków
int algorytm_poz = 0; // początkowa pozycja algroytmu pracy
//..........................................
//..........................................
// pętla
// rozbijam pracę bo OIDW z loopa trzeba wychodzić; inaczej było by znacznie prościej
void loop() {
switch(algorytm_poz) {
//.........................................
case 0: // Y - jazda do krańcówki
if(digitalRead(EndStop_Y) == LOW) {
// jest krańcówka
algorytm_poz++; // następny krok
pozycja = IleKrokow_Y; // tyle do przejechania
digitalWrite(Stepper_Y_Dir, HIGH); // kierunek kolejnego ruchu
break;
}
// nie ma krańcówki
digitalWrite(Stepper_Y_Step, LOW);
digitalWrite(Stepper_Y_Step, HIGH);
break;
//.........................................
//.........................................
case 1: // Y - odjazd o ileś krokow
if(pozycja > 0) {
digitalWrite(Stepper_Y_Step, LOW);
digitalWrite(Stepper_Y_Step, HIGH);
pozycja--;
} else {
algorytm_poz++; // następny krok algroytmu
digitalWrite(Stepper_Y_Dir, LOW); // kierunek kolejnego ruchu
}
break;
//.........................................
//.........................................
case 2: // czekam 1 s
delay(1000);
algorytm_poz++;
break;
//.........................................
//.........................................
case 3: // X - jazda do krańcówki
if(digitalRead(EndStop_X) == LOW) {
// jest krańcówka
algorytm_poz++; // następny krok
pozycja = IleKrokow_X; // tyle do przejechania
digitalWrite(Stepper_X_Dir, HIGH); // kierunek kolejnego ruchu
break;
}
// nie ma krańcówki
digitalWrite(Stepper_X_Step, LOW);
digitalWrite(Stepper_X_Step, HIGH);
break;
//.........................................
//.........................................
case 4: // X - odjazd o ileś krokow
if(pozycja > 0) {
digitalWrite(Stepper_X_Step, LOW);
digitalWrite(Stepper_X_Step, HIGH);
pozycja--;
} else {
algorytm_poz++; // następny krok algroytmu
digitalWrite(Stepper_X_Dir, LOW); // kierunek kolejnego ruchu
}
break;
//.........................................
//.........................................
case 5: // czekam 1 s
delay(1000);
algorytm_poz = 0; // algroytm od początku
break;
//.........................................
}
}
//..........................................
Kod: Zaznacz cały
#include <Stepper.h>
//..........................................
// stałe
// do pracy
const int IleKrokow_X = 200;
const int IleKrokow_Y = 200;
//..........................................
//..........................................
// sprzęt
// deklaracja silnika (rpm i linie)
Stepper myStepper_X(100, 2, 3, 4, 5);
Stepper myStepper_Y(100, 6, 7, 8, 9);
// linie z krańcówkami
int EndStop_X = 13;
int EndStop_Y = 14;
//..........................................
//..........................................
// init
void setup() {
pinMode(EndStop_X, INPUT_PULLUP);
pinMode(EndStop_Y, INPUT_PULLUP);
}
//..........................................
//..........................................
// zmienne
int pozycja = 0; // tymczasowe do liczenia kroków
int algorytm_poz = 0; // początkowa pozycja algroytmu pracy
//..........................................
//..........................................
// pętla
// rozbijam pracę bo OIDW z loopa trzeba wychodzić; inaczej było by znacznie prościej
void loop() {
switch(algorytm_poz) {
//.........................................
case 0: // Y - jazda do krańcówki
if(digitalRead(EndStop_Y) == LOW) {
// jest krańcówka
algorytm_poz++; // następny krok
pozycja = IleKrokow_Y; // tyle do przejechania
break;
}
// nie ma krańcówki
myStepper_Y.step(-1);
break;
//.........................................
//.........................................
case 1: // Y - odjazd o ileś krokow
if(pozycja > 0) {
myStepper_Y.step(1);
pozycja--;
} else {
algorytm_poz++; // następny krok algroytmu
}
break;
//.........................................
//.........................................
case 2: // czekam 1 s
delay(1000);
algorytm_poz++;
break;
//.........................................
//.........................................
case 3: // X - jazda do krańcówki
if(digitalRead(EndStop_X) == LOW) {
// jest krańcówka
algorytm_poz++; // następny krok
pozycja = IleKrokow_X; // tyle do przejechania
break;
}
// nie ma krańcówki
myStepper_X.step(-1);
break;
//.........................................
//.........................................
case 4: // X - odjazd o ileś krokow
if(pozycja > 0) {
myStepper_X.step(1);
pozycja--;
} else {
algorytm_poz++; // następny krok algroytmu
}
break;
//.........................................
//.........................................
case 5: // czekam 1 s
delay(1000);
algorytm_poz = 0; // algroytm od początku
break;
//.........................................
}
}
//..........................................