Znaleziono 5 wyników

autor: dziobu
19 lis 2019, 20:35
Forum: Robotyka, modele RC, modelarstwo
Temat: Potrzebna pomoc przy "prostym" kodzie
Odpowiedzi: 10
Odsłony: 9295

Re: Potrzebna pomoc przy "prostym" kodzie

Może jedzie za szybko.

Zmień to:

Kod: Zaznacz cały

digitalWrite(Stepper_Y_Step, LOW);
digitalWrite(Stepper_Y_Step, HIGH);
na to:

Kod: Zaznacz cały

digitalWrite(Stepper_Y_Step, LOW);
delay(1);
digitalWrite(Stepper_Y_Step, HIGH);
delay(1);
I analogicznie dla osi X.
autor: dziobu
19 lis 2019, 15:18
Forum: Robotyka, modele RC, modelarstwo
Temat: Potrzebna pomoc przy "prostym" kodzie
Odpowiedzi: 10
Odsłony: 9295

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:

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
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ę

Kod: Zaznacz cały

int Stepper_X_En = 38;
i w procedurze setup to enable aktywować:

Kod: Zaznacz cały

pinMode(Stepper_X_En, OUTPUT);
digitalWrite(Stepper_X_En, LOW);
Z napędem Y tak samo.
autor: dziobu
16 lis 2019, 19:29
Forum: Robotyka, modele RC, modelarstwo
Temat: Potrzebna pomoc przy "prostym" kodzie
Odpowiedzi: 10
Odsłony: 9295

Re: Potrzebna pomoc przy "prostym" kodzie

A poprawiłeś nr pinów w kodzie?
autor: dziobu
16 lis 2019, 15:38
Forum: Robotyka, modele RC, modelarstwo
Temat: Potrzebna pomoc przy "prostym" kodzie
Odpowiedzi: 10
Odsłony: 9295

Re: Potrzebna pomoc przy "prostym" kodzie

Ależ mi się nic nie chce...

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;
    //.........................................
  }
}  
//..........................................

No a jak chciałeś gcode to chyba sobie poradzisz ;) (tutaj tylko pętli nie zrobisz)
autor: dziobu
16 lis 2019, 15:20
Forum: Robotyka, modele RC, modelarstwo
Temat: Potrzebna pomoc przy "prostym" kodzie
Odpowiedzi: 10
Odsłony: 9295

Re: Potrzebna pomoc przy "prostym" kodzie

Ale chodzi o gcode czy o kod dla Arduino?

Wróć do „Potrzebna pomoc przy "prostym" kodzie”