step rc
main.cpp@0:60609af7aa3e, 2020-04-09 (annotated)
- Committer:
- MatteusCarr
- Date:
- Thu Apr 09 21:06:36 2020 +0000
- Revision:
- 0:60609af7aa3e
Step RC nrf52
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
MatteusCarr | 0:60609af7aa3e | 1 | #include "mbed.h" |
MatteusCarr | 0:60609af7aa3e | 2 | #include "AccelStepper.h" |
MatteusCarr | 0:60609af7aa3e | 3 | #include "PinNames.h" |
MatteusCarr | 0:60609af7aa3e | 4 | #include "stdio.h" |
MatteusCarr | 0:60609af7aa3e | 5 | //#include <avr/wdt.h> |
MatteusCarr | 0:60609af7aa3e | 6 | |
MatteusCarr | 0:60609af7aa3e | 7 | Serial pc(USBTX, USBRX); |
MatteusCarr | 0:60609af7aa3e | 8 | |
MatteusCarr | 0:60609af7aa3e | 9 | |
MatteusCarr | 0:60609af7aa3e | 10 | //Pins |
MatteusCarr | 0:60609af7aa3e | 11 | #define STP1_PIN 2 //AnalogOut STP_PIN(nome do pino da placa) ##DESCOMENTAR ESSE BLOCO## |
MatteusCarr | 0:60609af7aa3e | 12 | #define DIR1_PIN 3 // AnalogOut DIR_PIN(nome do pino da placa) |
MatteusCarr | 0:60609af7aa3e | 13 | /*#define ENA_PIN 2 // DigitalOut ENA_PIN(nome do pino da placa) |
MatteusCarr | 0:60609af7aa3e | 14 | #define HOM_PIN 12*/ // DigitalIn HOM_PIN(nome do pino da placa) |
MatteusCarr | 0:60609af7aa3e | 15 | |
MatteusCarr | 0:60609af7aa3e | 16 | //AnalogOut STP_PIN(PTB0); |
MatteusCarr | 0:60609af7aa3e | 17 | //AnalogOut DIR_PIN(PTB1); |
MatteusCarr | 0:60609af7aa3e | 18 | DigitalOut ENA_PIN(P1_13); |
MatteusCarr | 0:60609af7aa3e | 19 | DigitalIn HOM_PIN(P0_28); |
MatteusCarr | 0:60609af7aa3e | 20 | |
MatteusCarr | 0:60609af7aa3e | 21 | //Max |
MatteusCarr | 0:60609af7aa3e | 22 | #define MAX_ACCEL_mms2 500.0 |
MatteusCarr | 0:60609af7aa3e | 23 | #define MAX_SPEED_mms 75.0 |
MatteusCarr | 0:60609af7aa3e | 24 | #define MAX_POS_mm 100.0 |
MatteusCarr | 0:60609af7aa3e | 25 | |
MatteusCarr | 0:60609af7aa3e | 26 | //Stepper Motor parameters |
MatteusCarr | 0:60609af7aa3e | 27 | #define STEPS_by_REV 400.0 |
MatteusCarr | 0:60609af7aa3e | 28 | #define mm_by_REV 25.0 |
MatteusCarr | 0:60609af7aa3e | 29 | |
MatteusCarr | 0:60609af7aa3e | 30 | //Home Parameters |
MatteusCarr | 0:60609af7aa3e | 31 | #define HOME_SPEED_mms 10.0 |
MatteusCarr | 0:60609af7aa3e | 32 | #define HOME_INCREMENT_mm 1.0 |
MatteusCarr | 0:60609af7aa3e | 33 | #define HOME_PRESS_POSITION_mm 2.0 |
MatteusCarr | 0:60609af7aa3e | 34 | |
MatteusCarr | 0:60609af7aa3e | 35 | //Consts |
MatteusCarr | 0:60609af7aa3e | 36 | const unsigned int MAX_ACCEL_STEPS2 = (MAX_ACCEL_mms2 * STEPS_by_REV) / mm_by_REV; |
MatteusCarr | 0:60609af7aa3e | 37 | unsigned int MAX_SPEED_STEPS = (MAX_SPEED_mms * STEPS_by_REV) / mm_by_REV; |
MatteusCarr | 0:60609af7aa3e | 38 | const unsigned int HOME_SPEED_STEPS = (HOME_SPEED_mms * STEPS_by_REV) / mm_by_REV; |
MatteusCarr | 0:60609af7aa3e | 39 | const unsigned int HOME_INCREMENT_STEP = (HOME_INCREMENT_mm * STEPS_by_REV) / mm_by_REV; |
MatteusCarr | 0:60609af7aa3e | 40 | const unsigned int HOME_PRESS_POSITION_STEP = (HOME_PRESS_POSITION_mm * STEPS_by_REV) / mm_by_REV; |
MatteusCarr | 0:60609af7aa3e | 41 | |
MatteusCarr | 0:60609af7aa3e | 42 | //vars |
MatteusCarr | 0:60609af7aa3e | 43 | unsigned int MaxPos_step = (MAX_POS_mm * STEPS_by_REV) / mm_by_REV; |
MatteusCarr | 0:60609af7aa3e | 44 | bool CycleOn = true; |
MatteusCarr | 0:60609af7aa3e | 45 | bool HomeDone = false; |
MatteusCarr | 0:60609af7aa3e | 46 | |
MatteusCarr | 0:60609af7aa3e | 47 | void MotorGoHome(AccelStepper &stpr) |
MatteusCarr | 0:60609af7aa3e | 48 | { |
MatteusCarr | 0:60609af7aa3e | 49 | int CurrentPos = 0; |
MatteusCarr | 0:60609af7aa3e | 50 | pc.printf("Finding Home..."); |
MatteusCarr | 0:60609af7aa3e | 51 | stpr.setCurrentPosition(0); |
MatteusCarr | 0:60609af7aa3e | 52 | stpr.setMaxSpeed(HOME_SPEED_STEPS); |
MatteusCarr | 0:60609af7aa3e | 53 | while (HOM_PIN == HIGH) |
MatteusCarr | 0:60609af7aa3e | 54 | { |
MatteusCarr | 0:60609af7aa3e | 55 | CurrentPos = CurrentPos - HOME_INCREMENT_STEP; |
MatteusCarr | 0:60609af7aa3e | 56 | stpr.runToNewPosition(CurrentPos); |
MatteusCarr | 0:60609af7aa3e | 57 | } |
MatteusCarr | 0:60609af7aa3e | 58 | stpr.setCurrentPosition(0); |
MatteusCarr | 0:60609af7aa3e | 59 | stpr.runToNewPosition(HOME_PRESS_POSITION_STEP); |
MatteusCarr | 0:60609af7aa3e | 60 | stpr.setCurrentPosition(0); |
MatteusCarr | 0:60609af7aa3e | 61 | HomeDone = true; |
MatteusCarr | 0:60609af7aa3e | 62 | pc.printf("Finding Home..."); |
MatteusCarr | 0:60609af7aa3e | 63 | } |
MatteusCarr | 0:60609af7aa3e | 64 | |
MatteusCarr | 0:60609af7aa3e | 65 | void setup(AccelStepper &stpr) |
MatteusCarr | 0:60609af7aa3e | 66 | { |
MatteusCarr | 0:60609af7aa3e | 67 | pc.baud(250000); |
MatteusCarr | 0:60609af7aa3e | 68 | //pinMode(10 , OUTPUT); |
MatteusCarr | 0:60609af7aa3e | 69 | //pinMode(STP_PIN , OUTPUT); |
MatteusCarr | 0:60609af7aa3e | 70 | //pinMode(DIR_PIN , OUTPUT); |
MatteusCarr | 0:60609af7aa3e | 71 | //pinMode(ENA_PIN , OUTPUT); |
MatteusCarr | 0:60609af7aa3e | 72 | ENA_PIN = HIGH; |
MatteusCarr | 0:60609af7aa3e | 73 | stpr.setMaxSpeed(MAX_SPEED_STEPS); |
MatteusCarr | 0:60609af7aa3e | 74 | stpr.setAcceleration(MAX_ACCEL_STEPS2); |
MatteusCarr | 0:60609af7aa3e | 75 | MotorGoHome(stpr); |
MatteusCarr | 0:60609af7aa3e | 76 | stpr.setMaxSpeed(MAX_SPEED_STEPS); |
MatteusCarr | 0:60609af7aa3e | 77 | stpr.setAcceleration(MAX_ACCEL_STEPS2); |
MatteusCarr | 0:60609af7aa3e | 78 | //wdt_enable(WDTO_2S); |
MatteusCarr | 0:60609af7aa3e | 79 | } |
MatteusCarr | 0:60609af7aa3e | 80 | |
MatteusCarr | 0:60609af7aa3e | 81 | int main(){ |
MatteusCarr | 0:60609af7aa3e | 82 | |
MatteusCarr | 0:60609af7aa3e | 83 | AccelStepper stepper(2, P1_2, P0_23); |
MatteusCarr | 0:60609af7aa3e | 84 | |
MatteusCarr | 0:60609af7aa3e | 85 | setup(stepper); |
MatteusCarr | 0:60609af7aa3e | 86 | |
MatteusCarr | 0:60609af7aa3e | 87 | while(1){ |
MatteusCarr | 0:60609af7aa3e | 88 | //wdt_reset(); |
MatteusCarr | 0:60609af7aa3e | 89 | if (CycleOn) |
MatteusCarr | 0:60609af7aa3e | 90 | { |
MatteusCarr | 0:60609af7aa3e | 91 | if (stepper.currentPosition() == 0) |
MatteusCarr | 0:60609af7aa3e | 92 | { |
MatteusCarr | 0:60609af7aa3e | 93 | wait(500); |
MatteusCarr | 0:60609af7aa3e | 94 | stepper.moveTo(MaxPos_step); |
MatteusCarr | 0:60609af7aa3e | 95 | } |
MatteusCarr | 0:60609af7aa3e | 96 | else if (stepper.currentPosition() == MaxPos_step) |
MatteusCarr | 0:60609af7aa3e | 97 | { |
MatteusCarr | 0:60609af7aa3e | 98 | wait(500); |
MatteusCarr | 0:60609af7aa3e | 99 | stepper.moveTo(0); |
MatteusCarr | 0:60609af7aa3e | 100 | } |
MatteusCarr | 0:60609af7aa3e | 101 | } |
MatteusCarr | 0:60609af7aa3e | 102 | //analogWrite(10, map(stepper.currentPosition(), 0, MaxPos_step, 0, 250)); |
MatteusCarr | 0:60609af7aa3e | 103 | stepper.run(); |
MatteusCarr | 0:60609af7aa3e | 104 | if((HOM_PIN == LOW) && (HomeDone)) while(1); |
MatteusCarr | 0:60609af7aa3e | 105 | |
MatteusCarr | 0:60609af7aa3e | 106 | if (pc.readable()) |
MatteusCarr | 0:60609af7aa3e | 107 | { |
MatteusCarr | 0:60609af7aa3e | 108 | char Option = pc.getc(); |
MatteusCarr | 0:60609af7aa3e | 109 | if (Option == 'P') |
MatteusCarr | 0:60609af7aa3e | 110 | { |
MatteusCarr | 0:60609af7aa3e | 111 | //float NewPos = serial.parsefloat(); |
MatteusCarr | 0:60609af7aa3e | 112 | //stepper.moveTo((NewPos * STEPS_by_REV) / mm_by_REV); |
MatteusCarr | 0:60609af7aa3e | 113 | } |
MatteusCarr | 0:60609af7aa3e | 114 | else if (Option == 'C') |
MatteusCarr | 0:60609af7aa3e | 115 | { |
MatteusCarr | 0:60609af7aa3e | 116 | CycleOn = !CycleOn ; |
MatteusCarr | 0:60609af7aa3e | 117 | } |
MatteusCarr | 0:60609af7aa3e | 118 | else if (Option == 'S') |
MatteusCarr | 0:60609af7aa3e | 119 | { |
MatteusCarr | 0:60609af7aa3e | 120 | //float NewSpeed = parsefloat(); //pc.?? |
MatteusCarr | 0:60609af7aa3e | 121 | //stepper.setMaxSpeed((NewSpeed * STEPS_by_REV) / mm_by_REV); |
MatteusCarr | 0:60609af7aa3e | 122 | } |
MatteusCarr | 0:60609af7aa3e | 123 | else if (Option == 'H') |
MatteusCarr | 0:60609af7aa3e | 124 | { |
MatteusCarr | 0:60609af7aa3e | 125 | MotorGoHome(stepper); |
MatteusCarr | 0:60609af7aa3e | 126 | } |
MatteusCarr | 0:60609af7aa3e | 127 | } |
MatteusCarr | 0:60609af7aa3e | 128 | } |
MatteusCarr | 0:60609af7aa3e | 129 | return 0; |
MatteusCarr | 0:60609af7aa3e | 130 | } |
MatteusCarr | 0:60609af7aa3e | 131 |