I made code like this, after turning it off and when turning it back on, the stepper starts from the last stopped position, how do I lock the position so that at startup it doesn't start from the last stopped position.
kode saya.
#include <EEPROM.h>
// Define pin untuk motor stepper 1
#define STEPPER1_PIN_1 14
#define STEPPER1_PIN_2 12
#define STEPPER1_PIN_3 13
#define STEPPER1_PIN_4 15
// Define pin untuk motor stepper 2
#define STEPPER2_PIN_1 3
#define STEPPER2_PIN_2 5
#define STEPPER2_PIN_3 4
#define STEPPER2_PIN_4 2
// Deklarasi variabel untuk nomor langkah motor stepper 1 dan 2
int step_number_1 = 0;
int step_number_2 = 0;
void setup() {
// Setup pin untuk motor stepper 1
pinMode(STEPPER1_PIN_1, OUTPUT);
pinMode(STEPPER1_PIN_2, OUTPUT);
pinMode(STEPPER1_PIN_3, OUTPUT);
pinMode(STEPPER1_PIN_4, OUTPUT);
// Setup pin untuk motor stepper 2
pinMode(STEPPER2_PIN_1, OUTPUT);
pinMode(STEPPER2_PIN_2, OUTPUT);
pinMode(STEPPER2_PIN_3, OUTPUT);
pinMode(STEPPER2_PIN_4, OUTPUT);
// Fungsi loop akan dieksekusi secara terus menerus setelah fungsi setup selesai
void loop() {
// Loop untuk menggerakkan motor stepper
// Motor stepper 1
for(int a = 0; a < 300; a++) {
OneStep(false);
delay(6);
}
for(int a = 0; a < 300; a++) {
OneStep(true);
delay(6);
}
// Motor stepper 2
for(int a = 0; a < 300; a++) {
OneStep2(false);
delay(6);
}
for(int a = 0; a < 300; a++) {
OneStep2(true);
delay(6);
}
}
void OneStep(bool dir) {
if(dir) {
switch(step_number_1) {
case 0:
digitalWrite(STEPPER1_PIN_1, HIGH);
digitalWrite(STEPPER1_PIN_2, LOW);
digitalWrite(STEPPER1_PIN_3, LOW);
digitalWrite(STEPPER1_PIN_4, LOW);
break;
case 1:
digitalWrite(STEPPER1_PIN_1, LOW);
digitalWrite(STEPPER1_PIN_2, HIGH);
digitalWrite(STEPPER1_PIN_3, LOW);
digitalWrite(STEPPER1_PIN_4, LOW);
break;
case 2:
digitalWrite(STEPPER1_PIN_1, LOW);
digitalWrite(STEPPER1_PIN_2, LOW);
digitalWrite(STEPPER1_PIN_3, HIGH);
digitalWrite(STEPPER1_PIN_4, LOW);
break;
case 3:
digitalWrite(STEPPER1_PIN_1, LOW);
digitalWrite(STEPPER1_PIN_2, LOW);
digitalWrite(STEPPER1_PIN_3, LOW);
digitalWrite(STEPPER1_PIN_4, HIGH);
break;
}
} else {
switch(step_number_1) {
case 0:
digitalWrite(STEPPER1_PIN_1, LOW);
digitalWrite(STEPPER1_PIN_2, LOW);
digitalWrite(STEPPER1_PIN_3, LOW);
digitalWrite(STEPPER1_PIN_4, HIGH);
break;
case 1:
digitalWrite(STEPPER1_PIN_1, LOW);
digitalWrite(STEPPER1_PIN_2, LOW);
digitalWrite(STEPPER1_PIN_3, HIGH);
digitalWrite(STEPPER1_PIN_4, LOW);
break;
case 2:
digitalWrite(STEPPER1_PIN_1, LOW);
digitalWrite(STEPPER1_PIN_2, HIGH);
digitalWrite(STEPPER1_PIN_3, LOW);
digitalWrite(STEPPER1_PIN_4, LOW);
break;
case 3:
digitalWrite(STEPPER1_PIN_1, HIGH);
digitalWrite(STEPPER1_PIN_2, LOW);
digitalWrite(STEPPER1_PIN_3, LOW);
digitalWrite(STEPPER1_PIN_4, LOW);
break;
}
}
step_number_1++;
if(step_number_1 > 3){
step_number_1 = 0;
}
}
// Fungsi untuk menggerakkan motor stepper 2 satu langkah
void OneStep2(bool dir) {
if(dir) {
switch(step_number_2) {
case 0:
digitalWrite(STEPPER2_PIN_1, HIGH);
digitalWrite(STEPPER2_PIN_2, LOW);
digitalWrite(STEPPER2_PIN_3, LOW);
digitalWrite(STEPPER2_PIN_4, LOW);
break;
case 1:
digitalWrite(STEPPER2_PIN_1, LOW);
digitalWrite(STEPPER2_PIN_2, HIGH);
digitalWrite(STEPPER2_PIN_3, LOW);
digitalWrite(STEPPER2_PIN_4, LOW);
break;
case 2:
digitalWrite(STEPPER2_PIN_1, LOW);
digitalWrite(STEPPER2_PIN_2, LOW);
digitalWrite(STEPPER2_PIN_3, HIGH);
digitalWrite(STEPPER2_PIN_4, LOW);
break;
case 3:
digitalWrite(STEPPER2_PIN_1, LOW);
digitalWrite(STEPPER2_PIN_2, LOW);
digitalWrite(STEPPER2_PIN_3, LOW);
digitalWrite(STEPPER2_PIN_4, HIGH);
break;
}
} else {
switch(step_number_2) {
case 0:
digitalWrite(STEPPER2_PIN_1, LOW);
digitalWrite(STEPPER2_PIN_2, LOW);
digitalWrite(STEPPER2_PIN_3, LOW);
digitalWrite(STEPPER2_PIN_4, HIGH);
break;
case 1:
digitalWrite(STEPPER2_PIN_1, LOW);
digitalWrite(STEPPER2_PIN_2, LOW);
digitalWrite(STEPPER2_PIN_3, HIGH);
digitalWrite(STEPPER2_PIN_4, LOW);
break;
case 2:
digitalWrite(STEPPER2_PIN_1, LOW);
digitalWrite(STEPPER2_PIN_2, HIGH);
digitalWrite(STEPPER2_PIN_3, LOW);
digitalWrite(STEPPER2_PIN_4, LOW);
break;
case 3:
digitalWrite(STEPPER2_PIN_1, HIGH);
digitalWrite(STEPPER2_PIN_2, LOW);
digitalWrite(STEPPER2_PIN_3, LOW);
digitalWrite(STEPPER2_PIN_4, LOW);
break;
}
}
step_number_2++;
if(step_number_2 > 3){
step_number_2 = 0;
}
}