Hardware
// Arduino CNC Shield + Driver A4988
// + krokový motor 28BYJ-48
muj kod
Kód: Vybrat vše
#include <Ticker.h> // Nástroje → Spravovat knihovny (zkratka Ctrl+Shift+I) → Vyhledat „SimpleTicker" (by „JSC electronics”), verze 2.0.0.
#define ENABLE 8
#define X_STEP 2
#define Y_STEP 3
#define Z_STEP 4
#define X_DIR 5
#define Y_DIR 6
#define Z_DIR 7
#define T_ROTATION 60000 // ms, doba rotace v milisekundach
jsc::Ticker rotationTicker(T_ROTATION);
void pohybOsyCas(void);
void setup() {
// nastavení směrů pro všechny piny
pinMode(X_STEP, OUTPUT);
pinMode(Y_STEP, OUTPUT);
pinMode(Z_STEP, OUTPUT);
pinMode(X_DIR, OUTPUT);
pinMode(Y_DIR, OUTPUT);
pinMode(Z_DIR, OUTPUT);
pinMode(ENABLE, OUTPUT);
// povolení řízení pro všechny drivery
digitalWrite(ENABLE, LOW);
pohybOsyCas();
}
void loop() {
}
void pohybOsyCas(void) {
digitalWrite (X_DIR, HIGH);
delay(50);
while ( rotationTicker.elapsedTicks() == 0 ) {
digitalWrite(X_STEP, HIGH);
delayMicroseconds (4000);
digitalWrite(X_STEP, LOW);
delayMicroseconds (4000);
}
}
#define ENABLE 8
#define X_STEP 2
#define Y_STEP 3
#define Z_STEP 4
#define X_DIR 5
#define Y_DIR 6
#define Z_DIR 7
void setup() {
// nastavení směrů pro všechny piny
pinMode(X_STEP, OUTPUT);
pinMode(Y_STEP, OUTPUT);
pinMode(Z_STEP, OUTPUT);
pinMode(X_DIR, OUTPUT);
pinMode(Y_DIR, OUTPUT);
pinMode(Z_DIR, OUTPUT);
pinMode(ENABLE, OUTPUT);
// povolení řízení pro všechny drivery
digitalWrite(ENABLE, LOW);
}
void loop() {
// posun osy X v jednom směru o půl otáčky
// (2048 kroků na celou otáčku)
pohybOsy(false, X_DIR, X_STEP, 1024);
delay(1000);
// posun osy X ve druhém směru o půl otáčky
pohybOsy(true, X_DIR, X_STEP, 1024);
delay(1000);
}
void pohybOsy(boolean smer, byte dirPin, byte stepPin, int kroky) {
// zápis směru na příslušný pin DIR
digitalWrite (dirPin, smer);
delay(50);
// smyčka pro provedení předaného množství kroků
for (int i = 0; i < kroky; i++) {
digitalWrite(stepPin, HIGH);
delayMicroseconds (800);
digitalWrite(stepPin, LOW);
delayMicroseconds (800);
}
}
Kód: Vybrat vše
#define ENABLE 8
#define X_STEP 2
#define Y_STEP 3
#define Z_STEP 4
#define X_DIR 5
#define Y_DIR 6
#define Z_DIR 7
void setup() {
// nastavení směrů pro všechny piny
pinMode(X_STEP, OUTPUT);
pinMode(Y_STEP, OUTPUT);
pinMode(Z_STEP, OUTPUT);
pinMode(X_DIR, OUTPUT);
pinMode(Y_DIR, OUTPUT);
pinMode(Z_DIR, OUTPUT);
pinMode(ENABLE, OUTPUT);
// povolení řízení pro všechny drivery
digitalWrite(ENABLE, LOW);
}
void loop() {
// posun osy X v jednom směru o půl otáčky
// (2048 kroků na celou otáčku)
pohybOsy(false, X_DIR, X_STEP, 1024);
delay(1000);
// posun osy X ve druhém směru o půl otáčky
pohybOsy(true, X_DIR, X_STEP, 1024);
delay(1000);
}
void pohybOsy(boolean smer, byte dirPin, byte stepPin, int kroky) {
// zápis směru na příslušný pin DIR
digitalWrite (dirPin, smer);
delay(50);
// smyčka pro provedení předaného množství kroků
for (int i = 0; i < kroky; i++) {
digitalWrite(stepPin, HIGH);
delayMicroseconds (800);
digitalWrite(stepPin, LOW);
delayMicroseconds (800);
}
}