Kind of an old thread but I wanted to respond since it may help others who are trying to get this module to work, not much out there on the Arduino coding side.
I believe the issue might be the pin assignment for step and dir, it's actually printed on the PCB. For the Core2 X, Y, Z step = 13, 27, 2 and dir = 14, 19, 0 respectively. So I'm not sure why STEP_PIN is set to 15, maybe this is the legacy Core?
I used the same referenced Stepmotor code (https://github.com/m5stack/M5Module-Stepmotor) and did get it working eventually. Here is some very basic example code that may help:
#include <M5Unified.h>
#include "Module_Stepmotor.h"
// change to CORE2 if using Core2
#define CORE_S3
#ifdef CORE_S3
static const int X_STEP_PIN = 18;
static const int X_DIR_PIN = 17;
static const int Y_STEP_PIN = 6;
static const int Y_DIR_PIN = 7;
static const int Z_STEP_PIN = 13;
static const int Z_DIR_PIN = 0;
static const int SDA_PIN = 12;
static const int SCL_PIN = 11;
#elif defined CORE2
static const int X_STEP_PIN = 13;
static const int X_DIR_PIN = 14;
static const int Y_STEP_PIN = 27;
static const int Y_DIR_PIN = 19;
static const int Z_STEP_PIN = 2; // Not sure about this one
static const int Z_DIR_PIN = 0;
static const int SDA_PIN = 21;
static const int SCL_PIN = 22;
#endif
static Module_Stepmotor driver;
void setup() {
Wire.begin(SDA_PIN, SCL_PIN, 400000UL);
driver.init(Wire, 0x27);
driver.resetMotor(0, 0);
driver.resetMotor(1, 0);
driver.resetMotor(2, 0);
driver.enableMotor(1);
// PWM, sets the speed of the stepper motor, adjust accordingly
ledcSetup(0, 500, 8);
// XYZ step
ledcAttachPin(X_STEP_PIN, 0);
ledcAttachPin(Y_STEP_PIN, 0);
ledcAttachPin(Z_STEP_PIN, 0);
ledcWrite(0, 127);
// XYZ dir
pinMode(X_DIR_PIN, OUTPUT);
digitalWrite(X_DIR_PIN, 1);
pinMode(Y_DIR_PIN, OUTPUT);
digitalWrite(Y_DIR_PIN, 1);
pinMode(Z_DIR_PIN, OUTPUT);
digitalWrite(Z_DIR_PIN, 1);
}
void loop() {
digitalWrite(X_DIR_PIN, 0);
delay(2000);
digitalWrite(X_DIR_PIN, 1);
delay(2000);
}