Grupo T / Mbed OS GRUPOT
Committer:
lucasfontenla
Date:
Thu May 03 17:47:14 2018 +0000
Revision:
5:0cbf491f703d
Parent:
4:48717b42eab2
Child:
6:af32c68ff4cf
Nova fun??o "move()" adicionada para movimenta??o autom?tica dos eixos.

Who changed what in which revision?

UserRevisionLine numberNew contents of line
lucasfontenla 0:cc562f78f889 1 #include "mbed.h"
lucasfontenla 0:cc562f78f889 2
lucasfontenla 5:0cbf491f703d 3 // MACHINE SETUP ---------------------------------------------------------------------------
lucasfontenla 5:0cbf491f703d 4
lucasfontenla 5:0cbf491f703d 5 // drivers output signal
lucasfontenla 4:48717b42eab2 6 DigitalOut stepX(D2);
lucasfontenla 4:48717b42eab2 7 DigitalOut dirX(D3);
lucasfontenla 4:48717b42eab2 8
lucasfontenla 4:48717b42eab2 9 DigitalOut stepY(D8);
lucasfontenla 4:48717b42eab2 10 DigitalOut dirY(D9);
lucasfontenla 4:48717b42eab2 11
lucasfontenla 4:48717b42eab2 12 DigitalOut stepZ(D11);
lucasfontenla 4:48717b42eab2 13 DigitalOut dirZ(D12);
lucasfontenla 4:48717b42eab2 14
lucasfontenla 5:0cbf491f703d 15 // hardware input signal
lucasfontenla 5:0cbf491f703d 16 // end-of-stroke sensors
lucasfontenla 5:0cbf491f703d 17 DigitalIn endX1(D5);
lucasfontenla 5:0cbf491f703d 18 DigitalIn endX2(D10);
lucasfontenla 5:0cbf491f703d 19
lucasfontenla 5:0cbf491f703d 20 // IHM for development
lucasfontenla 4:48717b42eab2 21 AnalogIn joyX(A0);
lucasfontenla 4:48717b42eab2 22 AnalogIn joyY(A1);
lucasfontenla 4:48717b42eab2 23
lucasfontenla 4:48717b42eab2 24 DigitalIn zUp(D6);
lucasfontenla 4:48717b42eab2 25 DigitalIn zDwn(D7);
lucasfontenla 4:48717b42eab2 26
lucasfontenla 5:0cbf491f703d 27 // variables definition
lucasfontenla 5:0cbf491f703d 28 int modeStatus = 1;
lucasfontenla 5:0cbf491f703d 29
lucasfontenla 4:48717b42eab2 30 float valX;
lucasfontenla 4:48717b42eab2 31 float valY;
lucasfontenla 4:48717b42eab2 32 int valZUp;
lucasfontenla 4:48717b42eab2 33 int valZDwn;
lucasfontenla 4:48717b42eab2 34
lucasfontenla 4:48717b42eab2 35 int activeX = 1;
lucasfontenla 4:48717b42eab2 36 int activeY = 1;
lucasfontenla 4:48717b42eab2 37 int activeZ = 1;
lucasfontenla 4:48717b42eab2 38
lucasfontenla 5:0cbf491f703d 39 int x_dir;
lucasfontenla 5:0cbf491f703d 40 int y_dir;
lucasfontenla 5:0cbf491f703d 41 int z_dir;
lucasfontenla 5:0cbf491f703d 42
lucasfontenla 4:48717b42eab2 43 int contador = 0;
lucasfontenla 4:48717b42eab2 44
lucasfontenla 5:0cbf491f703d 45 float ppsMax = 600.0;
lucasfontenla 5:0cbf491f703d 46
lucasfontenla 5:0cbf491f703d 47 void move(int pps, int x_dir, int y_dir, int z_dir, int x_step, int y_step, int z_step);
lucasfontenla 1:b2e395e50a45 48
lucasfontenla 1:b2e395e50a45 49 int main(){
lucasfontenla 4:48717b42eab2 50 printf("Starting...\r\n");
lucasfontenla 5:0cbf491f703d 51
lucasfontenla 5:0cbf491f703d 52 if(modeStatus){
lucasfontenla 5:0cbf491f703d 53 //Código de JOG
lucasfontenla 5:0cbf491f703d 54 printf("JOG Selected");
lucasfontenla 5:0cbf491f703d 55 while(1){
lucasfontenla 5:0cbf491f703d 56 valX = joyX;
lucasfontenla 5:0cbf491f703d 57 valY = joyY;
lucasfontenla 5:0cbf491f703d 58
lucasfontenla 5:0cbf491f703d 59 valZUp = zUp;
lucasfontenla 5:0cbf491f703d 60 valZDwn = zDwn;
lucasfontenla 5:0cbf491f703d 61
lucasfontenla 5:0cbf491f703d 62 if(valX > 0.7){
lucasfontenla 5:0cbf491f703d 63 if(x_dir){
lucasfontenla 5:0cbf491f703d 64 x_dir = 0;
lucasfontenla 5:0cbf491f703d 65 }
lucasfontenla 5:0cbf491f703d 66 activeX = 1;
lucasfontenla 5:0cbf491f703d 67 }
lucasfontenla 5:0cbf491f703d 68 else if(valX < 0.3){
lucasfontenla 5:0cbf491f703d 69 if(!x_dir){
lucasfontenla 5:0cbf491f703d 70 x_dir = 1;
lucasfontenla 5:0cbf491f703d 71 }
lucasfontenla 5:0cbf491f703d 72 activeX = 1;
lucasfontenla 5:0cbf491f703d 73 }
lucasfontenla 5:0cbf491f703d 74 else{
lucasfontenla 5:0cbf491f703d 75 activeX = 0;
lucasfontenla 4:48717b42eab2 76 }
lucasfontenla 5:0cbf491f703d 77
lucasfontenla 5:0cbf491f703d 78 //----------------------------------------------------------------------
lucasfontenla 5:0cbf491f703d 79
lucasfontenla 5:0cbf491f703d 80 if(valY > 0.7){
lucasfontenla 5:0cbf491f703d 81 if(!y_dir){
lucasfontenla 5:0cbf491f703d 82 y_dir = 1;
lucasfontenla 5:0cbf491f703d 83 }
lucasfontenla 5:0cbf491f703d 84 activeY = 1;
lucasfontenla 5:0cbf491f703d 85 }
lucasfontenla 5:0cbf491f703d 86 else if(valY < 0.3){
lucasfontenla 5:0cbf491f703d 87 if(y_dir){
lucasfontenla 5:0cbf491f703d 88 y_dir = 0;
lucasfontenla 5:0cbf491f703d 89 }
lucasfontenla 5:0cbf491f703d 90 activeY = 1;
lucasfontenla 5:0cbf491f703d 91 }
lucasfontenla 5:0cbf491f703d 92 else{
lucasfontenla 5:0cbf491f703d 93 activeY = 0;
lucasfontenla 4:48717b42eab2 94 }
lucasfontenla 5:0cbf491f703d 95
lucasfontenla 5:0cbf491f703d 96 //----------------------------------------------------------------------
lucasfontenla 5:0cbf491f703d 97
lucasfontenla 5:0cbf491f703d 98 if(!valZUp && valZDwn){
lucasfontenla 5:0cbf491f703d 99 if(z_dir){
lucasfontenla 5:0cbf491f703d 100 z_dir = 0;
lucasfontenla 5:0cbf491f703d 101 }
lucasfontenla 5:0cbf491f703d 102 activeZ = 1;
lucasfontenla 5:0cbf491f703d 103 }
lucasfontenla 5:0cbf491f703d 104 else if(!valZDwn && valZUp){
lucasfontenla 5:0cbf491f703d 105 if(!z_dir){
lucasfontenla 5:0cbf491f703d 106 z_dir = 1;
lucasfontenla 5:0cbf491f703d 107 }
lucasfontenla 5:0cbf491f703d 108 activeZ = 1;
lucasfontenla 5:0cbf491f703d 109 }
lucasfontenla 5:0cbf491f703d 110 else {
lucasfontenla 5:0cbf491f703d 111 activeZ = 0;
lucasfontenla 5:0cbf491f703d 112 }
lucasfontenla 5:0cbf491f703d 113
lucasfontenla 5:0cbf491f703d 114 //----------------------------------------------------------------------
lucasfontenla 5:0cbf491f703d 115
lucasfontenla 5:0cbf491f703d 116 move(ppsMax, x_dir, y_dir, z_dir, activeX, activeY, activeZ);
lucasfontenla 5:0cbf491f703d 117
lucasfontenla 4:48717b42eab2 118 }
lucasfontenla 5:0cbf491f703d 119 }
lucasfontenla 5:0cbf491f703d 120
lucasfontenla 5:0cbf491f703d 121 else {
lucasfontenla 5:0cbf491f703d 122 //Código de execução fora do JOG
lucasfontenla 5:0cbf491f703d 123 }
lucasfontenla 5:0cbf491f703d 124
lucasfontenla 5:0cbf491f703d 125 }
lucasfontenla 5:0cbf491f703d 126
lucasfontenla 5:0cbf491f703d 127 void move(int pps, int x_dir, int y_dir, int z_dir, int x_step, int y_step, int z_step){
lucasfontenla 5:0cbf491f703d 128 float time = 1.0/pps/2.0;
lucasfontenla 5:0cbf491f703d 129
lucasfontenla 5:0cbf491f703d 130 dirX = x_dir;
lucasfontenla 5:0cbf491f703d 131 dirY = y_dir;
lucasfontenla 5:0cbf491f703d 132 dirZ = z_dir;
lucasfontenla 5:0cbf491f703d 133
lucasfontenla 5:0cbf491f703d 134 int max_val;
lucasfontenla 5:0cbf491f703d 135
lucasfontenla 5:0cbf491f703d 136 if(x_step > y_step){
lucasfontenla 5:0cbf491f703d 137 if(x_step > z_step){
lucasfontenla 5:0cbf491f703d 138 max_val = x_step;
lucasfontenla 4:48717b42eab2 139 }
lucasfontenla 4:48717b42eab2 140 else {
lucasfontenla 5:0cbf491f703d 141 max_val = z_step;
lucasfontenla 4:48717b42eab2 142 }
lucasfontenla 5:0cbf491f703d 143 } else if(y_step > z_step){
lucasfontenla 5:0cbf491f703d 144 max_val = y_step;
lucasfontenla 5:0cbf491f703d 145 }
lucasfontenla 5:0cbf491f703d 146 else {
lucasfontenla 5:0cbf491f703d 147 max_val = z_step;
lucasfontenla 5:0cbf491f703d 148 }
lucasfontenla 5:0cbf491f703d 149
lucasfontenla 5:0cbf491f703d 150 for(int i = 0; i < max_val; i++){
lucasfontenla 5:0cbf491f703d 151 if(i > x_step){
lucasfontenla 5:0cbf491f703d 152 stepX = 0;
lucasfontenla 5:0cbf491f703d 153 }
lucasfontenla 5:0cbf491f703d 154 else { stepX = 1; }
lucasfontenla 4:48717b42eab2 155
lucasfontenla 5:0cbf491f703d 156 if(i > y_step){
lucasfontenla 5:0cbf491f703d 157 stepY = 0;
lucasfontenla 5:0cbf491f703d 158 }
lucasfontenla 5:0cbf491f703d 159 else { stepY = 1; }
lucasfontenla 5:0cbf491f703d 160
lucasfontenla 5:0cbf491f703d 161 if(i > z_step){
lucasfontenla 5:0cbf491f703d 162 stepZ = 0;
lucasfontenla 5:0cbf491f703d 163 }
lucasfontenla 5:0cbf491f703d 164 else { stepZ = 1; }
lucasfontenla 5:0cbf491f703d 165
lucasfontenla 5:0cbf491f703d 166 wait(time);
lucasfontenla 4:48717b42eab2 167 stepX = 0;
lucasfontenla 4:48717b42eab2 168 stepY = 0;
lucasfontenla 4:48717b42eab2 169 stepZ = 0;
lucasfontenla 5:0cbf491f703d 170 wait(time);
lucasfontenla 4:48717b42eab2 171 }
lucasfontenla 5:0cbf491f703d 172 }