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
main.cpp@1:8707e26bf33d, 2020-04-08 (annotated)
- 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?
User | Revision | Line number | New 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 |