step rc
main.cpp
- Committer:
- MatteusCarr
- Date:
- 2020-04-09
- Revision:
- 0:60609af7aa3e
File content as of revision 0:60609af7aa3e:
#include "mbed.h" #include "AccelStepper.h" #include "PinNames.h" #include "stdio.h" //#include <avr/wdt.h> Serial pc(USBTX, USBRX); //Pins #define STP1_PIN 2 //AnalogOut STP_PIN(nome do pino da placa) ##DESCOMENTAR ESSE BLOCO## #define DIR1_PIN 3 // AnalogOut DIR_PIN(nome do pino da placa) /*#define ENA_PIN 2 // DigitalOut ENA_PIN(nome do pino da placa) #define HOM_PIN 12*/ // DigitalIn HOM_PIN(nome do pino da placa) //AnalogOut STP_PIN(PTB0); //AnalogOut DIR_PIN(PTB1); DigitalOut ENA_PIN(P1_13); DigitalIn HOM_PIN(P0_28); //Max #define MAX_ACCEL_mms2 500.0 #define MAX_SPEED_mms 75.0 #define MAX_POS_mm 100.0 //Stepper Motor parameters #define STEPS_by_REV 400.0 #define mm_by_REV 25.0 //Home Parameters #define HOME_SPEED_mms 10.0 #define HOME_INCREMENT_mm 1.0 #define HOME_PRESS_POSITION_mm 2.0 //Consts const unsigned int MAX_ACCEL_STEPS2 = (MAX_ACCEL_mms2 * STEPS_by_REV) / mm_by_REV; unsigned int MAX_SPEED_STEPS = (MAX_SPEED_mms * STEPS_by_REV) / mm_by_REV; const unsigned int HOME_SPEED_STEPS = (HOME_SPEED_mms * STEPS_by_REV) / mm_by_REV; const unsigned int HOME_INCREMENT_STEP = (HOME_INCREMENT_mm * STEPS_by_REV) / mm_by_REV; const unsigned int HOME_PRESS_POSITION_STEP = (HOME_PRESS_POSITION_mm * STEPS_by_REV) / mm_by_REV; //vars unsigned int MaxPos_step = (MAX_POS_mm * STEPS_by_REV) / mm_by_REV; bool CycleOn = true; bool HomeDone = false; void MotorGoHome(AccelStepper &stpr) { int CurrentPos = 0; pc.printf("Finding Home..."); stpr.setCurrentPosition(0); stpr.setMaxSpeed(HOME_SPEED_STEPS); while (HOM_PIN == HIGH) { CurrentPos = CurrentPos - HOME_INCREMENT_STEP; stpr.runToNewPosition(CurrentPos); } stpr.setCurrentPosition(0); stpr.runToNewPosition(HOME_PRESS_POSITION_STEP); stpr.setCurrentPosition(0); HomeDone = true; pc.printf("Finding Home..."); } void setup(AccelStepper &stpr) { pc.baud(250000); //pinMode(10 , OUTPUT); //pinMode(STP_PIN , OUTPUT); //pinMode(DIR_PIN , OUTPUT); //pinMode(ENA_PIN , OUTPUT); ENA_PIN = HIGH; stpr.setMaxSpeed(MAX_SPEED_STEPS); stpr.setAcceleration(MAX_ACCEL_STEPS2); MotorGoHome(stpr); stpr.setMaxSpeed(MAX_SPEED_STEPS); stpr.setAcceleration(MAX_ACCEL_STEPS2); //wdt_enable(WDTO_2S); } int main(){ AccelStepper stepper(2, P1_2, P0_23); setup(stepper); while(1){ //wdt_reset(); if (CycleOn) { if (stepper.currentPosition() == 0) { wait(500); stepper.moveTo(MaxPos_step); } else if (stepper.currentPosition() == MaxPos_step) { wait(500); stepper.moveTo(0); } } //analogWrite(10, map(stepper.currentPosition(), 0, MaxPos_step, 0, 250)); stepper.run(); if((HOM_PIN == LOW) && (HomeDone)) while(1); if (pc.readable()) { char Option = pc.getc(); if (Option == 'P') { //float NewPos = serial.parsefloat(); //stepper.moveTo((NewPos * STEPS_by_REV) / mm_by_REV); } else if (Option == 'C') { CycleOn = !CycleOn ; } else if (Option == 'S') { //float NewSpeed = parsefloat(); //pc.?? //stepper.setMaxSpeed((NewSpeed * STEPS_by_REV) / mm_by_REV); } else if (Option == 'H') { MotorGoHome(stepper); } } } return 0; }