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.
main.cpp
- Committer:
- lucasfontenla
- Date:
- 2018-05-03
- Revision:
- 6:af32c68ff4cf
- Parent:
- 5:0cbf491f703d
- Child:
- 7:27ea14e58788
File content as of revision 6:af32c68ff4cf:
#include "mbed.h"
// MACHINE SETUP ---------------------------------------------------------------------------
// drivers output signal
DigitalOut stepX(D2);
DigitalOut dirX(D3);
DigitalOut stepY(D8);
DigitalOut dirY(D9);
DigitalOut stepZ(D11);
DigitalOut dirZ(D12);
// hardware input signal
// end-of-stroke sensors
DigitalIn endX1(D5);
DigitalIn endX2(D10);
// IHM for development
AnalogIn joyX(A0);
AnalogIn joyY(A1);
DigitalIn zUp(D6);
DigitalIn zDwn(D7);
// variables definition
int modeStatus = 1;
float valX;
float valY;
int valZUp;
int valZDwn;
int activeX = 1;
int activeY = 1;
int activeZ = 1;
int x_dir;
int y_dir;
int z_dir;
int contador = 0;
float ppsMax = 600.0;
void move(int pps, int x_dir, int y_dir, int z_dir, int x_step, int y_step, int z_step);
int main(){
printf("Starting...\r\n");
if(modeStatus){
//Código de JOG
printf("JOG Selected");
while(1){
valX = joyX;
valY = joyY;
valZUp = zUp;
valZDwn = zDwn;
if(valX > 0.7){
if(x_dir){
x_dir = 0;
}
activeX = 1;
}
else if(valX < 0.3){
if(!x_dir){
x_dir = 1;
}
activeX = 1;
}
else{
activeX = 0;
}
//----------------------------------------------------------------------
if(valY > 0.7){
if(!y_dir){
y_dir = 1;
}
activeY = 1;
}
else if(valY < 0.3){
if(y_dir){
y_dir = 0;
}
activeY = 1;
}
else{
activeY = 0;
}
//----------------------------------------------------------------------
if(!valZUp && valZDwn){
if(z_dir){
z_dir = 0;
}
activeZ = 1;
}
else if(!valZDwn && valZUp){
if(!z_dir){
z_dir = 1;
}
activeZ = 1;
}
else {
activeZ = 0;
}
//----------------------------------------------------------------------
move(ppsMax, x_dir, y_dir, z_dir, activeX, activeY, activeZ);
}
}
else {
//Código de execução fora do JOG
}
}
void move(int pps, int x_dir, int y_dir, int z_dir, int x_step, int y_step, int z_step){
float time = 1.0/pps/2.0;
dirX = x_dir;
dirY = y_dir;
dirZ = z_dir;
int max_val;
// maior número de passos -------
if(x_step > y_step){
if(x_step > z_step){
max_val = x_step;
}
else {
max_val = z_step;
}
} else if(y_step > z_step){
max_val = y_step;
}
else {
max_val = z_step;
}
for(int i = 0; i < max_val; i++){
if(i >= x_step){
stepX = 0;
}
else { stepX = 1; }
if(i >= y_step){
stepY = 0;
}
else { stepY = 1; }
if(i >= z_step){
stepZ = 0;
}
else { stepZ = 1; }
wait(time);
stepX = 0;
stepY = 0;
stepZ = 0;
wait(time);
}
}