This is the MBED AccelStepper library. It provides an object-oriented interface for 2, 3 or 4 pin stepper motors. Based on the Arduino AccelStepper library by Airspayce.com Translated for MBED by Jaap Vermaas <jaap@tuxic.nl>, 03-2015

Dependencies:   mbed motorController2

Committer:
MatteusCarr
Date:
Wed Apr 08 02:41:28 2020 +0000
Revision:
1:8707e26bf33d
Parent:
0:3bdd295c3b0e
step Motor rep

Who changed what in which revision?

UserRevisionLine numberNew contents of line
MatteusCarr 0:3bdd295c3b0e 1 #include "mbed.h"
MatteusCarr 0:3bdd295c3b0e 2 #include "AccelStepper.h"
MatteusCarr 0:3bdd295c3b0e 3 #include <avr/wdt.h>
MatteusCarr 0:3bdd295c3b0e 4
MatteusCarr 0:3bdd295c3b0e 5 Serial pc(USBTX, USBRX);
MatteusCarr 0:3bdd295c3b0e 6
MatteusCarr 0:3bdd295c3b0e 7 //Pins
MatteusCarr 0:3bdd295c3b0e 8 #define STP_PIN 4 // AnalogOut STP_PIN(nome do pino da placa) ##DESCOMENTAR ESSE BLOCO##
MatteusCarr 0:3bdd295c3b0e 9 #define DIR_PIN 3 // AnalogOut DIR_PIN(nome do pino da placa)
MatteusCarr 0:3bdd295c3b0e 10 #define ENA_PIN 2 // DigitalOut ENA_PIN(nome do pino da placa)
MatteusCarr 0:3bdd295c3b0e 11 #define HOM_PIN 12 // DigitalIn HOM_PIN(nome do pino da placa)
MatteusCarr 0:3bdd295c3b0e 12
MatteusCarr 0:3bdd295c3b0e 13 //Max
MatteusCarr 0:3bdd295c3b0e 14 #define MAX_ACCEL_mms2 500.0
MatteusCarr 0:3bdd295c3b0e 15 #define MAX_SPEED_mms 75.0
MatteusCarr 0:3bdd295c3b0e 16 #define MAX_POS_mm 100.0
MatteusCarr 0:3bdd295c3b0e 17
MatteusCarr 0:3bdd295c3b0e 18 //Stepper Motor parameters
MatteusCarr 0:3bdd295c3b0e 19 #define STEPS_by_REV 400.0
MatteusCarr 0:3bdd295c3b0e 20 #define mm_by_REV 25.0
MatteusCarr 0:3bdd295c3b0e 21
MatteusCarr 0:3bdd295c3b0e 22 //Home Parameters
MatteusCarr 0:3bdd295c3b0e 23 #define HOME_SPEED_mms 10.0
MatteusCarr 0:3bdd295c3b0e 24 #define HOME_INCREMENT_mm 1.0
MatteusCarr 0:3bdd295c3b0e 25 #define HOME_PRESS_POSITION_mm 2.0
MatteusCarr 0:3bdd295c3b0e 26
MatteusCarr 0:3bdd295c3b0e 27 //Consts
MatteusCarr 0:3bdd295c3b0e 28 const unsigned int MAX_ACCEL_STEPS2 = (MAX_ACCEL_mms2 * STEPS_by_REV) / mm_by_REV;
MatteusCarr 0:3bdd295c3b0e 29 unsigned int MAX_SPEED_STEPS = (MAX_SPEED_mms * STEPS_by_REV) / mm_by_REV;
MatteusCarr 0:3bdd295c3b0e 30 const unsigned int HOME_SPEED_STEPS = (HOME_SPEED_mms * STEPS_by_REV) / mm_by_REV;
MatteusCarr 0:3bdd295c3b0e 31 const unsigned int HOME_INCREMENT_STEP = (HOME_INCREMENT_mm * STEPS_by_REV) / mm_by_REV;
MatteusCarr 0:3bdd295c3b0e 32 const unsigned int HOME_PRESS_POSITION_STEP = (HOME_PRESS_POSITION_mm * STEPS_by_REV) / mm_by_REV;
MatteusCarr 0:3bdd295c3b0e 33
MatteusCarr 0:3bdd295c3b0e 34 //vars
MatteusCarr 0:3bdd295c3b0e 35 unsigned int MaxPos_step = (MAX_POS_mm * STEPS_by_REV) / mm_by_REV;
MatteusCarr 0:3bdd295c3b0e 36 bool CycleOn = true;
MatteusCarr 0:3bdd295c3b0e 37 bool HomeDone = false;
MatteusCarr 0:3bdd295c3b0e 38
MatteusCarr 0:3bdd295c3b0e 39 public void MotorGoHome(AccelStepper *stpr)
MatteusCarr 0:3bdd295c3b0e 40 {
MatteusCarr 0:3bdd295c3b0e 41 int CurrentPos = 0;
MatteusCarr 0:3bdd295c3b0e 42 pc.printf("Finding Home...");
MatteusCarr 0:3bdd295c3b0e 43 stepper.setCurrentPosition(0);
MatteusCarr 0:3bdd295c3b0e 44 stepper.setMaxSpeed(HOME_SPEED_STEPS);
MatteusCarr 0:3bdd295c3b0e 45 while (digitalRead(HOM_PIN) == HIGH)
MatteusCarr 0:3bdd295c3b0e 46 {
MatteusCarr 0:3bdd295c3b0e 47 CurrentPos = CurrentPos - HOME_INCREMENT_STEP;
MatteusCarr 0:3bdd295c3b0e 48 stepper.runToNewPosition(CurrentPos);
MatteusCarr 0:3bdd295c3b0e 49 }
MatteusCarr 0:3bdd295c3b0e 50 stepper.setCurrentPosition(0);
MatteusCarr 0:3bdd295c3b0e 51 stepper.runToNewPosition(HOME_PRESS_POSITION_STEP);
MatteusCarr 0:3bdd295c3b0e 52 stepper.setCurrentPosition(0);
MatteusCarr 0:3bdd295c3b0e 53 HomeDone = true;
MatteusCarr 0:3bdd295c3b0e 54 pc.printf("Finding Home...");
MatteusCarr 0:3bdd295c3b0e 55 }
MatteusCarr 0:3bdd295c3b0e 56
MatteusCarr 0:3bdd295c3b0e 57 public void setup(AccelStepper *stpr)
MatteusCarr 0:3bdd295c3b0e 58 {
MatteusCarr 0:3bdd295c3b0e 59 pc.baud(250000) descomentar se tiver certo
MatteusCarr 0:3bdd295c3b0e 60 //pinMode(10 , OUTPUT); ###OS COMENTÁRIOS ABAIXO SÃO PRA APAGAR ESSAS DECLARAÇÕES (SÓ FAZEM SENTIDO EM ARDUINO)
MatteusCarr 0:3bdd295c3b0e 61 //pinMode(STP_PIN , OUTPUT);
MatteusCarr 0:3bdd295c3b0e 62 //pinMode(DIR_PIN , OUTPUT);
MatteusCarr 0:3bdd295c3b0e 63 //pinMode(ENA_PIN , OUTPUT);
MatteusCarr 0:3bdd295c3b0e 64 DigitalWrite(ENA_PIN , HIGH);
MatteusCarr 0:3bdd295c3b0e 65 stepper.setMaxSpeed(MAX_SPEED_STEPS);
MatteusCarr 0:3bdd295c3b0e 66 stepper.setAcceleration(MAX_ACCEL_STEPS2);
MatteusCarr 0:3bdd295c3b0e 67 MotorGoHome(&stpr);
MatteusCarr 0:3bdd295c3b0e 68 stepper.setMaxSpeed(MAX_SPEED_STEPS);
MatteusCarr 0:3bdd295c3b0e 69 stepper.setAcceleration(MAX_ACCEL_STEPS2);
MatteusCarr 0:3bdd295c3b0e 70 wdt_enable(WDTO_2S);
MatteusCarr 0:3bdd295c3b0e 71 }
MatteusCarr 0:3bdd295c3b0e 72
MatteusCarr 0:3bdd295c3b0e 73 int main(){
MatteusCarr 0:3bdd295c3b0e 74
MatteusCarr 0:3bdd295c3b0e 75 AccelStepper stepper(AccelStepper::DRIVER, STP_PIN, DIR_PIN );
MatteusCarr 0:3bdd295c3b0e 76
MatteusCarr 0:3bdd295c3b0e 77 setup(&stepper);
MatteusCarr 0:3bdd295c3b0e 78
MatteusCarr 0:3bdd295c3b0e 79 while(1){
MatteusCarr 0:3bdd295c3b0e 80 wdt_reset();
MatteusCarr 0:3bdd295c3b0e 81 if (CycleOn)
MatteusCarr 0:3bdd295c3b0e 82 {
MatteusCarr 0:3bdd295c3b0e 83 if (stepper.currentPosition() == 0)
MatteusCarr 0:3bdd295c3b0e 84 {
MatteusCarr 0:3bdd295c3b0e 85 delay(500);
MatteusCarr 0:3bdd295c3b0e 86 stepper.moveTo(MaxPos_step);
MatteusCarr 0:3bdd295c3b0e 87 }
MatteusCarr 0:3bdd295c3b0e 88 else if (stepper.currentPosition() == MaxPos_step)
MatteusCarr 0:3bdd295c3b0e 89 {
MatteusCarr 0:3bdd295c3b0e 90 delay(500);
MatteusCarr 0:3bdd295c3b0e 91 stepper.moveTo(0);
MatteusCarr 0:3bdd295c3b0e 92 }
MatteusCarr 0:3bdd295c3b0e 93 }
MatteusCarr 0:3bdd295c3b0e 94 analogWrite(10, map(stepper.currentPosition(), 0, MaxPos_step, 0, 250));
MatteusCarr 0:3bdd295c3b0e 95 stepper.run();
MatteusCarr 0:3bdd295c3b0e 96 if((digitalRead(HOM_PIN) == LOW) && (HomeDone)) while(1);
MatteusCarr 0:3bdd295c3b0e 97
MatteusCarr 0:3bdd295c3b0e 98 if (pc.readable())
MatteusCarr 0:3bdd295c3b0e 99 {
MatteusCarr 0:3bdd295c3b0e 100 char Option = pc.getc();
MatteusCarr 0:3bdd295c3b0e 101 if (Option == 'P')
MatteusCarr 0:3bdd295c3b0e 102 {
MatteusCarr 0:3bdd295c3b0e 103 float NewPos = Serial.parseFloat();
MatteusCarr 0:3bdd295c3b0e 104 stepper.moveTo((NewPos * STEPS_by_REV) / mm_by_REV);
MatteusCarr 0:3bdd295c3b0e 105 }
MatteusCarr 0:3bdd295c3b0e 106 else if (Option == 'C')
MatteusCarr 0:3bdd295c3b0e 107 {
MatteusCarr 0:3bdd295c3b0e 108 CycleOn = !CycleOn ;
MatteusCarr 0:3bdd295c3b0e 109 }
MatteusCarr 0:3bdd295c3b0e 110 else if (Option == 'S')
MatteusCarr 0:3bdd295c3b0e 111 {
MatteusCarr 0:3bdd295c3b0e 112 float NewSpeed= Serial.parseFloat(); //pc.??
MatteusCarr 0:3bdd295c3b0e 113 stepper.setMaxSpeed((NewSpeed * STEPS_by_REV) / mm_by_REV);
MatteusCarr 0:3bdd295c3b0e 114 }
MatteusCarr 0:3bdd295c3b0e 115 else if (Option == 'H')
MatteusCarr 0:3bdd295c3b0e 116 {
MatteusCarr 0:3bdd295c3b0e 117 MotorGoHome(&stepper);
MatteusCarr 0:3bdd295c3b0e 118 }
MatteusCarr 0:3bdd295c3b0e 119 }
MatteusCarr 0:3bdd295c3b0e 120 }
MatteusCarr 0:3bdd295c3b0e 121 return 0;
MatteusCarr 0:3bdd295c3b0e 122 }
MatteusCarr 0:3bdd295c3b0e 123