Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
Dependencies: mbed motorController2
main.cpp@0:3bdd295c3b0e, 2020-04-08 (annotated)
- Committer:
- MatteusCarr
- Date:
- Wed Apr 08 02:30:52 2020 +0000
- Revision:
- 0:3bdd295c3b0e
Firts 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 |