Potrzebna pomoc przy "prostym" kodzie
-
- Konto z ograniczeniami
- Postów w temacie: 5
- Posty: 39
- Rejestracja: 26 mar 2019, 18:21
- x 1
Potrzebna pomoc przy "prostym" kodzie
Cześć
Potrzebuje pomocy przy napisaniu kodu
Mam arduino mega 2560 i ramps 1.6 do tego stepstick a4988, nema17
Potrzebuję żeby silniczki wykonywały taką "sekwencję" pracy w kółko
Używane osie X,Y
1.Zaczyna Silnik osi Y obrót o np. 200 kroków, dochodzi do krańcówki i po jej wciśnieciu od razu wraca o 200 kroków po tym sekunda przerwy
2. Uruchamia się silnik osi X i też obraca się o 200 kroków, dochodzi do krańcówki i wraca o taką samą ilość kroków
3. Gdy silniczki wykonają te ruchy to sekunda przerwy i powrót do punktu 1 i tak ciągle
Z góry dziękuję i mam nadzieję że zrozumiale napisałem to wszystko
Potrzebuje pomocy przy napisaniu kodu
Mam arduino mega 2560 i ramps 1.6 do tego stepstick a4988, nema17
Potrzebuję żeby silniczki wykonywały taką "sekwencję" pracy w kółko
Używane osie X,Y
1.Zaczyna Silnik osi Y obrót o np. 200 kroków, dochodzi do krańcówki i po jej wciśnieciu od razu wraca o 200 kroków po tym sekunda przerwy
2. Uruchamia się silnik osi X i też obraca się o 200 kroków, dochodzi do krańcówki i wraca o taką samą ilość kroków
3. Gdy silniczki wykonają te ruchy to sekunda przerwy i powrót do punktu 1 i tak ciągle
Z góry dziękuję i mam nadzieję że zrozumiale napisałem to wszystko
Ender-3
Czarna Perła, Drukareczka pod wielkie wydruki 170cm - 70cm -70cm Dla Nylonu (własny projekt i wykonanie)
Czarna Perła, Drukareczka pod wielkie wydruki 170cm - 70cm -70cm Dla Nylonu (własny projekt i wykonanie)
- FlameRunner
- Zasłużony
- Postów w temacie: 1
- Posty: 6568
- Rejestracja: 15 kwie 2016, 21:26
- x 2056
Re: Potrzebna pomoc przy "prostym" kodzie
Nie rozumiem. Ma na początku zrobić dokładnie 200 kroków, czy dojechać do krańcówki?
-
- Konto z ograniczeniami
- Postów w temacie: 5
- Posty: 39
- Rejestracja: 26 mar 2019, 18:21
- x 1
Re: Potrzebna pomoc przy "prostym" kodzie
W sumie tak źle napisałem. Dochodzi do krańcówki i od razu wraca o te 200 kroków
Ender-3
Czarna Perła, Drukareczka pod wielkie wydruki 170cm - 70cm -70cm Dla Nylonu (własny projekt i wykonanie)
Czarna Perła, Drukareczka pod wielkie wydruki 170cm - 70cm -70cm Dla Nylonu (własny projekt i wykonanie)
- dziobu
- Zasłużony
- Postów w temacie: 5
- Posty: 8961
- Rejestracja: 28 gru 2016, 16:38
- Drukarka: ZMorph 2.0(S)
- x 5876
- Kontakt:
Re: Potrzebna pomoc przy "prostym" kodzie
Ale chodzi o gcode czy o kod dla Arduino?
Pozdrawiam
Paweł
Projekty: ELF | AVAT 01 | HotPlate-1
Drukarki: Flsun i3 Plus | Flsun G | Kossel | FF Dreamer | Monoprice MP Mini | Copymaster3D Pro 500 | AIO Robotics ZEUS | Zmorph 2.0 | Climber 7
Też fajne: Wydruki | Moje twory w 3D | Inne
Paweł
Drukarki: Flsun i3 Plus | Flsun G | Kossel | FF Dreamer | Monoprice MP Mini | Copymaster3D Pro 500 | AIO Robotics ZEUS | Zmorph 2.0 | Climber 7
Też fajne: Wydruki | Moje twory w 3D | Inne
- dziobu
- Zasłużony
- Postów w temacie: 5
- Posty: 8961
- Rejestracja: 28 gru 2016, 16:38
- Drukarka: ZMorph 2.0(S)
- x 5876
- Kontakt:
Re: Potrzebna pomoc przy "prostym" kodzie
Ależ mi się nic nie chce...
Tak to może wyglądać:
linie musisz sobie uzupełnić.
Jeśli z jakiegoś powodu trzeba użyć biblioteki Stepper.h to kod będzie taki:
No a jak chciałeś gcode to chyba sobie poradzisz (tutaj tylko pętli nie zrobisz)
Tak to może wyglądać:
linie musisz sobie uzupełnić.
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;
//.........................................
}
}
//..........................................
Jeśli z jakiegoś powodu trzeba użyć biblioteki Stepper.h to kod będzie taki:
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;
//.........................................
}
}
//..........................................
JGFTW
Pozdrawiam
Paweł
Projekty: ELF | AVAT 01 | HotPlate-1
Drukarki: Flsun i3 Plus | Flsun G | Kossel | FF Dreamer | Monoprice MP Mini | Copymaster3D Pro 500 | AIO Robotics ZEUS | Zmorph 2.0 | Climber 7
Też fajne: Wydruki | Moje twory w 3D | Inne
Paweł
Drukarki: Flsun i3 Plus | Flsun G | Kossel | FF Dreamer | Monoprice MP Mini | Copymaster3D Pro 500 | AIO Robotics ZEUS | Zmorph 2.0 | Climber 7
Też fajne: Wydruki | Moje twory w 3D | Inne
-
- Konto z ograniczeniami
- Postów w temacie: 5
- Posty: 39
- Rejestracja: 26 mar 2019, 18:21
- x 1
Re: Potrzebna pomoc przy "prostym" kodzie
No dobra a jak to uruchomić na arduino i ramps ? Krańcówki mam podpięte pod minimum
Ender-3
Czarna Perła, Drukareczka pod wielkie wydruki 170cm - 70cm -70cm Dla Nylonu (własny projekt i wykonanie)
Czarna Perła, Drukareczka pod wielkie wydruki 170cm - 70cm -70cm Dla Nylonu (własny projekt i wykonanie)
- dziobu
- Zasłużony
- Postów w temacie: 5
- Posty: 8961
- Rejestracja: 28 gru 2016, 16:38
- Drukarka: ZMorph 2.0(S)
- x 5876
- Kontakt:
Re: Potrzebna pomoc przy "prostym" kodzie
A poprawiłeś nr pinów w kodzie?
Pozdrawiam
Paweł
Projekty: ELF | AVAT 01 | HotPlate-1
Drukarki: Flsun i3 Plus | Flsun G | Kossel | FF Dreamer | Monoprice MP Mini | Copymaster3D Pro 500 | AIO Robotics ZEUS | Zmorph 2.0 | Climber 7
Też fajne: Wydruki | Moje twory w 3D | Inne
Paweł
Drukarki: Flsun i3 Plus | Flsun G | Kossel | FF Dreamer | Monoprice MP Mini | Copymaster3D Pro 500 | AIO Robotics ZEUS | Zmorph 2.0 | Climber 7
Też fajne: Wydruki | Moje twory w 3D | Inne
-
- Konto z ograniczeniami
- Postów w temacie: 5
- Posty: 39
- Rejestracja: 26 mar 2019, 18:21
- x 1
Re: Potrzebna pomoc przy "prostym" kodzie
Teraz jakie piny wpisać jak krancowki i silniki podłączone po ramps
Ender-3
Czarna Perła, Drukareczka pod wielkie wydruki 170cm - 70cm -70cm Dla Nylonu (własny projekt i wykonanie)
Czarna Perła, Drukareczka pod wielkie wydruki 170cm - 70cm -70cm Dla Nylonu (własny projekt i wykonanie)
- dziobu
- Zasłużony
- Postów w temacie: 5
- Posty: 8961
- Rejestracja: 28 gru 2016, 16:38
- Drukarka: ZMorph 2.0(S)
- x 5876
- Kontakt:
Re: Potrzebna pomoc przy "prostym" kodzie
No poszukaj w sieci na jakich pinach Ramps ma stepsticki. Odrobina pracy własnej nie zaszkodzi.
Z kodu Marlina 1.1.9:
Ale nie mam Rampsa żeby to sprawdzić.
Potencjalnie jeszcze musisz dodać (analogicznie jak jest z DIRem i STEPami) linie Enable dla X i Y, czyli deklarację
i w procedurze setup to enable aktywować:
Z napędem Y tak samo.
Z kodu Marlina 1.1.9:
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
Potencjalnie jeszcze musisz dodać (analogicznie jak jest z DIRem i STEPami) linie Enable dla X i Y, czyli deklarację
Kod: Zaznacz cały
int Stepper_X_En = 38;
Kod: Zaznacz cały
pinMode(Stepper_X_En, OUTPUT);
digitalWrite(Stepper_X_En, LOW);
maestro192
Pozdrawiam
Paweł
Projekty: ELF | AVAT 01 | HotPlate-1
Drukarki: Flsun i3 Plus | Flsun G | Kossel | FF Dreamer | Monoprice MP Mini | Copymaster3D Pro 500 | AIO Robotics ZEUS | Zmorph 2.0 | Climber 7
Też fajne: Wydruki | Moje twory w 3D | Inne
Paweł
Drukarki: Flsun i3 Plus | Flsun G | Kossel | FF Dreamer | Monoprice MP Mini | Copymaster3D Pro 500 | AIO Robotics ZEUS | Zmorph 2.0 | Climber 7
Też fajne: Wydruki | Moje twory w 3D | Inne
-
- Konto z ograniczeniami
- Postów w temacie: 5
- Posty: 39
- Rejestracja: 26 mar 2019, 18:21
- x 1
Re: Potrzebna pomoc przy "prostym" kodzie
Jak ustawiam tak jak napisałeś to z silniczków idzie pisk a jak nacisnę krańcówkę od np X to przestaje piszczeć, tak samo na Y
Ender-3
Czarna Perła, Drukareczka pod wielkie wydruki 170cm - 70cm -70cm Dla Nylonu (własny projekt i wykonanie)
Czarna Perła, Drukareczka pod wielkie wydruki 170cm - 70cm -70cm Dla Nylonu (własny projekt i wykonanie)