/** * Author Teemu Mäntykallio * Initializes the library and runs the stepper * motor in alternating directions. */ #include #define EN_PIN 12 // Enable #define DIR_PIN 16 // Direction #define STEP_PIN 26 // Step #define CS_PIN 5 // Chip select #define SW_MOSI 66 // Software Master Out Slave In (MOSI) #define SW_MISO 44 // Software Master In Slave Out (MISO) #define SW_SCK 64 // Software Slave Clock (SCK) #define SW_RX 63 // TMC2208/TMC2224 SoftwareSerial receive pin #define SW_TX 40 // TMC2208/TMC2224 SoftwareSerial transmit pin #define SERIAL_PORT Serial1 // TMC2208/TMC2224 HardwareSerial port #define DRIVER_ADDRESS 0b00 // TMC2209 Driver address according to MS1 and MS2 #define R_SENSE \ 0.11f // Match to your driver // SilentStepStick series use 0.11 // UltiMachine Einsy and Archim2 boards use 0.2 // Panucatt BSD2660 uses 0.1 // Watterott TMC5160 uses 0.075 // Select your stepper driver type TMC2130Stepper driver(CS_PIN, R_SENSE); // Hardware SPI // TMC2130Stepper driver(CS_PIN, R_SENSE, SW_MOSI, SW_MISO, SW_SCK); // Software SPI // TMC2660Stepper driver(CS_PIN, R_SENSE); // Hardware SPI // TMC2660Stepper driver(CS_PIN, R_SENSE, SW_MOSI, SW_MISO, SW_SCK); // TMC5160Stepper driver(CS_PIN, R_SENSE); // TMC5160Stepper driver(CS_PIN, R_SENSE, SW_MOSI, SW_MISO, SW_SCK); // TMC2208Stepper driver(&SERIAL_PORT, R_SENSE); // Hardware Serial // TMC2208Stepper driver(SW_RX, SW_TX, R_SENSE); // Software serial // TMC2209Stepper driver(&SERIAL_PORT, R_SENSE, DRIVER_ADDRESS); // TMC2209Stepper driver(SW_RX, SW_TX, R_SENSE, DRIVER_ADDRESS); void setup() { pinMode(EN_PIN, OUTPUT); pinMode(STEP_PIN, OUTPUT); pinMode(DIR_PIN, OUTPUT); digitalWrite(EN_PIN, LOW); // Enable driver in hardware // Enable one according to your setup SPI.begin(); // SPI drivers Serial.begin(115200); // SERIAL_PORT.begin(115200); // HW UART drivers // driver.beginSerial(115200); // SW UART drivers driver.begin(); // SPI: Init CS pins and possible SW SPI pins // UART: Init SW UART (if selected) with default 115200 baudrate driver.toff(8); // Enables driver in software driver.rms_current(700); // Set motor RMS current driver.microsteps(16); // Set microsteps to 1/16th driver.DCCTRL(100); driver.vhighfs(true); driver.vhighchm(true); driver.dc_time(3); driver.VDCMIN(0); driver.dc_time(450); driver.dc_sg(30); Serial.println("connection test"); Serial.println(driver.test_connection()); Serial.println("Trieber aktiviert"); Serial.println(driver.dcen_cfg4()); Serial.println(driver.dcin_cfg5()); Serial.println("Fertig"); // driver.en_pwm_mode(true); // Toggle stealthChop on TMC2130/2160/5130/5160 // driver.en_spreadCycle(false); // Toggle spreadCycle on TMC2208/2209/2224 // driver.pwm_autoscale(true); // Needed for stealthChop } bool shaft = false; void loop() { // Run 5000 steps and switch direction in software for (uint16_t i = 2000; i > 0; i--) { digitalWrite(STEP_PIN, HIGH); delayMicroseconds(100); digitalWrite(STEP_PIN, LOW); delayMicroseconds(100); Serial.println(driver.dcen_cfg4()); } // shaft = !shaft; // driver.shaft(shaft); }