Projeto Mecatrônico - 2020 - G3 / Mbed 2 deprecated Pipetagem

Dependencies:   mbed Pipetagem_automatica

Committer:
terhorst
Date:
Mon Jun 29 13:41:37 2020 +0000
Revision:
1:3dbb9b66b990
Child:
2:bce78210ffb1
.

Who changed what in which revision?

UserRevisionLine numberNew contents of line
terhorst 1:3dbb9b66b990 1 #include "mbed.h"
terhorst 1:3dbb9b66b990 2
terhorst 1:3dbb9b66b990 3 AnalogIn XAxis(PA_0);
terhorst 1:3dbb9b66b990 4 AnalogIn YAxis(PA_1);
terhorst 1:3dbb9b66b990 5 InterruptIn PARA_CARAI(PC_9);
terhorst 1:3dbb9b66b990 6 InterruptIn butao(PC_13);
terhorst 1:3dbb9b66b990 7 DigitalIn ZAxis_UP(PA_8);
terhorst 1:3dbb9b66b990 8 DigitalIn ZAxis_DOWN(PB_10);
terhorst 1:3dbb9b66b990 9 DigitalOut Fase_M1_A(PB_12);
terhorst 1:3dbb9b66b990 10 DigitalOut Fase_M1_B(PB_15);
terhorst 1:3dbb9b66b990 11 DigitalOut Fase_M1_C(PB_14);
terhorst 1:3dbb9b66b990 12 DigitalOut Fase_M1_D(PB_13);
terhorst 1:3dbb9b66b990 13 DigitalOut Fase_M2_A(PC_12);
terhorst 1:3dbb9b66b990 14 DigitalOut Fase_M2_B(PA_13);
terhorst 1:3dbb9b66b990 15 DigitalOut Fase_M2_C(PA_14);
terhorst 1:3dbb9b66b990 16 DigitalOut Fase_M2_D(PA_15);
terhorst 1:3dbb9b66b990 17 DigitalOut Fase_M3_A(PA_12);
terhorst 1:3dbb9b66b990 18 DigitalOut Fase_M3_B(PC_5);
terhorst 1:3dbb9b66b990 19 DigitalOut Fase_M3_C(PC_6);
terhorst 1:3dbb9b66b990 20 DigitalOut Fase_M3_D(PC_8);
terhorst 1:3dbb9b66b990 21 DigitalOut Emergencia(PB_9);
terhorst 1:3dbb9b66b990 22 Serial pc(USBTX, USBRX);
terhorst 1:3dbb9b66b990 23 Timer debounce;
terhorst 1:3dbb9b66b990 24
terhorst 1:3dbb9b66b990 25 float tempo = 0.01;
terhorst 1:3dbb9b66b990 26
terhorst 1:3dbb9b66b990 27 void Botao_Emergencia(void);
terhorst 1:3dbb9b66b990 28 void PAROU(void);
terhorst 1:3dbb9b66b990 29
terhorst 1:3dbb9b66b990 30 int ZUP = ZAxis_UP;
terhorst 1:3dbb9b66b990 31 int ZDOWN = ZAxis_DOWN;
terhorst 1:3dbb9b66b990 32 int limite1 = 0;
terhorst 1:3dbb9b66b990 33 int limite2 = 0;
terhorst 1:3dbb9b66b990 34 int limite3 = 0;
terhorst 1:3dbb9b66b990 35 int limite4 = 0;
terhorst 1:3dbb9b66b990 36 int limite5 = 0;
terhorst 1:3dbb9b66b990 37 int limite6 = 0;
terhorst 1:3dbb9b66b990 38 int PosicaoUsuario[] = {0,0,0};
terhorst 1:3dbb9b66b990 39 int estado = 1;
terhorst 1:3dbb9b66b990 40
terhorst 1:3dbb9b66b990 41 void SubindoZ() {
terhorst 1:3dbb9b66b990 42 if (debounce.read_ms()>200) {
terhorst 1:3dbb9b66b990 43 Fase_M3_D = 1;
terhorst 1:3dbb9b66b990 44 Fase_M3_C = 0;
terhorst 1:3dbb9b66b990 45 Fase_M3_B = 0;
terhorst 1:3dbb9b66b990 46 Fase_M3_A = 0;
terhorst 1:3dbb9b66b990 47 wait(tempo);
terhorst 1:3dbb9b66b990 48 Fase_M3_D = 0;
terhorst 1:3dbb9b66b990 49 Fase_M3_C = 1;
terhorst 1:3dbb9b66b990 50 Fase_M3_B = 0;
terhorst 1:3dbb9b66b990 51 Fase_M3_A = 0;
terhorst 1:3dbb9b66b990 52 wait(tempo);
terhorst 1:3dbb9b66b990 53 Fase_M3_D = 0;
terhorst 1:3dbb9b66b990 54 Fase_M3_C = 0;
terhorst 1:3dbb9b66b990 55 Fase_M3_B = 1;
terhorst 1:3dbb9b66b990 56 Fase_M3_A = 0;
terhorst 1:3dbb9b66b990 57 wait(tempo);
terhorst 1:3dbb9b66b990 58 Fase_M3_D = 0;
terhorst 1:3dbb9b66b990 59 Fase_M3_C = 0;
terhorst 1:3dbb9b66b990 60 Fase_M3_B = 0;
terhorst 1:3dbb9b66b990 61 Fase_M3_A = 1;
terhorst 1:3dbb9b66b990 62 wait(tempo);
terhorst 1:3dbb9b66b990 63 limite1 = limite1 + 1;
terhorst 1:3dbb9b66b990 64 if (limite1 == 50) {
terhorst 1:3dbb9b66b990 65 PosicaoUsuario[2] = PosicaoUsuario[2] - 5;
terhorst 1:3dbb9b66b990 66 }
terhorst 1:3dbb9b66b990 67 }
terhorst 1:3dbb9b66b990 68 }
terhorst 1:3dbb9b66b990 69
terhorst 1:3dbb9b66b990 70 void DescendoZ() {
terhorst 1:3dbb9b66b990 71 if (debounce.read_ms()>200) {
terhorst 1:3dbb9b66b990 72 Fase_M3_A = 1;
terhorst 1:3dbb9b66b990 73 Fase_M3_B = 0;
terhorst 1:3dbb9b66b990 74 Fase_M3_C = 0;
terhorst 1:3dbb9b66b990 75 Fase_M3_D = 0;
terhorst 1:3dbb9b66b990 76 wait(tempo);
terhorst 1:3dbb9b66b990 77 Fase_M3_A = 0;
terhorst 1:3dbb9b66b990 78 Fase_M3_B = 1;
terhorst 1:3dbb9b66b990 79 Fase_M3_C = 0;
terhorst 1:3dbb9b66b990 80 Fase_M3_D = 0;
terhorst 1:3dbb9b66b990 81 wait(tempo);
terhorst 1:3dbb9b66b990 82 Fase_M3_A = 0;
terhorst 1:3dbb9b66b990 83 Fase_M3_B = 0;
terhorst 1:3dbb9b66b990 84 Fase_M3_C = 1;
terhorst 1:3dbb9b66b990 85 Fase_M3_D = 0;
terhorst 1:3dbb9b66b990 86 wait(tempo);
terhorst 1:3dbb9b66b990 87 Fase_M3_A = 0;
terhorst 1:3dbb9b66b990 88 Fase_M3_B = 0;
terhorst 1:3dbb9b66b990 89 Fase_M3_C = 0;
terhorst 1:3dbb9b66b990 90 Fase_M3_D = 1;
terhorst 1:3dbb9b66b990 91 wait(tempo);
terhorst 1:3dbb9b66b990 92 limite2 = limite2 + 1;
terhorst 1:3dbb9b66b990 93 if (limite2 == 50) {
terhorst 1:3dbb9b66b990 94 PosicaoUsuario[2] = PosicaoUsuario[2] + 5;
terhorst 1:3dbb9b66b990 95 }
terhorst 1:3dbb9b66b990 96 }
terhorst 1:3dbb9b66b990 97 }
terhorst 1:3dbb9b66b990 98
terhorst 1:3dbb9b66b990 99 void joystick(){
terhorst 1:3dbb9b66b990 100
terhorst 1:3dbb9b66b990 101 int X,Y;
terhorst 1:3dbb9b66b990 102 Emergencia = 0;
terhorst 1:3dbb9b66b990 103 Fase_M1_A = 0;
terhorst 1:3dbb9b66b990 104 Fase_M1_B = 0;
terhorst 1:3dbb9b66b990 105 Fase_M1_C = 0;
terhorst 1:3dbb9b66b990 106 Fase_M1_D = 0;
terhorst 1:3dbb9b66b990 107 Fase_M2_A = 0;
terhorst 1:3dbb9b66b990 108 Fase_M2_B = 0;
terhorst 1:3dbb9b66b990 109 Fase_M2_C = 0;
terhorst 1:3dbb9b66b990 110 Fase_M2_D = 0;
terhorst 1:3dbb9b66b990 111 Fase_M3_A = 0;
terhorst 1:3dbb9b66b990 112 Fase_M3_B = 0;
terhorst 1:3dbb9b66b990 113 Fase_M3_C = 0;
terhorst 1:3dbb9b66b990 114 Fase_M3_D = 0;
terhorst 1:3dbb9b66b990 115
terhorst 1:3dbb9b66b990 116 debounce.start();
terhorst 1:3dbb9b66b990 117 butao.rise(&Botao_Emergencia);
terhorst 1:3dbb9b66b990 118 PARA_CARAI.rise(&PAROU);
terhorst 1:3dbb9b66b990 119
terhorst 1:3dbb9b66b990 120 while (estado == 1) {
terhorst 1:3dbb9b66b990 121
terhorst 1:3dbb9b66b990 122 X = XAxis.read() * 1000;
terhorst 1:3dbb9b66b990 123 Y = YAxis.read() * 1000;
terhorst 1:3dbb9b66b990 124 float tempo = 0.01;
terhorst 1:3dbb9b66b990 125
terhorst 1:3dbb9b66b990 126 if (ZAxis_UP != 0 && ZAxis_DOWN == 0) { // Quando o botão UP estiver pressionado e o botão DOWN não - Suba a pipeta - inverte o sentido de rotação do motor
terhorst 1:3dbb9b66b990 127 SubindoZ();
terhorst 1:3dbb9b66b990 128 }
terhorst 1:3dbb9b66b990 129
terhorst 1:3dbb9b66b990 130 else if (ZAxis_DOWN != 0 && ZAxis_UP == 0 ) { // Quando o botão DOWN estiver pressionado e o botão UP não - Desce a pipeta - sentido normal de rotação do motor
terhorst 1:3dbb9b66b990 131 DescendoZ();
terhorst 1:3dbb9b66b990 132 }
terhorst 1:3dbb9b66b990 133
terhorst 1:3dbb9b66b990 134 if (100<X<900) { //delimitando range de atuação do joystick
terhorst 1:3dbb9b66b990 135 Fase_M1_A = 0;
terhorst 1:3dbb9b66b990 136 Fase_M1_B = 0;
terhorst 1:3dbb9b66b990 137 Fase_M1_C = 0;
terhorst 1:3dbb9b66b990 138 Fase_M1_D = 0;
terhorst 1:3dbb9b66b990 139 Fase_M2_A = 0;
terhorst 1:3dbb9b66b990 140 Fase_M2_B = 0;
terhorst 1:3dbb9b66b990 141 Fase_M2_C = 0;
terhorst 1:3dbb9b66b990 142 Fase_M2_D = 0;
terhorst 1:3dbb9b66b990 143 Fase_M3_A = 0;
terhorst 1:3dbb9b66b990 144 Fase_M3_B = 0;
terhorst 1:3dbb9b66b990 145 Fase_M3_C = 0;
terhorst 1:3dbb9b66b990 146 Fase_M3_D = 0;
terhorst 1:3dbb9b66b990 147 }
terhorst 1:3dbb9b66b990 148
terhorst 1:3dbb9b66b990 149 if (100<Y<900) { //delimitando range de atuação do joystick
terhorst 1:3dbb9b66b990 150 Fase_M1_A = 0;
terhorst 1:3dbb9b66b990 151 Fase_M1_B = 0;
terhorst 1:3dbb9b66b990 152 Fase_M1_C = 0;
terhorst 1:3dbb9b66b990 153 Fase_M1_D = 0;
terhorst 1:3dbb9b66b990 154 Fase_M2_A = 0;
terhorst 1:3dbb9b66b990 155 Fase_M2_B = 0;
terhorst 1:3dbb9b66b990 156 Fase_M2_C = 0;
terhorst 1:3dbb9b66b990 157 Fase_M2_D = 0;
terhorst 1:3dbb9b66b990 158 Fase_M3_A = 0;
terhorst 1:3dbb9b66b990 159 Fase_M3_B = 0;
terhorst 1:3dbb9b66b990 160 Fase_M3_C = 0;
terhorst 1:3dbb9b66b990 161 Fase_M3_D = 0;
terhorst 1:3dbb9b66b990 162 }
terhorst 1:3dbb9b66b990 163
terhorst 1:3dbb9b66b990 164 if (X<100) { //seta esquerda - Inverte o sentido de rotação
terhorst 1:3dbb9b66b990 165
terhorst 1:3dbb9b66b990 166 Fase_M1_D = 1;
terhorst 1:3dbb9b66b990 167 Fase_M1_C = 0;
terhorst 1:3dbb9b66b990 168 Fase_M1_B = 0;
terhorst 1:3dbb9b66b990 169 Fase_M1_A = 0;
terhorst 1:3dbb9b66b990 170 wait(tempo);
terhorst 1:3dbb9b66b990 171 Fase_M1_D = 0;
terhorst 1:3dbb9b66b990 172 Fase_M1_C = 1;
terhorst 1:3dbb9b66b990 173 Fase_M1_B = 0;
terhorst 1:3dbb9b66b990 174 Fase_M1_A = 0;
terhorst 1:3dbb9b66b990 175 wait(tempo);
terhorst 1:3dbb9b66b990 176 Fase_M1_D = 0;
terhorst 1:3dbb9b66b990 177 Fase_M1_C = 0;
terhorst 1:3dbb9b66b990 178 Fase_M1_B = 1;
terhorst 1:3dbb9b66b990 179 Fase_M1_A = 0;
terhorst 1:3dbb9b66b990 180 wait(tempo);
terhorst 1:3dbb9b66b990 181 Fase_M1_D = 0;
terhorst 1:3dbb9b66b990 182 Fase_M1_C = 0;
terhorst 1:3dbb9b66b990 183 Fase_M1_B = 0;
terhorst 1:3dbb9b66b990 184 Fase_M1_A = 1;
terhorst 1:3dbb9b66b990 185 wait(tempo);
terhorst 1:3dbb9b66b990 186 limite3 = limite3 + 1;
terhorst 1:3dbb9b66b990 187 if (limite3 == 50) {
terhorst 1:3dbb9b66b990 188 PosicaoUsuario[0] = PosicaoUsuario[0] - 5;
terhorst 1:3dbb9b66b990 189 }
terhorst 1:3dbb9b66b990 190 }
terhorst 1:3dbb9b66b990 191
terhorst 1:3dbb9b66b990 192 else if (X>900) { // seta direita - sentido normal de rotação
terhorst 1:3dbb9b66b990 193
terhorst 1:3dbb9b66b990 194 Fase_M1_A = 1;
terhorst 1:3dbb9b66b990 195 Fase_M1_B = 0;
terhorst 1:3dbb9b66b990 196 Fase_M1_C = 0;
terhorst 1:3dbb9b66b990 197 Fase_M1_D = 0;
terhorst 1:3dbb9b66b990 198 wait(tempo);
terhorst 1:3dbb9b66b990 199 Fase_M1_A = 0;
terhorst 1:3dbb9b66b990 200 Fase_M1_B = 1;
terhorst 1:3dbb9b66b990 201 Fase_M1_C = 0;
terhorst 1:3dbb9b66b990 202 Fase_M1_D = 0;
terhorst 1:3dbb9b66b990 203 wait(tempo);
terhorst 1:3dbb9b66b990 204 Fase_M1_A = 0;
terhorst 1:3dbb9b66b990 205 Fase_M1_B = 0;
terhorst 1:3dbb9b66b990 206 Fase_M1_C = 1;
terhorst 1:3dbb9b66b990 207 Fase_M1_D = 0;
terhorst 1:3dbb9b66b990 208 wait(tempo);
terhorst 1:3dbb9b66b990 209 Fase_M1_A = 0;
terhorst 1:3dbb9b66b990 210 Fase_M1_B = 0;
terhorst 1:3dbb9b66b990 211 Fase_M1_C = 0;
terhorst 1:3dbb9b66b990 212 Fase_M1_D = 1;
terhorst 1:3dbb9b66b990 213 wait(tempo);
terhorst 1:3dbb9b66b990 214 limite4 = limite4 + 1;
terhorst 1:3dbb9b66b990 215 if (limite4 == 50) {
terhorst 1:3dbb9b66b990 216 PosicaoUsuario[0] = PosicaoUsuario[0] + 5;
terhorst 1:3dbb9b66b990 217 }
terhorst 1:3dbb9b66b990 218 }
terhorst 1:3dbb9b66b990 219
terhorst 1:3dbb9b66b990 220 else if (Y<100) { //seta pra baixo - Inverte o sentido de rotação
terhorst 1:3dbb9b66b990 221
terhorst 1:3dbb9b66b990 222 Fase_M2_D = 1;
terhorst 1:3dbb9b66b990 223 Fase_M2_C = 0;
terhorst 1:3dbb9b66b990 224 Fase_M2_B = 0;
terhorst 1:3dbb9b66b990 225 Fase_M2_A = 0;
terhorst 1:3dbb9b66b990 226 wait(tempo);
terhorst 1:3dbb9b66b990 227 Fase_M2_D = 0;
terhorst 1:3dbb9b66b990 228 Fase_M2_C = 1;
terhorst 1:3dbb9b66b990 229 Fase_M2_B = 0;
terhorst 1:3dbb9b66b990 230 Fase_M2_A = 0;
terhorst 1:3dbb9b66b990 231 wait(tempo);
terhorst 1:3dbb9b66b990 232 Fase_M2_D = 0;
terhorst 1:3dbb9b66b990 233 Fase_M2_C = 0;
terhorst 1:3dbb9b66b990 234 Fase_M2_B = 1;
terhorst 1:3dbb9b66b990 235 Fase_M2_A = 0;
terhorst 1:3dbb9b66b990 236 wait(tempo);
terhorst 1:3dbb9b66b990 237 Fase_M2_D = 0;
terhorst 1:3dbb9b66b990 238 Fase_M2_C = 0;
terhorst 1:3dbb9b66b990 239 Fase_M2_B = 0;
terhorst 1:3dbb9b66b990 240 Fase_M2_A = 1;
terhorst 1:3dbb9b66b990 241 wait(tempo);
terhorst 1:3dbb9b66b990 242 limite5 = limite5 + 1;
terhorst 1:3dbb9b66b990 243 if (limite5 == 50) {
terhorst 1:3dbb9b66b990 244 PosicaoUsuario[1] = PosicaoUsuario[1] - 5;
terhorst 1:3dbb9b66b990 245 }
terhorst 1:3dbb9b66b990 246 }
terhorst 1:3dbb9b66b990 247
terhorst 1:3dbb9b66b990 248 else if (Y>900) { //seta pra cima - Sentido normal de rotação
terhorst 1:3dbb9b66b990 249
terhorst 1:3dbb9b66b990 250 Fase_M2_A = 1;
terhorst 1:3dbb9b66b990 251 Fase_M2_B = 0;
terhorst 1:3dbb9b66b990 252 Fase_M2_C = 0;
terhorst 1:3dbb9b66b990 253 Fase_M2_D = 0;
terhorst 1:3dbb9b66b990 254 wait(tempo);
terhorst 1:3dbb9b66b990 255 Fase_M2_A = 0;
terhorst 1:3dbb9b66b990 256 Fase_M2_B = 1;
terhorst 1:3dbb9b66b990 257 Fase_M2_C = 0;
terhorst 1:3dbb9b66b990 258 Fase_M2_D = 0;
terhorst 1:3dbb9b66b990 259 wait(tempo);
terhorst 1:3dbb9b66b990 260 Fase_M2_A = 0;
terhorst 1:3dbb9b66b990 261 Fase_M2_B = 0;
terhorst 1:3dbb9b66b990 262 Fase_M2_C = 1;
terhorst 1:3dbb9b66b990 263 Fase_M2_D = 0;
terhorst 1:3dbb9b66b990 264 wait(tempo);
terhorst 1:3dbb9b66b990 265 Fase_M2_A = 0;
terhorst 1:3dbb9b66b990 266 Fase_M2_B = 0;
terhorst 1:3dbb9b66b990 267 Fase_M2_C = 0;
terhorst 1:3dbb9b66b990 268 Fase_M2_D = 1;
terhorst 1:3dbb9b66b990 269 wait(tempo);
terhorst 1:3dbb9b66b990 270 limite6 = limite6 + 1;
terhorst 1:3dbb9b66b990 271 if (limite6 == 50) {
terhorst 1:3dbb9b66b990 272 PosicaoUsuario[1] = PosicaoUsuario[1] + 5;
terhorst 1:3dbb9b66b990 273 }
terhorst 1:3dbb9b66b990 274 }
terhorst 1:3dbb9b66b990 275 }
terhorst 1:3dbb9b66b990 276 }
terhorst 1:3dbb9b66b990 277
terhorst 1:3dbb9b66b990 278 void Botao_Emergencia() {
terhorst 1:3dbb9b66b990 279 if (debounce.read_ms()>200) {
terhorst 1:3dbb9b66b990 280 Emergencia = 1;
terhorst 1:3dbb9b66b990 281 debounce.reset();
terhorst 1:3dbb9b66b990 282 }
terhorst 1:3dbb9b66b990 283 }
terhorst 1:3dbb9b66b990 284
terhorst 1:3dbb9b66b990 285 void PAROU() {
terhorst 1:3dbb9b66b990 286 estado = 0;
terhorst 1:3dbb9b66b990 287 }
terhorst 1:3dbb9b66b990 288
terhorst 1:3dbb9b66b990 289