Skip to content
Switch branches/tags

Name already in use

A tag already exists with the provided branch name. Many Git commands accept both tag and branch names, so creating this branch may cause unexpected behavior. Are you sure you want to create this branch?
Go to file
Cannot retrieve contributors at this time
* Author Teemu Mäntykallio
* Initializes the library and runs the stepper
* motor in alternating directions.
#include <TMCStepper.h>
#define EN_PIN 38 // Enable
#define DIR_PIN 55 // Direction
#define STEP_PIN 54 // Step
#define CS_PIN 42 // 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(SW_RX, SW_TX, R_SENSE, DRIVER_ADDRESS);
void setup() {
pinMode(EN_PIN, OUTPUT);
digitalWrite(EN_PIN, LOW); // Enable driver in hardware
// Enable one according to your setup
//SPI.begin(); // SPI drivers
//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(5); // Enables driver in software
driver.rms_current(600); // Set motor RMS current
driver.microsteps(16); // Set microsteps to 1/16th
//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 = 5000; i>0; i--) {
digitalWrite(STEP_PIN, HIGH);
digitalWrite(STEP_PIN, LOW);
shaft = !shaft;