sylvie-2024

Unnamed repository; edit this file 'description' to name the repository.
Log | Files | Refs | README | LICENSE

nema17_neckZslave_FastAccel.ino (1532B)


      1 #include "FastAccelStepper.h"
      2 #include "Wire.h"
      3 
      4 #define dirPinStepper    2
      5 #define enablePinStepper 4
      6 #define stepPinStepper   9  // OC1A in case of AVR
      7 
      8 FastAccelStepperEngine engine = FastAccelStepperEngine();
      9 FastAccelStepper *stepper = NULL;
     10 
     11 int i2cAddress = 0x20;
     12 
     13 int gearRatio = (48 / 9);
     14 int stepsPerRev = 200;
     15 int microsteps = 16;
     16 int stepperState = 0;
     17 
     18 int formula = (microsteps * (gearRatio * stepsPerRev));
     19 
     20 void setup() {
     21   Wire.begin(i2cAddress);
     22   Wire.onReceive(receiveEvent);
     23   
     24   engine.init();
     25   stepper = engine.stepperConnectToPin(stepPinStepper);
     26   if (stepper) {
     27     stepper->setDirectionPin(dirPinStepper);
     28     stepper->setEnablePin(enablePinStepper);
     29     stepper->setAutoEnable(true);
     30 
     31     stepper->setSpeedInUs(30);       // the parameter is us/step !!!
     32     stepper->setAcceleration(20000);
     33   }
     34 }
     35 
     36 void receiveEvent(int bytes) {
     37   stepperState = Wire.read();    // read one character from the I2C
     38 }
     39 
     40 void loop() {
     41   switch (stepperState) {
     42     case 50:
     43       stepper->move(0.05 * formula);
     44       stepperState = 0;
     45       break;
     46     case 51:
     47       stepper->move(-0.05 * formula);  
     48       stepperState = 0;
     49       break;
     50     case 52:
     51       stepper->move(0.10 * formula);
     52       stepperState = 0;
     53       break;
     54     case 53:
     55       stepper->move(-0.10 * formula); 
     56       stepperState = 0;
     57       break;
     58     case 54:
     59       stepper->move(0.2 * formula);
     60       stepperState = 0;    
     61       break;                
     62     case 55:
     63       stepper->move(-0.2 * formula);
     64       stepperState = 0; 
     65       break;
     66     break;
     67   }
     68 }