Projeto Mecatrônico / Mbed 2 deprecated ARDUINO_NEXTION

Dependencies:   mbed

Committer:
diogonac
Date:
Thu Jun 10 17:07:38 2021 +0000
Revision:
7:929727a280f3
Parent:
6:f21b6a630acb
Child:
8:aeebfa9f9569
Estrutura completa

Who changed what in which revision?

UserRevisionLine numberNew contents of line
diogonac 0:9344dd7c7e26 1 #include "mbed.h"
diogonac 1:794015d244d3 2 #include <string>
diogonac 1:794015d244d3 3 #include <stdio.h> /* printf, fgets */
diogonac 1:794015d244d3 4 #include <stdlib.h>
diogonac 1:794015d244d3 5 #include <iostream>
diogonac 5:1ee07aa85351 6
diogonac 5:1ee07aa85351 7 #define tempo_pipeta 1.5
diogonac 0:9344dd7c7e26 8 //=============== NEXTION ========================
diogonac 0:9344dd7c7e26 9
diogonac 0:9344dd7c7e26 10 Serial recebe_arduino(PA_9, PA_10); //TX, RX
diogonac 5:1ee07aa85351 11 unsigned char set_eixos[5] = {0, 0, 0, 0, 0};
diogonac 0:9344dd7c7e26 12 void recebe_dados(unsigned char *data_buf, int numchar);
diogonac 1:794015d244d3 13
diogonac 0:9344dd7c7e26 14 unsigned char contador_X = 0;
diogonac 0:9344dd7c7e26 15 unsigned char contador_Y = 0;
diogonac 0:9344dd7c7e26 16 unsigned char contador_Z = 0;
diogonac 0:9344dd7c7e26 17
diogonac 1:794015d244d3 18 char tmp[2];
diogonac 0:9344dd7c7e26 19 //================================================
diogonac 0:9344dd7c7e26 20
diogonac 0:9344dd7c7e26 21 //TextLCD lcd(D8, D9, D4, D5, D6, D7); //Comunicação com LCD
diogonac 0:9344dd7c7e26 22 BusOut motor_x(PC_8, PC_6, PC_5, PA_12); //Pinos para acionamento do motor do eixo X
diogonac 0:9344dd7c7e26 23 BusOut motor_y(PA_11, PB_12, PB_11, PB_2); //Pinos para acionamento do motor do eixo Y
diogonac 0:9344dd7c7e26 24 BusOut motor_z(PB_1, PB_15, PB_14, PB_13); //Pinos para acionamento do motor do eixo Z
diogonac 0:9344dd7c7e26 25
diogonac 0:9344dd7c7e26 26 Serial pc (D1, D0); //Comunicação com USB
diogonac 0:9344dd7c7e26 27 InterruptIn botao_emergencia_in(PC_4); //Botão de emergência para detectar acionamento
diogonac 6:f21b6a630acb 28
diogonac 7:929727a280f3 29 InterruptIn botao_reset(PC_3); //Botão de reset para detectar acionamentoR
diogonac 7:929727a280f3 30
diogonac 6:f21b6a630acb 31 InterruptIn botao_fim_curso_rise_X(PC_12); //Chave de fim de curso EIXO X
diogonac 6:f21b6a630acb 32 InterruptIn botao_fim_curso_rise_Y(PA_15); //Chave de fim de curso EIXO Y
diogonac 6:f21b6a630acb 33 InterruptIn botao_fim_curso_rise_Z(PB_7); //Chave de fim de curso EIXO Z
diogonac 6:f21b6a630acb 34
diogonac 5:1ee07aa85351 35 DigitalOut sinal_pipeta(PC_10); // Pino para o acionamento da pipeta
diogonac 0:9344dd7c7e26 36
diogonac 0:9344dd7c7e26 37 Timer debounce1; //Correção para botão de posição de salva
diogonac 0:9344dd7c7e26 38 Timer debounce2; //Correção para botão de emergência
diogonac 0:9344dd7c7e26 39 Timer debounce3; //Correção para chave de fim de curso
diogonac 0:9344dd7c7e26 40 Timer tempo_motor; //Correção para chave de fim de curso
diogonac 0:9344dd7c7e26 41
diogonac 0:9344dd7c7e26 42 int pulsos_Z = 0; //Contagem dos pulsos para o motor_Z
diogonac 0:9344dd7c7e26 43 int pulsos_X = 0; //Contagem dos pulsos para o motor_X
diogonac 0:9344dd7c7e26 44 int pulsos_Y = 0; //Contagem dos pulsos para o motor_Y
diogonac 1:794015d244d3 45 int count;
diogonac 0:9344dd7c7e26 46 int i; //Variável para contar o incremento no motor
diogonac 7:929727a280f3 47 int Z_seguranca = 3; //Define a posição de segurança do eixo Z para então movimentar X ou Y
diogonac 6:f21b6a630acb 48 int cont_fim_curso_X = 0; //Variável para contar o incremento do fim de curso
diogonac 6:f21b6a630acb 49 int cont_fim_curso_Y = 0; //Variável para contar o incremento do fim de curso
diogonac 6:f21b6a630acb 50 int cont_fim_curso_Z = 0; //Variável para contar o incremento do fim de curso
diogonac 6:f21b6a630acb 51
diogonac 0:9344dd7c7e26 52 int J_XYZ; //Variável para ler o potenciometro do Joystick
diogonac 0:9344dd7c7e26 53 int passo_fuso = 5; //Declara o passo do fuso
diogonac 0:9344dd7c7e26 54 int pegaZ; //Variável que receberá o valor da posição de salva
diogonac 0:9344dd7c7e26 55 int SELECT; //Variável para leitura do botão SELECT da IHM
diogonac 6:f21b6a630acb 56 int contador_SELECT_X = 0; //Define o contator do botão SELECT
diogonac 6:f21b6a630acb 57 int contador_SELECT_Y = 0; //Define o contator do botão SELECT
diogonac 6:f21b6a630acb 58 int contador_SELECT_Z = 0; //Define o contator do botão SELECT
diogonac 0:9344dd7c7e26 59 int contador_emergencia = 0; //Define o contator do botão de emergência
diogonac 6:f21b6a630acb 60
diogonac 6:f21b6a630acb 61 int contador_rise_X = 0;
diogonac 6:f21b6a630acb 62 int contador_rise_Y = 0;
diogonac 6:f21b6a630acb 63 int contador_rise_Z = 0;
diogonac 6:f21b6a630acb 64
diogonac 6:f21b6a630acb 65 int seguranca_fdc_X = 0;
diogonac 6:f21b6a630acb 66 int seguranca_fdc_Y = 0;
diogonac 6:f21b6a630acb 67 int seguranca_fdc_Z = 0;
diogonac 6:f21b6a630acb 68
diogonac 5:1ee07aa85351 69 int tubos_usados;
diogonac 5:1ee07aa85351 70 int tubo_atual;
diogonac 5:1ee07aa85351 71 int quantidade_depositada;
diogonac 6:f21b6a630acb 72 int j;
diogonac 6:f21b6a630acb 73 float posicoes[30] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0};//XYZ PEGA, XYZ SOLTA1, XYZ SOLTA2, ...
diogonac 0:9344dd7c7e26 74
diogonac 6:f21b6a630acb 75 int quantidades[10] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0};//ml PEGA, ml SOLTA1, ml SOLTA2, ...
diogonac 1:794015d244d3 76
diogonac 0:9344dd7c7e26 77 float tempo_horario, tempo_anti_horario; //Define os tempos de acionamento do motor
diogonac 0:9344dd7c7e26 78 float deslocamento_X = 0; //Define o deslocamento linear total
diogonac 0:9344dd7c7e26 79 float deslocamento_Y = 0; //Define o deslocamento linear total
diogonac 0:9344dd7c7e26 80 float deslocamento_Z = 0; //Define o deslocamento linear total
diogonac 0:9344dd7c7e26 81
diogonac 0:9344dd7c7e26 82 float deslocamento_max_X = 0; //Define o deslocamento linear total
diogonac 0:9344dd7c7e26 83 float deslocamento_max_Y = 0; //Define o deslocamento linear total
diogonac 0:9344dd7c7e26 84 float deslocamento_max_Z = 0; //Define o deslocamento linear total
diogonac 0:9344dd7c7e26 85
diogonac 0:9344dd7c7e26 86 float passo_motor = 5.625/32; //Declara o passo angular do motor
diogonac 1:794015d244d3 87 float velocidade = 0.003; //Armazena a velocidade dos motores
diogonac 1:794015d244d3 88 int tempo_acionamento = 3180; //Tempo padrao de acionamento dos eixos
diogonac 0:9344dd7c7e26 89
diogonac 0:9344dd7c7e26 90 bool valor_SELECT = false; //Boleana para lógica do botão SELECT
diogonac 0:9344dd7c7e26 91 bool estado_referenciamento = false; //Boleana para identificar a necessidade do referênciamento
diogonac 6:f21b6a630acb 92
diogonac 6:f21b6a630acb 93 bool estado_referenciamento_X = false; //Boleana para identificar a necessidade do referênciamento
diogonac 6:f21b6a630acb 94 bool estado_referenciamento_Y = false; //Boleana para identificar a necessidade do referênciamento
diogonac 6:f21b6a630acb 95 bool estado_referenciamento_Z = false; //Boleana para identificar a necessidade do referênciamento
diogonac 6:f21b6a630acb 96
diogonac 6:f21b6a630acb 97
diogonac 0:9344dd7c7e26 98 bool estado_botao_emergencia_in = false; //Boleana para identificar a necessidade do referênciamentosatisfazer a lógica da rotina_emergencia_in
diogonac 0:9344dd7c7e26 99 bool motor_referenciamento = false; //Boleana para permitir o movimento automático do motot no referenciamento
diogonac 0:9344dd7c7e26 100
diogonac 0:9344dd7c7e26 101 bool eixo_pressionado = true;
diogonac 0:9344dd7c7e26 102
diogonac 0:9344dd7c7e26 103 // Rotinas do programa
diogonac 0:9344dd7c7e26 104 //void rotina_posicao_salva (void);
diogonac 0:9344dd7c7e26 105 void rotina_emergencia_in (void);
diogonac 0:9344dd7c7e26 106 void rotina_velocidade_eixo (void);
diogonac 0:9344dd7c7e26 107 void rotina_deslocamento_eixo (void);
diogonac 0:9344dd7c7e26 108 void rotina_deslocamento_eixo_menos_Z (void);
diogonac 0:9344dd7c7e26 109 void rotina_JOG (void);
diogonac 5:1ee07aa85351 110 void rotina_solta (void);
diogonac 5:1ee07aa85351 111 void rotina_pega (void);
diogonac 7:929727a280f3 112 void rotina_botao_reset (void);
diogonac 5:1ee07aa85351 113
diogonac 6:f21b6a630acb 114 void rotina_movimenta();
diogonac 6:f21b6a630acb 115
diogonac 3:a2de739d2802 116 void rotina_aciona_pipeta(void);
diogonac 0:9344dd7c7e26 117
diogonac 6:f21b6a630acb 118 void rotina_fdc_rise_X (void);
diogonac 6:f21b6a630acb 119 void referenciamento_X (void);
diogonac 6:f21b6a630acb 120
diogonac 6:f21b6a630acb 121 void rotina_fdc_rise_Y (void);
diogonac 6:f21b6a630acb 122 void referenciamento_Y (void);
diogonac 6:f21b6a630acb 123
diogonac 6:f21b6a630acb 124 void rotina_fdc_rise_Z (void);
diogonac 6:f21b6a630acb 125 void referenciamento_Z (void);
diogonac 0:9344dd7c7e26 126
diogonac 0:9344dd7c7e26 127 int main()
diogonac 0:9344dd7c7e26 128 {
diogonac 0:9344dd7c7e26 129 recebe_arduino.baud(115200);// Interface com arduino
diogonac 0:9344dd7c7e26 130
diogonac 0:9344dd7c7e26 131
diogonac 0:9344dd7c7e26 132
diogonac 0:9344dd7c7e26 133 pc.baud(115200); //Define a velocidade da porta USB
diogonac 0:9344dd7c7e26 134 motor_x = 0x00; //Estabelece a condição inicial do motor do eixo X
diogonac 0:9344dd7c7e26 135 motor_y = 0x00; //Estabelece a condição inicial do motor do eixo Y
diogonac 0:9344dd7c7e26 136 motor_z = 0x00; //Estabelece a condição inicial do motor do eixo Z
diogonac 0:9344dd7c7e26 137
diogonac 0:9344dd7c7e26 138 //Declara os pinos de interrupção com suas funções
diogonac 0:9344dd7c7e26 139 //posicao_salva.rise(&rotina_posicao_salva);
diogonac 0:9344dd7c7e26 140 botao_emergencia_in.rise(&rotina_emergencia_in);
diogonac 7:929727a280f3 141 botao_reset.fall(&rotina_botao_reset);
diogonac 7:929727a280f3 142
diogonac 6:f21b6a630acb 143 botao_fim_curso_rise_X.rise(&rotina_fdc_rise_X);
diogonac 6:f21b6a630acb 144
diogonac 6:f21b6a630acb 145 botao_fim_curso_rise_Y.rise(&rotina_fdc_rise_Y);
diogonac 6:f21b6a630acb 146
diogonac 6:f21b6a630acb 147 botao_fim_curso_rise_Z.rise(&rotina_fdc_rise_Z);
diogonac 0:9344dd7c7e26 148
diogonac 0:9344dd7c7e26 149 //Inicializa os timers
diogonac 0:9344dd7c7e26 150 debounce1.start();
diogonac 0:9344dd7c7e26 151 debounce2.start();
diogonac 0:9344dd7c7e26 152 debounce3.start();
diogonac 7:929727a280f3 153 //sinal_pipeta = 1;
diogonac 3:a2de739d2802 154 wait_ms(500);
diogonac 7:929727a280f3 155 sinal_pipeta = 0;
diogonac 0:9344dd7c7e26 156
diogonac 0:9344dd7c7e26 157 while(1) {
diogonac 0:9344dd7c7e26 158
diogonac 5:1ee07aa85351 159 // pc.printf("Antes: %s \r\n", set_eixos);
diogonac 5:1ee07aa85351 160 //
diogonac 5:1ee07aa85351 161 for(i = 0; i < sizeof(set_eixos); i++) {
diogonac 5:1ee07aa85351 162 set_eixos[i] = 0;
diogonac 5:1ee07aa85351 163 }
diogonac 3:a2de739d2802 164
diogonac 5:1ee07aa85351 165
diogonac 5:1ee07aa85351 166 recebe_dados(set_eixos, 5);
diogonac 5:1ee07aa85351 167
diogonac 5:1ee07aa85351 168 //pc.printf("Depois: %s \r\n", set_eixos);
diogonac 3:a2de739d2802 169
diogonac 3:a2de739d2802 170 if(set_eixos[0] == '0') {
diogonac 3:a2de739d2802 171
diogonac 5:1ee07aa85351 172 pc.printf("Antes: %s \r\n", set_eixos);
diogonac 3:a2de739d2802 173
diogonac 5:1ee07aa85351 174 for(i = 1; i <= sizeof(set_eixos); i++) {
diogonac 3:a2de739d2802 175 set_eixos[i-1] = set_eixos[i];
diogonac 3:a2de739d2802 176 }
diogonac 5:1ee07aa85351 177 set_eixos[3] = 0;
diogonac 5:1ee07aa85351 178 pc.printf("Depois: %s \r\n", set_eixos);
diogonac 3:a2de739d2802 179
diogonac 3:a2de739d2802 180 }
diogonac 0:9344dd7c7e26 181
diogonac 0:9344dd7c7e26 182
diogonac 0:9344dd7c7e26 183
diogonac 1:794015d244d3 184
diogonac 1:794015d244d3 185
diogonac 1:794015d244d3 186
diogonac 0:9344dd7c7e26 187 if(set_eixos[0] == 'R' & set_eixos[1] == 'F') {
diogonac 0:9344dd7c7e26 188
diogonac 0:9344dd7c7e26 189 pc.printf("Referenciamento \r\n");
diogonac 0:9344dd7c7e26 190
diogonac 6:f21b6a630acb 191
diogonac 6:f21b6a630acb 192
diogonac 6:f21b6a630acb 193
diogonac 6:f21b6a630acb 194
diogonac 0:9344dd7c7e26 195 estado_referenciamento = false;
diogonac 0:9344dd7c7e26 196 //Permite o movimento automático do motor até atingir o fim de curso
diogonac 0:9344dd7c7e26 197 pc.printf("Estagio 1: movendo ate detectar\r\n");
diogonac 6:f21b6a630acb 198
diogonac 6:f21b6a630acb 199 contador_SELECT_X = 1;
diogonac 6:f21b6a630acb 200 referenciamento_X();
diogonac 6:f21b6a630acb 201 wait_ms(250);
diogonac 6:f21b6a630acb 202
diogonac 6:f21b6a630acb 203 contador_SELECT_Y = 1;
diogonac 6:f21b6a630acb 204 referenciamento_Y();
diogonac 6:f21b6a630acb 205 wait_ms(250);
diogonac 6:f21b6a630acb 206
diogonac 6:f21b6a630acb 207 contador_SELECT_Z = 1;
diogonac 6:f21b6a630acb 208 referenciamento_Z();
diogonac 6:f21b6a630acb 209 wait_ms(250);
diogonac 0:9344dd7c7e26 210
diogonac 0:9344dd7c7e26 211 } else {
diogonac 0:9344dd7c7e26 212
diogonac 0:9344dd7c7e26 213
diogonac 0:9344dd7c7e26 214 if(estado_referenciamento == true & estado_botao_emergencia_in == false) {
diogonac 0:9344dd7c7e26 215 //Condição para poder disponibilizar a função JOG
diogonac 0:9344dd7c7e26 216
diogonac 0:9344dd7c7e26 217 //Chama a rotina do JOG
diogonac 0:9344dd7c7e26 218 //recebe_dados(set_eixos, 2);
diogonac 0:9344dd7c7e26 219 rotina_velocidade_eixo();
diogonac 0:9344dd7c7e26 220 rotina_JOG();
diogonac 0:9344dd7c7e26 221 pc.printf("%s \r\n", set_eixos);
diogonac 0:9344dd7c7e26 222
diogonac 0:9344dd7c7e26 223 }
diogonac 1:794015d244d3 224 //recebe_dados(set_eixos, 3);
diogonac 1:794015d244d3 225
diogonac 5:1ee07aa85351 226 if(set_eixos[0] == 'P' & estado_botao_emergencia_in == false) { //set_eixos = P27
diogonac 1:794015d244d3 227
diogonac 1:794015d244d3 228 //pc.printf("Pagina 4\r\n");
diogonac 1:794015d244d3 229 // pc.printf("Pega= %s\r\n", set_eixos);
diogonac 1:794015d244d3 230 //pc.printf("X%3.2f, Y%3.2f, Z%3.2f\n", deslocamento_X, deslocamento_Y, deslocamento_Z); //posicao[180] = {23.00, 100.00, 45.22}
diogonac 1:794015d244d3 231
diogonac 1:794015d244d3 232 //int tmp = atoi(cstr);
diogonac 0:9344dd7c7e26 233
diogonac 1:794015d244d3 234 posicoes[0] = deslocamento_X;
diogonac 1:794015d244d3 235 posicoes[1] = deslocamento_Y;
diogonac 1:794015d244d3 236 posicoes[2] = deslocamento_Z;
diogonac 0:9344dd7c7e26 237
diogonac 5:1ee07aa85351 238 for(i = 2; i < 4; i++) {
diogonac 5:1ee07aa85351 239 tmp[i-2] = set_eixos[i];
diogonac 1:794015d244d3 240 }
diogonac 1:794015d244d3 241
diogonac 1:794015d244d3 242 quantidades[0] = atoi(tmp);
diogonac 1:794015d244d3 243
diogonac 1:794015d244d3 244 pc.printf("PosicoesX= %f, PosicoesY= %f, PosicoesZ= %f \r\n", posicoes[0], posicoes[1], posicoes[2]);
diogonac 1:794015d244d3 245 pc.printf("Quantidades_pega= %d \r\n", quantidades[0]);
diogonac 1:794015d244d3 246 pc.printf("set_eixos= %s\r\n", set_eixos);
diogonac 0:9344dd7c7e26 247
diogonac 0:9344dd7c7e26 248 }
diogonac 1:794015d244d3 249
diogonac 5:1ee07aa85351 250 if(set_eixos[0] == 'S' & estado_botao_emergencia_in == false) {
diogonac 1:794015d244d3 251
diogonac 1:794015d244d3 252 switch(set_eixos[1]) {
diogonac 1:794015d244d3 253
diogonac 1:794015d244d3 254 case '1':
diogonac 1:794015d244d3 255
diogonac 1:794015d244d3 256 posicoes[3] = deslocamento_X;
diogonac 1:794015d244d3 257 posicoes[4] = deslocamento_Y;
diogonac 1:794015d244d3 258 posicoes[5] = deslocamento_Z;
diogonac 1:794015d244d3 259
diogonac 1:794015d244d3 260 for(i = 2; i < 4; i++) {
diogonac 1:794015d244d3 261 tmp[i-2] = set_eixos[i];
diogonac 1:794015d244d3 262 }
diogonac 1:794015d244d3 263
diogonac 1:794015d244d3 264 quantidades[1] = atoi(tmp);
diogonac 1:794015d244d3 265 pc.printf("PosicoesX1= %f, PosicoesY1= %f, PosicoesZ1= %f \r\n", posicoes[3], posicoes[4], posicoes[5]);
diogonac 1:794015d244d3 266 pc.printf("Quantidades_solta1= %d \r\n", quantidades[1]);
diogonac 5:1ee07aa85351 267 tubos_usados = 1;
diogonac 1:794015d244d3 268 break;
diogonac 1:794015d244d3 269 case '2':
diogonac 1:794015d244d3 270
diogonac 1:794015d244d3 271 posicoes[6] = deslocamento_X;
diogonac 1:794015d244d3 272 posicoes[7] = deslocamento_Y;
diogonac 1:794015d244d3 273 posicoes[8] = deslocamento_Z;
diogonac 1:794015d244d3 274
diogonac 1:794015d244d3 275 for(i = 2; i < 4; i++) {
diogonac 1:794015d244d3 276 tmp[i-2] = set_eixos[i];
diogonac 1:794015d244d3 277 }
diogonac 1:794015d244d3 278
diogonac 1:794015d244d3 279 quantidades[2] = atoi(tmp);
diogonac 1:794015d244d3 280 pc.printf("PosicoesX2= %f, PosicoesY2= %f, PosicoesZ2= %f \r\n", posicoes[6], posicoes[7], posicoes[8]);
diogonac 1:794015d244d3 281 pc.printf("Quantidades_solta2= %d \r\n", quantidades[2]);
diogonac 5:1ee07aa85351 282 tubos_usados = 2;
diogonac 1:794015d244d3 283 break;
diogonac 1:794015d244d3 284 case '3':
diogonac 1:794015d244d3 285
diogonac 1:794015d244d3 286 posicoes[9] = deslocamento_X;
diogonac 1:794015d244d3 287 posicoes[10] = deslocamento_Y;
diogonac 1:794015d244d3 288 posicoes[11] = deslocamento_Z;
diogonac 1:794015d244d3 289
diogonac 1:794015d244d3 290 for(i = 2; i < 4; i++) {
diogonac 1:794015d244d3 291 tmp[i-2] = set_eixos[i];
diogonac 1:794015d244d3 292 }
diogonac 1:794015d244d3 293
diogonac 1:794015d244d3 294 quantidades[3] = atoi(tmp);
diogonac 1:794015d244d3 295 pc.printf("PosicoesX3= %f, PosicoesY3= %f, PosicoesZ3= %f \r\n", posicoes[9], posicoes[10], posicoes[11]);
diogonac 1:794015d244d3 296 pc.printf("Quantidades_solta3= %d \r\n", quantidades[3]);
diogonac 5:1ee07aa85351 297 tubos_usados = 3;
diogonac 1:794015d244d3 298 break;
diogonac 1:794015d244d3 299
diogonac 2:af4dc49198bf 300 case '4':
diogonac 1:794015d244d3 301
diogonac 1:794015d244d3 302 posicoes[12] = deslocamento_X;
diogonac 1:794015d244d3 303 posicoes[13] = deslocamento_Y;
diogonac 1:794015d244d3 304 posicoes[14] = deslocamento_Z;
diogonac 1:794015d244d3 305
diogonac 1:794015d244d3 306 for(i = 2; i < 4; i++) {
diogonac 1:794015d244d3 307 tmp[i-2] = set_eixos[i];
diogonac 1:794015d244d3 308 }
diogonac 1:794015d244d3 309
diogonac 1:794015d244d3 310 quantidades[4] = atoi(tmp);
diogonac 1:794015d244d3 311 pc.printf("PosicoesX4= %f, PosicoesY4= %f, PosicoesZ4= %f \r\n", posicoes[12], posicoes[13], posicoes[14]);
diogonac 1:794015d244d3 312 pc.printf("Quantidades_solta4= %d \r\n", quantidades[4]);
diogonac 5:1ee07aa85351 313 tubos_usados = 4;
diogonac 1:794015d244d3 314 break;
diogonac 1:794015d244d3 315 case '5':
diogonac 1:794015d244d3 316
diogonac 1:794015d244d3 317 posicoes[15] = deslocamento_X;
diogonac 1:794015d244d3 318 posicoes[16] = deslocamento_Y;
diogonac 1:794015d244d3 319 posicoes[17] = deslocamento_Z;
diogonac 1:794015d244d3 320
diogonac 1:794015d244d3 321 for(i = 2; i < 4; i++) {
diogonac 1:794015d244d3 322 tmp[i-2] = set_eixos[i];
diogonac 1:794015d244d3 323 }
diogonac 1:794015d244d3 324
diogonac 1:794015d244d3 325 quantidades[5] = atoi(tmp);
diogonac 1:794015d244d3 326 pc.printf("PosicoesX5= %f, PosicoesY5= %f, PosicoesZ5= %f \r\n", posicoes[15], posicoes[16], posicoes[17]);
diogonac 1:794015d244d3 327 pc.printf("Quantidades_solta5= %d \r\n", quantidades[5]);
diogonac 5:1ee07aa85351 328 tubos_usados = 5;
diogonac 1:794015d244d3 329 break;
diogonac 1:794015d244d3 330 case '6':
diogonac 1:794015d244d3 331
diogonac 1:794015d244d3 332 posicoes[18] = deslocamento_X;
diogonac 1:794015d244d3 333 posicoes[19] = deslocamento_Y;
diogonac 1:794015d244d3 334 posicoes[20] = deslocamento_Z;
diogonac 1:794015d244d3 335
diogonac 1:794015d244d3 336 for(i = 2; i < 4; i++) {
diogonac 1:794015d244d3 337 tmp[i-2] = set_eixos[i];
diogonac 1:794015d244d3 338 }
diogonac 1:794015d244d3 339
diogonac 1:794015d244d3 340 quantidades[6] = atoi(tmp);
diogonac 1:794015d244d3 341 pc.printf("PosicoesX6= %f, PosicoesY6= %f, PosicoesZ6= %f \r\n", posicoes[18], posicoes[19], posicoes[20]);
diogonac 1:794015d244d3 342 pc.printf("Quantidades_solta6= %d \r\n", quantidades[6]);
diogonac 5:1ee07aa85351 343 tubos_usados = 6;
diogonac 1:794015d244d3 344 break;
diogonac 1:794015d244d3 345
diogonac 2:af4dc49198bf 346 case '7':
diogonac 2:af4dc49198bf 347
diogonac 2:af4dc49198bf 348 posicoes[21] = deslocamento_X;
diogonac 2:af4dc49198bf 349 posicoes[22] = deslocamento_Y;
diogonac 2:af4dc49198bf 350 posicoes[23] = deslocamento_Z;
diogonac 2:af4dc49198bf 351
diogonac 2:af4dc49198bf 352 for(i = 2; i < 4; i++) {
diogonac 2:af4dc49198bf 353 tmp[i-2] = set_eixos[i];
diogonac 2:af4dc49198bf 354 }
diogonac 2:af4dc49198bf 355
diogonac 2:af4dc49198bf 356 quantidades[7] = atoi(tmp);
diogonac 2:af4dc49198bf 357 pc.printf("PosicoesX7= %f, PosicoesY7= %f, PosicoesZ7= %f \r\n", posicoes[21], posicoes[22], posicoes[23]);
diogonac 2:af4dc49198bf 358 pc.printf("Quantidades_solta7= %d \r\n", quantidades[7]);
diogonac 5:1ee07aa85351 359 tubos_usados = 7;
diogonac 2:af4dc49198bf 360 break;
diogonac 2:af4dc49198bf 361 case '8':
diogonac 2:af4dc49198bf 362
diogonac 2:af4dc49198bf 363 posicoes[24] = deslocamento_X;
diogonac 2:af4dc49198bf 364 posicoes[25] = deslocamento_Y;
diogonac 2:af4dc49198bf 365 posicoes[26] = deslocamento_Z;
diogonac 2:af4dc49198bf 366
diogonac 2:af4dc49198bf 367 for(i = 2; i < 4; i++) {
diogonac 2:af4dc49198bf 368 tmp[i-2] = set_eixos[i];
diogonac 2:af4dc49198bf 369 }
diogonac 2:af4dc49198bf 370
diogonac 2:af4dc49198bf 371 quantidades[8] = atoi(tmp);
diogonac 2:af4dc49198bf 372 pc.printf("PosicoesX8= %f, PosicoesY8= %f, PosicoesZ8= %f \r\n", posicoes[24], posicoes[25], posicoes[26]);
diogonac 2:af4dc49198bf 373 pc.printf("Quantidades_solta8= %d \r\n", quantidades[8]);
diogonac 5:1ee07aa85351 374 tubos_usados = 8;
diogonac 2:af4dc49198bf 375 break;
diogonac 2:af4dc49198bf 376 case '9':
diogonac 2:af4dc49198bf 377
diogonac 2:af4dc49198bf 378 posicoes[27] = deslocamento_X;
diogonac 2:af4dc49198bf 379 posicoes[28] = deslocamento_Y;
diogonac 2:af4dc49198bf 380 posicoes[29] = deslocamento_Z;
diogonac 2:af4dc49198bf 381
diogonac 2:af4dc49198bf 382 for(i = 2; i < 4; i++) {
diogonac 2:af4dc49198bf 383 tmp[i-2] = set_eixos[i];
diogonac 2:af4dc49198bf 384 }
diogonac 2:af4dc49198bf 385
diogonac 2:af4dc49198bf 386 quantidades[9] = atoi(tmp);
diogonac 2:af4dc49198bf 387 pc.printf("PosicoesX9= %f, PosicoesY9= %f, PosicoesZ9= %f \r\n", posicoes[27], posicoes[28], posicoes[29]);
diogonac 2:af4dc49198bf 388 pc.printf("Quantidades_solta9= %d \r\n", quantidades[9]);
diogonac 5:1ee07aa85351 389 tubos_usados = 9;
diogonac 2:af4dc49198bf 390 break;
diogonac 2:af4dc49198bf 391
diogonac 2:af4dc49198bf 392 }
diogonac 1:794015d244d3 393
diogonac 1:794015d244d3 394 pc.printf("set_eixos= %s\r\n", set_eixos);
diogonac 1:794015d244d3 395
diogonac 1:794015d244d3 396 }
diogonac 1:794015d244d3 397
diogonac 6:f21b6a630acb 398 if(set_eixos[0] == 'M' & set_eixos[1] == 'P' & estado_botao_emergencia_in == false) {
diogonac 6:f21b6a630acb 399
diogonac 6:f21b6a630acb 400
diogonac 6:f21b6a630acb 401 rotina_pega();
diogonac 6:f21b6a630acb 402
diogonac 6:f21b6a630acb 403 }
diogonac 6:f21b6a630acb 404
diogonac 6:f21b6a630acb 405
diogonac 6:f21b6a630acb 406 if(set_eixos[0] == 'M' & set_eixos[1] == 'S' & estado_botao_emergencia_in == false) {
diogonac 6:f21b6a630acb 407
diogonac 6:f21b6a630acb 408 switch(set_eixos[2]) {
diogonac 6:f21b6a630acb 409
diogonac 6:f21b6a630acb 410 case '1':
diogonac 6:f21b6a630acb 411 j = 5;
diogonac 6:f21b6a630acb 412 rotina_movimenta();
diogonac 6:f21b6a630acb 413 break;
diogonac 6:f21b6a630acb 414 case '2':
diogonac 6:f21b6a630acb 415 j = 8;
diogonac 6:f21b6a630acb 416 rotina_movimenta();
diogonac 6:f21b6a630acb 417 break;
diogonac 6:f21b6a630acb 418 case '3':
diogonac 6:f21b6a630acb 419 j = 11;
diogonac 6:f21b6a630acb 420 rotina_movimenta();
diogonac 6:f21b6a630acb 421 break;
diogonac 6:f21b6a630acb 422 case '4':
diogonac 6:f21b6a630acb 423 j = 14;
diogonac 6:f21b6a630acb 424 rotina_movimenta();
diogonac 6:f21b6a630acb 425 break;
diogonac 6:f21b6a630acb 426 case '5':
diogonac 6:f21b6a630acb 427 j = 17;
diogonac 6:f21b6a630acb 428 rotina_movimenta();
diogonac 6:f21b6a630acb 429 break;
diogonac 6:f21b6a630acb 430 case '6':
diogonac 6:f21b6a630acb 431 j = 20;
diogonac 6:f21b6a630acb 432 rotina_movimenta();
diogonac 6:f21b6a630acb 433 break;
diogonac 6:f21b6a630acb 434 case '7':
diogonac 6:f21b6a630acb 435 j = 23;
diogonac 6:f21b6a630acb 436 rotina_movimenta();
diogonac 6:f21b6a630acb 437 break;
diogonac 6:f21b6a630acb 438 case '8':
diogonac 6:f21b6a630acb 439 j = 26;
diogonac 6:f21b6a630acb 440 rotina_movimenta();
diogonac 6:f21b6a630acb 441 break;
diogonac 6:f21b6a630acb 442 case '9':
diogonac 6:f21b6a630acb 443 j = 29;
diogonac 6:f21b6a630acb 444 rotina_movimenta();
diogonac 6:f21b6a630acb 445 break;
diogonac 6:f21b6a630acb 446
diogonac 6:f21b6a630acb 447 }
diogonac 6:f21b6a630acb 448
diogonac 6:f21b6a630acb 449 pc.printf("set_eixos= %s\r\n", set_eixos);
diogonac 6:f21b6a630acb 450
diogonac 6:f21b6a630acb 451 }
diogonac 6:f21b6a630acb 452
diogonac 5:1ee07aa85351 453 if(set_eixos[0] == 'C' & set_eixos[1] == 'I' & estado_botao_emergencia_in == false) {
diogonac 1:794015d244d3 454
diogonac 3:a2de739d2802 455 pc.printf("Maquina em ciclo \r\n");
diogonac 3:a2de739d2802 456
diogonac 3:a2de739d2802 457 velocidade = 0.003;
diogonac 3:a2de739d2802 458 pc.printf("Posicao_desejada= %f, Posicao_atual= %f \r\n", posicoes[1], deslocamento_Y);
diogonac 3:a2de739d2802 459
diogonac 5:1ee07aa85351 460 rotina_pega();
diogonac 5:1ee07aa85351 461 rotina_aciona_pipeta();
diogonac 5:1ee07aa85351 462 rotina_solta();
diogonac 5:1ee07aa85351 463 //rotina_aciona_pipeta();
diogonac 1:794015d244d3 464
diogonac 3:a2de739d2802 465
diogonac 3:a2de739d2802 466 }
diogonac 3:a2de739d2802 467
diogonac 3:a2de739d2802 468
diogonac 3:a2de739d2802 469
diogonac 3:a2de739d2802 470
diogonac 3:a2de739d2802 471
diogonac 0:9344dd7c7e26 472 }
diogonac 0:9344dd7c7e26 473 }
diogonac 0:9344dd7c7e26 474 }
diogonac 0:9344dd7c7e26 475
diogonac 7:929727a280f3 476 void rotina_botao_reset()
diogonac 7:929727a280f3 477 {
diogonac 0:9344dd7c7e26 478
diogonac 0:9344dd7c7e26 479
diogonac 1:794015d244d3 480
diogonac 7:929727a280f3 481 pc.printf("Maquina em RESET \r\n");
diogonac 7:929727a280f3 482
diogonac 7:929727a280f3 483 estado_referenciamento = false;
diogonac 7:929727a280f3 484 velocidade = 0.003;
diogonac 7:929727a280f3 485 NVIC_SystemReset();
diogonac 7:929727a280f3 486
diogonac 7:929727a280f3 487
diogonac 7:929727a280f3 488
diogonac 7:929727a280f3 489
diogonac 7:929727a280f3 490 }
diogonac 7:929727a280f3 491
diogonac 7:929727a280f3 492
diogonac 7:929727a280f3 493
diogonac 7:929727a280f3 494
diogonac 7:929727a280f3 495
diogonac 0:9344dd7c7e26 496
diogonac 0:9344dd7c7e26 497 void rotina_emergencia_in()
diogonac 0:9344dd7c7e26 498 {
diogonac 0:9344dd7c7e26 499
diogonac 1:794015d244d3 500 if(debounce2.read_ms() >= 25) {
diogonac 0:9344dd7c7e26 501
diogonac 0:9344dd7c7e26 502 motor_x = 0x00; //Não permite que pulsos sejam enviados para o motor do eixo X
diogonac 0:9344dd7c7e26 503 motor_y = 0x00; //Não permite que pulsos sejam enviados para o motor do eixo Y
diogonac 0:9344dd7c7e26 504 motor_z = 0x00; //Não permite que pulsos sejam enviados para o motor do eixo Z
diogonac 0:9344dd7c7e26 505
diogonac 5:1ee07aa85351 506
diogonac 0:9344dd7c7e26 507 contador_emergencia += 1;
diogonac 0:9344dd7c7e26 508
diogonac 0:9344dd7c7e26 509
diogonac 0:9344dd7c7e26 510 debounce2.reset();
diogonac 1:794015d244d3 511 pc.printf("contador_emergencia= %d\r\n", contador_emergencia);
diogonac 0:9344dd7c7e26 512 }
diogonac 1:794015d244d3 513
diogonac 1:794015d244d3 514
diogonac 1:794015d244d3 515 if(contador_emergencia == 1) {
diogonac 1:794015d244d3 516
diogonac 1:794015d244d3 517 recebe_arduino.printf("E1\n"); //Indica que o botão de emergência foi apertado
diogonac 1:794015d244d3 518
diogonac 5:1ee07aa85351 519 estado_referenciamento = false; //Solicita um novo referenciamento
diogonac 5:1ee07aa85351 520 estado_botao_emergencia_in = true;
diogonac 5:1ee07aa85351 521 //NVIC_SystemReset();
diogonac 5:1ee07aa85351 522
diogonac 5:1ee07aa85351 523 }
diogonac 5:1ee07aa85351 524
diogonac 5:1ee07aa85351 525 if(contador_emergencia == 2) {
diogonac 5:1ee07aa85351 526
diogonac 5:1ee07aa85351 527 NVIC_SystemReset();
diogonac 1:794015d244d3 528
diogonac 1:794015d244d3 529 }
diogonac 1:794015d244d3 530
diogonac 1:794015d244d3 531
diogonac 0:9344dd7c7e26 532 }
diogonac 0:9344dd7c7e26 533
diogonac 0:9344dd7c7e26 534 void rotina_velocidade_eixo()
diogonac 0:9344dd7c7e26 535 {
diogonac 0:9344dd7c7e26 536 //Converte a leitura do Joystick para tempo de acionamento do motor
diogonac 0:9344dd7c7e26 537
diogonac 0:9344dd7c7e26 538
diogonac 0:9344dd7c7e26 539 switch(set_eixos[0]) {
diogonac 0:9344dd7c7e26 540 case '1':
diogonac 1:794015d244d3 541 tempo_acionamento = 3180; //Desloca 1mm
diogonac 0:9344dd7c7e26 542 break;
diogonac 0:9344dd7c7e26 543 case '2':
diogonac 1:794015d244d3 544 tempo_acionamento = 15924; //Desloca 5mm
diogonac 0:9344dd7c7e26 545 break;
diogonac 0:9344dd7c7e26 546 case '3':
diogonac 1:794015d244d3 547 tempo_acionamento = 47780; //Desloca 15mm
diogonac 0:9344dd7c7e26 548 break;
diogonac 0:9344dd7c7e26 549 // default:
diogonac 0:9344dd7c7e26 550 // velocidade = 0.1;
diogonac 0:9344dd7c7e26 551 }
diogonac 0:9344dd7c7e26 552
diogonac 1:794015d244d3 553 pc.printf("tempo_acionamento= %d \r\n", tempo_acionamento);
diogonac 0:9344dd7c7e26 554 // J_XYZ = joystick.read_u16();
diogonac 0:9344dd7c7e26 555 // tempo_horario = -1*J_XYZ*0.0000028 + 0.1875;
diogonac 0:9344dd7c7e26 556 // tempo_anti_horario = J_XYZ*0.000002785 + 0.0025;
diogonac 0:9344dd7c7e26 557 }
diogonac 0:9344dd7c7e26 558
diogonac 0:9344dd7c7e26 559
diogonac 0:9344dd7c7e26 560 void rotina_deslocamento_eixo()
diogonac 0:9344dd7c7e26 561 {
diogonac 0:9344dd7c7e26 562 //Calcula os deslocamentos no eixo Z
diogonac 0:9344dd7c7e26 563
diogonac 0:9344dd7c7e26 564 deslocamento_X = (passo_fuso*pulsos_X*passo_motor)/360;
diogonac 0:9344dd7c7e26 565 deslocamento_Y = (passo_fuso*pulsos_Y*passo_motor)/360;
diogonac 0:9344dd7c7e26 566 deslocamento_Z = (passo_fuso*pulsos_Z*passo_motor)/360;
diogonac 0:9344dd7c7e26 567
diogonac 0:9344dd7c7e26 568 recebe_arduino.printf("X%3.2f\n", deslocamento_X);
diogonac 0:9344dd7c7e26 569 recebe_arduino.printf("Y%3.2f\n", deslocamento_Y);
diogonac 0:9344dd7c7e26 570 recebe_arduino.printf("Z%3.2f\n", deslocamento_Z);
diogonac 0:9344dd7c7e26 571
diogonac 0:9344dd7c7e26 572 pc.printf("X%3.2f\n", deslocamento_X);
diogonac 0:9344dd7c7e26 573 pc.printf("Y%3.2f\n", deslocamento_Y);
diogonac 0:9344dd7c7e26 574 pc.printf("Z%3.2f\n", deslocamento_Z);
diogonac 0:9344dd7c7e26 575 }
diogonac 0:9344dd7c7e26 576
diogonac 0:9344dd7c7e26 577
diogonac 6:f21b6a630acb 578 //=================================== Referenciamento X ======================================
diogonac 0:9344dd7c7e26 579
diogonac 6:f21b6a630acb 580 void referenciamento_X()
diogonac 0:9344dd7c7e26 581 {
diogonac 0:9344dd7c7e26 582
diogonac 6:f21b6a630acb 583 while(estado_referenciamento_X == false & estado_botao_emergencia_in == false & contador_SELECT_X == 1) {//W1
diogonac 0:9344dd7c7e26 584
diogonac 0:9344dd7c7e26 585 for(i = 0; i < 4; i++) {
diogonac 0:9344dd7c7e26 586 motor_x = 1 << i;
diogonac 6:f21b6a630acb 587 //motor_y = 1 << i;
diogonac 6:f21b6a630acb 588 //motor_z = 1 << i;
diogonac 6:f21b6a630acb 589 wait(0.003);
diogonac 6:f21b6a630acb 590 }
diogonac 6:f21b6a630acb 591
diogonac 6:f21b6a630acb 592 if(contador_rise_X == 1) {//if1
diogonac 6:f21b6a630acb 593
diogonac 6:f21b6a630acb 594 while(estado_referenciamento_X == false & estado_botao_emergencia_in == false & contador_rise_X == 1) {//W2
diogonac 6:f21b6a630acb 595
diogonac 6:f21b6a630acb 596 for(i = 3; i > -1; i--) {
diogonac 6:f21b6a630acb 597 motor_x = 1 << i;
diogonac 6:f21b6a630acb 598 //motor_y = 1 << i;
diogonac 6:f21b6a630acb 599 //motor_z = 1 << i;
diogonac 6:f21b6a630acb 600 wait(0.01);
diogonac 6:f21b6a630acb 601
diogonac 6:f21b6a630acb 602 }
diogonac 6:f21b6a630acb 603
diogonac 6:f21b6a630acb 604 if(contador_rise_X == 2) {//if2
diogonac 6:f21b6a630acb 605
diogonac 6:f21b6a630acb 606 while(estado_referenciamento_X == false & estado_botao_emergencia_in == false & contador_rise_X == 2) {//W3
diogonac 6:f21b6a630acb 607
diogonac 6:f21b6a630acb 608 for(i = 0; i < 4; i++) {
diogonac 6:f21b6a630acb 609 motor_x = 1 << i;
diogonac 6:f21b6a630acb 610 //motor_y = 1 << i;
diogonac 6:f21b6a630acb 611 //motor_z = 1 << i;
diogonac 6:f21b6a630acb 612 wait(0.01);
diogonac 6:f21b6a630acb 613 }
diogonac 6:f21b6a630acb 614
diogonac 6:f21b6a630acb 615 if(contador_rise_X == 3) {//if3
diogonac 6:f21b6a630acb 616
diogonac 6:f21b6a630acb 617 while(seguranca_fdc_X != 8 & estado_referenciamento_X == false & estado_botao_emergencia_in == false & contador_rise_X == 3) {//W4
diogonac 6:f21b6a630acb 618 for(i = 3; i > -1; i--) {
diogonac 6:f21b6a630acb 619 motor_x = 1 << i;
diogonac 6:f21b6a630acb 620 //motor_y = 1 << i;
diogonac 6:f21b6a630acb 621 //motor_z = 1 << i;
diogonac 6:f21b6a630acb 622 wait(0.01);
diogonac 6:f21b6a630acb 623
diogonac 6:f21b6a630acb 624 }
diogonac 6:f21b6a630acb 625 seguranca_fdc_X += 1;
diogonac 6:f21b6a630acb 626
diogonac 6:f21b6a630acb 627 }//Fecha W4
diogonac 6:f21b6a630acb 628
diogonac 6:f21b6a630acb 629 estado_referenciamento_X = true;
diogonac 6:f21b6a630acb 630
diogonac 6:f21b6a630acb 631 contador_rise_X = 0;
diogonac 6:f21b6a630acb 632 seguranca_fdc_X = 0;
diogonac 6:f21b6a630acb 633
diogonac 6:f21b6a630acb 634 deslocamento_X = 0; //Define o deslocamento linear total
diogonac 6:f21b6a630acb 635 //deslocamento_Y = 0; //Define o deslocamento linear total
diogonac 6:f21b6a630acb 636 //deslocamento_Z = 0; //Define o deslocamento linear total
diogonac 6:f21b6a630acb 637 pulsos_X = 0;
diogonac 6:f21b6a630acb 638 //pulsos_Y = 0;
diogonac 6:f21b6a630acb 639 //pulsos_Z = 0;
diogonac 6:f21b6a630acb 640 deslocamento_max_X = 100; //Define o deslocamento linear total
diogonac 6:f21b6a630acb 641 //deslocamento_max_Y = 100; //Define o deslocamento linear total
diogonac 6:f21b6a630acb 642 //deslocamento_max_Z = 100; //Define o deslocamento linear total
diogonac 6:f21b6a630acb 643 tempo_acionamento = 3180;
diogonac 6:f21b6a630acb 644 velocidade = 0.003;
diogonac 6:f21b6a630acb 645
diogonac 6:f21b6a630acb 646 rotina_deslocamento_eixo();
diogonac 6:f21b6a630acb 647
diogonac 6:f21b6a630acb 648 //recebe_arduino.printf("D\n"); //Done referenciamento
diogonac 6:f21b6a630acb 649
diogonac 6:f21b6a630acb 650 }//Fecha if3
diogonac 6:f21b6a630acb 651 }//Fecha W3
diogonac 6:f21b6a630acb 652
diogonac 6:f21b6a630acb 653 }//Fecha if2
diogonac 6:f21b6a630acb 654 }//Fecha W2
diogonac 6:f21b6a630acb 655 }//Fecha if1
diogonac 6:f21b6a630acb 656 }//Fecha W1
diogonac 6:f21b6a630acb 657 motor_x = 0x00;
diogonac 6:f21b6a630acb 658 motor_y = 0x00;
diogonac 6:f21b6a630acb 659 motor_z = 0x00;
diogonac 6:f21b6a630acb 660 }//Fecha funcao
diogonac 6:f21b6a630acb 661
diogonac 6:f21b6a630acb 662
diogonac 6:f21b6a630acb 663 void rotina_fdc_rise_X()
diogonac 6:f21b6a630acb 664 {
diogonac 6:f21b6a630acb 665 if(debounce3.read_ms() >= 50 & estado_botao_emergencia_in == false & estado_referenciamento_X == false & contador_SELECT_X == 1) {
diogonac 6:f21b6a630acb 666 contador_rise_X += 1;
diogonac 6:f21b6a630acb 667 pc.printf("contador_rise=%d\n", contador_rise_X);
diogonac 6:f21b6a630acb 668 debounce3.reset();
diogonac 6:f21b6a630acb 669 }
diogonac 6:f21b6a630acb 670 }
diogonac 6:f21b6a630acb 671
diogonac 6:f21b6a630acb 672 //=================================== Referenciamento Y ==================================================
diogonac 6:f21b6a630acb 673
diogonac 6:f21b6a630acb 674
diogonac 6:f21b6a630acb 675 void referenciamento_Y()
diogonac 6:f21b6a630acb 676 {
diogonac 6:f21b6a630acb 677
diogonac 6:f21b6a630acb 678 while(estado_referenciamento_Y == false & estado_botao_emergencia_in == false & contador_SELECT_Y == 1) {//W1
diogonac 6:f21b6a630acb 679
diogonac 6:f21b6a630acb 680 for(i = 0; i < 4; i++) {
diogonac 6:f21b6a630acb 681 //motor_x = 1 << i;
diogonac 0:9344dd7c7e26 682 motor_y = 1 << i;
diogonac 6:f21b6a630acb 683 //motor_z = 1 << i;
diogonac 6:f21b6a630acb 684 wait(0.003);
diogonac 6:f21b6a630acb 685 }
diogonac 6:f21b6a630acb 686
diogonac 6:f21b6a630acb 687 if(contador_rise_Y == 1) {//if1
diogonac 6:f21b6a630acb 688
diogonac 6:f21b6a630acb 689 while(estado_referenciamento_Y == false & estado_botao_emergencia_in == false & contador_rise_Y == 1) {//W2
diogonac 6:f21b6a630acb 690
diogonac 6:f21b6a630acb 691 for(i = 3; i > -1; i--) {
diogonac 6:f21b6a630acb 692 //motor_x = 1 << i;
diogonac 6:f21b6a630acb 693 motor_y = 1 << i;
diogonac 6:f21b6a630acb 694 //motor_z = 1 << i;
diogonac 6:f21b6a630acb 695 wait(0.01);
diogonac 6:f21b6a630acb 696
diogonac 6:f21b6a630acb 697 }
diogonac 6:f21b6a630acb 698
diogonac 6:f21b6a630acb 699 if(contador_rise_Y == 2) {//if2
diogonac 6:f21b6a630acb 700
diogonac 6:f21b6a630acb 701 while(estado_referenciamento_Y == false & estado_botao_emergencia_in == false & contador_rise_Y == 2) {//W3
diogonac 6:f21b6a630acb 702
diogonac 6:f21b6a630acb 703 for(i = 0; i < 4; i++) {
diogonac 6:f21b6a630acb 704 //motor_x = 1 << i;
diogonac 6:f21b6a630acb 705 motor_y = 1 << i;
diogonac 6:f21b6a630acb 706 //motor_z = 1 << i;
diogonac 6:f21b6a630acb 707 wait(0.01);
diogonac 6:f21b6a630acb 708 }
diogonac 6:f21b6a630acb 709
diogonac 6:f21b6a630acb 710 if(contador_rise_Y == 3) {//if3
diogonac 6:f21b6a630acb 711
diogonac 6:f21b6a630acb 712 while(seguranca_fdc_Y != 8 & estado_referenciamento_Y == false & estado_botao_emergencia_in == false & contador_rise_Y == 3) {//W4
diogonac 6:f21b6a630acb 713 for(i = 3; i > -1; i--) {
diogonac 6:f21b6a630acb 714 //motor_x = 1 << i;
diogonac 6:f21b6a630acb 715 motor_y = 1 << i;
diogonac 6:f21b6a630acb 716 //motor_z = 1 << i;
diogonac 6:f21b6a630acb 717 wait(0.01);
diogonac 6:f21b6a630acb 718
diogonac 6:f21b6a630acb 719 }
diogonac 6:f21b6a630acb 720 seguranca_fdc_Y += 1;
diogonac 6:f21b6a630acb 721
diogonac 6:f21b6a630acb 722 }//Fecha W4
diogonac 6:f21b6a630acb 723
diogonac 6:f21b6a630acb 724 estado_referenciamento_Y = true;
diogonac 6:f21b6a630acb 725
diogonac 6:f21b6a630acb 726 contador_rise_Y = 0;
diogonac 6:f21b6a630acb 727 seguranca_fdc_Y = 0;
diogonac 6:f21b6a630acb 728
diogonac 6:f21b6a630acb 729 //deslocamento_X = 0; //Define o deslocamento linear total
diogonac 6:f21b6a630acb 730 deslocamento_Y = 0; //Define o deslocamento linear total
diogonac 6:f21b6a630acb 731 //deslocamento_Z = 0; //Define o deslocamento linear total
diogonac 6:f21b6a630acb 732 //pulsos_X = 0;
diogonac 6:f21b6a630acb 733 pulsos_Y = 0;
diogonac 6:f21b6a630acb 734 //pulsos_Z = 0;
diogonac 6:f21b6a630acb 735 //deslocamento_max_X = 100; //Define o deslocamento linear total
diogonac 6:f21b6a630acb 736 deslocamento_max_Y = 100; //Define o deslocamento linear total
diogonac 6:f21b6a630acb 737 //deslocamento_max_Z = 100; //Define o deslocamento linear total
diogonac 6:f21b6a630acb 738 tempo_acionamento = 3180;
diogonac 6:f21b6a630acb 739 velocidade = 0.003;
diogonac 6:f21b6a630acb 740
diogonac 6:f21b6a630acb 741 rotina_deslocamento_eixo();
diogonac 6:f21b6a630acb 742
diogonac 6:f21b6a630acb 743 //recebe_arduino.printf("D\n"); //Done referenciamento
diogonac 6:f21b6a630acb 744
diogonac 6:f21b6a630acb 745 }//Fecha if3
diogonac 6:f21b6a630acb 746 }//Fecha W3
diogonac 6:f21b6a630acb 747
diogonac 6:f21b6a630acb 748 }//Fecha if2
diogonac 6:f21b6a630acb 749 }//Fecha W2
diogonac 6:f21b6a630acb 750 }//Fecha if1
diogonac 6:f21b6a630acb 751 }//Fecha W1
diogonac 6:f21b6a630acb 752 motor_x = 0x00;
diogonac 6:f21b6a630acb 753 motor_y = 0x00;
diogonac 6:f21b6a630acb 754 motor_z = 0x00;
diogonac 6:f21b6a630acb 755 }//Fecha funcao
diogonac 6:f21b6a630acb 756
diogonac 6:f21b6a630acb 757
diogonac 6:f21b6a630acb 758 void rotina_fdc_rise_Y()
diogonac 6:f21b6a630acb 759 {
diogonac 6:f21b6a630acb 760 if(debounce3.read_ms() >= 50 & estado_botao_emergencia_in == false & estado_referenciamento_Y == false & contador_SELECT_Y == 1) {
diogonac 6:f21b6a630acb 761 contador_rise_Y += 1;
diogonac 6:f21b6a630acb 762 pc.printf("contador_rise=%d\n", contador_rise_Y);
diogonac 6:f21b6a630acb 763 debounce3.reset();
diogonac 6:f21b6a630acb 764 }
diogonac 6:f21b6a630acb 765 }
diogonac 6:f21b6a630acb 766
diogonac 6:f21b6a630acb 767 //========================================== Referenciamento Z ====================================
diogonac 6:f21b6a630acb 768
diogonac 6:f21b6a630acb 769
diogonac 6:f21b6a630acb 770 void referenciamento_Z()
diogonac 6:f21b6a630acb 771 {
diogonac 6:f21b6a630acb 772
diogonac 6:f21b6a630acb 773 while(estado_referenciamento_Z == false & estado_botao_emergencia_in == false & contador_SELECT_Z == 1) {//W1
diogonac 6:f21b6a630acb 774
diogonac 6:f21b6a630acb 775 for(i = 0; i < 4; i++) {
diogonac 6:f21b6a630acb 776 //motor_x = 1 << i;
diogonac 6:f21b6a630acb 777 //motor_y = 1 << i;
diogonac 0:9344dd7c7e26 778 motor_z = 1 << i;
diogonac 0:9344dd7c7e26 779 wait(0.003);
diogonac 0:9344dd7c7e26 780 }
diogonac 0:9344dd7c7e26 781
diogonac 6:f21b6a630acb 782 if(contador_rise_Z == 1) {//if1
diogonac 0:9344dd7c7e26 783
diogonac 6:f21b6a630acb 784 while(estado_referenciamento_Z == false & estado_botao_emergencia_in == false & contador_rise_Z == 1) {//W2
diogonac 0:9344dd7c7e26 785
diogonac 0:9344dd7c7e26 786 for(i = 3; i > -1; i--) {
diogonac 6:f21b6a630acb 787 //motor_x = 1 << i;
diogonac 6:f21b6a630acb 788 //motor_y = 1 << i;
diogonac 0:9344dd7c7e26 789 motor_z = 1 << i;
diogonac 6:f21b6a630acb 790 wait(0.01);
diogonac 0:9344dd7c7e26 791
diogonac 0:9344dd7c7e26 792 }
diogonac 0:9344dd7c7e26 793
diogonac 6:f21b6a630acb 794 if(contador_rise_Z == 2) {//if2
diogonac 0:9344dd7c7e26 795
diogonac 6:f21b6a630acb 796 while(estado_referenciamento_Z == false & estado_botao_emergencia_in == false & contador_rise_Z == 2) {//W3
diogonac 0:9344dd7c7e26 797
diogonac 0:9344dd7c7e26 798 for(i = 0; i < 4; i++) {
diogonac 6:f21b6a630acb 799 //motor_x = 1 << i;
diogonac 6:f21b6a630acb 800 //motor_y = 1 << i;
diogonac 0:9344dd7c7e26 801 motor_z = 1 << i;
diogonac 6:f21b6a630acb 802 wait(0.01);
diogonac 0:9344dd7c7e26 803 }
diogonac 0:9344dd7c7e26 804
diogonac 6:f21b6a630acb 805 if(contador_rise_Z == 3) {//if3
diogonac 0:9344dd7c7e26 806
diogonac 6:f21b6a630acb 807 while(seguranca_fdc_Z != 8 & estado_referenciamento_Z == false & estado_botao_emergencia_in == false & contador_rise_Z == 3) {//W4
diogonac 0:9344dd7c7e26 808 for(i = 3; i > -1; i--) {
diogonac 6:f21b6a630acb 809 //motor_x = 1 << i;
diogonac 6:f21b6a630acb 810 //motor_y = 1 << i;
diogonac 0:9344dd7c7e26 811 motor_z = 1 << i;
diogonac 6:f21b6a630acb 812 wait(0.01);
diogonac 0:9344dd7c7e26 813
diogonac 0:9344dd7c7e26 814 }
diogonac 6:f21b6a630acb 815 seguranca_fdc_Z += 1;
diogonac 0:9344dd7c7e26 816
diogonac 0:9344dd7c7e26 817 }//Fecha W4
diogonac 0:9344dd7c7e26 818
diogonac 6:f21b6a630acb 819 estado_referenciamento_Z = true;
diogonac 0:9344dd7c7e26 820 estado_referenciamento = true;
diogonac 6:f21b6a630acb 821
diogonac 6:f21b6a630acb 822 contador_rise_Z = 0;
diogonac 6:f21b6a630acb 823 seguranca_fdc_Z = 0;
diogonac 0:9344dd7c7e26 824
diogonac 6:f21b6a630acb 825 //deslocamento_X = 0; //Define o deslocamento linear total
diogonac 6:f21b6a630acb 826 //deslocamento_Y = 0; //Define o deslocamento linear total
diogonac 0:9344dd7c7e26 827 deslocamento_Z = 0; //Define o deslocamento linear total
diogonac 6:f21b6a630acb 828 //pulsos_X = 0;
diogonac 6:f21b6a630acb 829 //pulsos_Y = 0;
diogonac 0:9344dd7c7e26 830 pulsos_Z = 0;
diogonac 6:f21b6a630acb 831 //deslocamento_max_X = 100; //Define o deslocamento linear total
diogonac 6:f21b6a630acb 832 //deslocamento_max_Y = 100; //Define o deslocamento linear total
diogonac 1:794015d244d3 833 deslocamento_max_Z = 100; //Define o deslocamento linear total
diogonac 1:794015d244d3 834 tempo_acionamento = 3180;
diogonac 1:794015d244d3 835 velocidade = 0.003;
diogonac 1:794015d244d3 836
diogonac 0:9344dd7c7e26 837 rotina_deslocamento_eixo();
diogonac 0:9344dd7c7e26 838
diogonac 0:9344dd7c7e26 839 recebe_arduino.printf("D\n"); //Done referenciamento
diogonac 0:9344dd7c7e26 840
diogonac 0:9344dd7c7e26 841 }//Fecha if3
diogonac 0:9344dd7c7e26 842 }//Fecha W3
diogonac 0:9344dd7c7e26 843
diogonac 0:9344dd7c7e26 844 }//Fecha if2
diogonac 0:9344dd7c7e26 845 }//Fecha W2
diogonac 0:9344dd7c7e26 846 }//Fecha if1
diogonac 0:9344dd7c7e26 847 }//Fecha W1
diogonac 0:9344dd7c7e26 848 motor_x = 0x00;
diogonac 0:9344dd7c7e26 849 motor_y = 0x00;
diogonac 0:9344dd7c7e26 850 motor_z = 0x00;
diogonac 0:9344dd7c7e26 851 }//Fecha funcao
diogonac 0:9344dd7c7e26 852
diogonac 0:9344dd7c7e26 853
diogonac 6:f21b6a630acb 854 void rotina_fdc_rise_Z()
diogonac 0:9344dd7c7e26 855 {
diogonac 6:f21b6a630acb 856 if(debounce3.read_ms() >= 50 & estado_botao_emergencia_in == false & estado_referenciamento_Z == false & contador_SELECT_Z == 1) {
diogonac 6:f21b6a630acb 857 contador_rise_Z += 1;
diogonac 6:f21b6a630acb 858 pc.printf("contador_rise=%d\n", contador_rise_Z);
diogonac 0:9344dd7c7e26 859 debounce3.reset();
diogonac 0:9344dd7c7e26 860 }
diogonac 0:9344dd7c7e26 861 }
diogonac 0:9344dd7c7e26 862
diogonac 6:f21b6a630acb 863 //=======================================================================================
diogonac 6:f21b6a630acb 864
diogonac 6:f21b6a630acb 865
diogonac 0:9344dd7c7e26 866 void rotina_JOG()
diogonac 0:9344dd7c7e26 867 {
diogonac 0:9344dd7c7e26 868 if(sizeof(set_eixos) == 0) {
diogonac 0:9344dd7c7e26 869 motor_x = 0x00;
diogonac 0:9344dd7c7e26 870 motor_y = 0x00;
diogonac 0:9344dd7c7e26 871 motor_z = 0x00;
diogonac 0:9344dd7c7e26 872 }
diogonac 0:9344dd7c7e26 873
diogonac 0:9344dd7c7e26 874 else {
diogonac 0:9344dd7c7e26 875 //============== Movimenta Eixo Y ======================================
diogonac 0:9344dd7c7e26 876
diogonac 1:794015d244d3 877 if (set_eixos[0] == '-' & set_eixos[1] == 'Y') {
diogonac 1:794015d244d3 878 tempo_motor.start();
diogonac 5:1ee07aa85351 879 while(tempo_motor.read_ms() <= tempo_acionamento & deslocamento_Y > 0 & pulsos_Y >= 0 & estado_botao_emergencia_in == false) {
diogonac 0:9344dd7c7e26 880 for(i = 0; i < 4; i++) {
diogonac 0:9344dd7c7e26 881 motor_y = 1 << i;
diogonac 0:9344dd7c7e26 882 pulsos_Y-=1;
diogonac 0:9344dd7c7e26 883 wait(velocidade);
diogonac 0:9344dd7c7e26 884 rotina_velocidade_eixo();
diogonac 0:9344dd7c7e26 885 rotina_deslocamento_eixo();
diogonac 0:9344dd7c7e26 886
diogonac 0:9344dd7c7e26 887 }
diogonac 0:9344dd7c7e26 888 }
diogonac 1:794015d244d3 889 tempo_motor.reset();
diogonac 1:794015d244d3 890 tempo_motor.stop();
diogonac 0:9344dd7c7e26 891 }
diogonac 0:9344dd7c7e26 892
diogonac 1:794015d244d3 893 if(set_eixos[0] == '+' & set_eixos[1] == 'Y') {
diogonac 1:794015d244d3 894 tempo_motor.start();
diogonac 5:1ee07aa85351 895 while(tempo_motor.read_ms() <= tempo_acionamento & deslocamento_max_Y > deslocamento_Y & pulsos_Y >= 0 & estado_botao_emergencia_in == false) {
diogonac 1:794015d244d3 896 for(i = 3; i > -1; i--) {
diogonac 1:794015d244d3 897 motor_y = 1 << i;
diogonac 1:794015d244d3 898 pulsos_Y+=1;
diogonac 1:794015d244d3 899 wait(velocidade);
diogonac 1:794015d244d3 900 rotina_velocidade_eixo();
diogonac 1:794015d244d3 901 rotina_deslocamento_eixo();
diogonac 0:9344dd7c7e26 902
diogonac 1:794015d244d3 903 }
diogonac 0:9344dd7c7e26 904 }
diogonac 1:794015d244d3 905 tempo_motor.reset();
diogonac 1:794015d244d3 906 tempo_motor.stop();
diogonac 0:9344dd7c7e26 907 }
diogonac 0:9344dd7c7e26 908
diogonac 0:9344dd7c7e26 909 //============== Movimenta Eixo X ======================================
diogonac 0:9344dd7c7e26 910
diogonac 0:9344dd7c7e26 911 if (set_eixos[0] == '-' & set_eixos[1] == 'X') {
diogonac 0:9344dd7c7e26 912 tempo_motor.start();
diogonac 5:1ee07aa85351 913 while(tempo_motor.read_ms() <= tempo_acionamento & deslocamento_X > 0 & pulsos_X >= 0 & estado_botao_emergencia_in == false) {
diogonac 0:9344dd7c7e26 914 for(i = 0; i < 4; i++) {
diogonac 0:9344dd7c7e26 915 motor_x = 1 << i;
diogonac 0:9344dd7c7e26 916 pulsos_X-=1;
diogonac 0:9344dd7c7e26 917 wait(velocidade);
diogonac 0:9344dd7c7e26 918 rotina_velocidade_eixo();
diogonac 0:9344dd7c7e26 919 rotina_deslocamento_eixo();
diogonac 0:9344dd7c7e26 920
diogonac 0:9344dd7c7e26 921 }
diogonac 0:9344dd7c7e26 922 }
diogonac 0:9344dd7c7e26 923 tempo_motor.reset();
diogonac 0:9344dd7c7e26 924 tempo_motor.stop();
diogonac 0:9344dd7c7e26 925 }
diogonac 0:9344dd7c7e26 926
diogonac 0:9344dd7c7e26 927 if(set_eixos[0] == '+' & set_eixos[1] == 'X') {
diogonac 0:9344dd7c7e26 928 tempo_motor.start();
diogonac 5:1ee07aa85351 929 while(tempo_motor.read_ms() <= tempo_acionamento & deslocamento_max_X > deslocamento_X & pulsos_X >= 0 & estado_botao_emergencia_in == false) {
diogonac 0:9344dd7c7e26 930 for(i = 3; i > -1; i--) {
diogonac 0:9344dd7c7e26 931 motor_x = 1 << i;
diogonac 0:9344dd7c7e26 932 pulsos_X+=1;
diogonac 0:9344dd7c7e26 933 wait(velocidade);
diogonac 0:9344dd7c7e26 934 rotina_velocidade_eixo();
diogonac 0:9344dd7c7e26 935 rotina_deslocamento_eixo();
diogonac 0:9344dd7c7e26 936
diogonac 0:9344dd7c7e26 937 }
diogonac 0:9344dd7c7e26 938 }
diogonac 0:9344dd7c7e26 939 tempo_motor.reset();
diogonac 0:9344dd7c7e26 940 tempo_motor.stop();
diogonac 0:9344dd7c7e26 941 }
diogonac 0:9344dd7c7e26 942
diogonac 0:9344dd7c7e26 943
diogonac 0:9344dd7c7e26 944 //============== Movimenta Eixo Z ======================================
diogonac 0:9344dd7c7e26 945
diogonac 0:9344dd7c7e26 946 if (set_eixos[0] == '-' & set_eixos[1] == 'Z') {
diogonac 0:9344dd7c7e26 947 tempo_motor.start();
diogonac 5:1ee07aa85351 948 while(tempo_motor.read_ms() <= tempo_acionamento & deslocamento_Z > 0 & pulsos_Z >= 0 & estado_botao_emergencia_in == false) {
diogonac 0:9344dd7c7e26 949 for(i = 0; i < 4; i++) {
diogonac 0:9344dd7c7e26 950 motor_z = 1 << i;
diogonac 0:9344dd7c7e26 951 pulsos_Z-=1;
diogonac 0:9344dd7c7e26 952 wait(velocidade);
diogonac 0:9344dd7c7e26 953 rotina_velocidade_eixo();
diogonac 0:9344dd7c7e26 954 rotina_deslocamento_eixo();
diogonac 0:9344dd7c7e26 955
diogonac 0:9344dd7c7e26 956 }
diogonac 0:9344dd7c7e26 957 }
diogonac 0:9344dd7c7e26 958 tempo_motor.reset();
diogonac 0:9344dd7c7e26 959 tempo_motor.stop();
diogonac 0:9344dd7c7e26 960 }
diogonac 0:9344dd7c7e26 961
diogonac 0:9344dd7c7e26 962 if(set_eixos[0] == '+' & set_eixos[1] == 'Z') {
diogonac 0:9344dd7c7e26 963 tempo_motor.start();
diogonac 5:1ee07aa85351 964 while(tempo_motor.read_ms() <= tempo_acionamento & deslocamento_max_Z > deslocamento_Z & pulsos_Z >= 0 & estado_botao_emergencia_in == false) {
diogonac 0:9344dd7c7e26 965 for(i = 3; i > -1; i--) {
diogonac 0:9344dd7c7e26 966 motor_z = 1 << i;
diogonac 0:9344dd7c7e26 967 pulsos_Z+=1;
diogonac 0:9344dd7c7e26 968 wait(velocidade);
diogonac 0:9344dd7c7e26 969 rotina_velocidade_eixo();
diogonac 0:9344dd7c7e26 970 rotina_deslocamento_eixo();
diogonac 0:9344dd7c7e26 971
diogonac 0:9344dd7c7e26 972 }
diogonac 0:9344dd7c7e26 973 }
diogonac 0:9344dd7c7e26 974 tempo_motor.reset();
diogonac 0:9344dd7c7e26 975 tempo_motor.stop();
diogonac 0:9344dd7c7e26 976 }
diogonac 0:9344dd7c7e26 977
diogonac 0:9344dd7c7e26 978 motor_x = 0x00;
diogonac 0:9344dd7c7e26 979 motor_y = 0x00;
diogonac 0:9344dd7c7e26 980 motor_z = 0x00;
diogonac 0:9344dd7c7e26 981 }
diogonac 0:9344dd7c7e26 982 }
diogonac 0:9344dd7c7e26 983
diogonac 5:1ee07aa85351 984 void rotina_solta()
diogonac 3:a2de739d2802 985 {
diogonac 3:a2de739d2802 986 //============== Movimenta Eixo Y ======================================
diogonac 3:a2de739d2802 987 rotina_deslocamento_eixo();
diogonac 3:a2de739d2802 988
diogonac 5:1ee07aa85351 989 for(int a = 3; a < (3*(tubos_usados + 1)); a=a+3) {
diogonac 5:1ee07aa85351 990 //for(int b = 0; b < tubos_usados ; b++) { //b é igual a quantidade depositada
diogonac 5:1ee07aa85351 991 quantidade_depositada = 0;
diogonac 5:1ee07aa85351 992 tubo_atual++;
diogonac 3:a2de739d2802 993
diogonac 5:1ee07aa85351 994 while(quantidades[tubo_atual] > quantidade_depositada & estado_botao_emergencia_in == false) {
diogonac 7:929727a280f3 995
diogonac 7:929727a280f3 996 //============== Movimenta Z para posição de segurança =================
diogonac 7:929727a280f3 997
diogonac 7:929727a280f3 998 if(Z_seguranca >= deslocamento_Z) {
diogonac 7:929727a280f3 999
diogonac 7:929727a280f3 1000 while(deslocamento_Z < Z_seguranca & deslocamento_max_Z > deslocamento_Z & pulsos_Z >= 0 & estado_botao_emergencia_in == false) {
diogonac 7:929727a280f3 1001 for(i = 3; i > -1; i--) {
diogonac 7:929727a280f3 1002 motor_z = 1 << i;
diogonac 7:929727a280f3 1003 pulsos_Z+=1;
diogonac 7:929727a280f3 1004 wait(velocidade);
diogonac 7:929727a280f3 1005 rotina_velocidade_eixo();
diogonac 7:929727a280f3 1006 rotina_deslocamento_eixo();
diogonac 7:929727a280f3 1007
diogonac 7:929727a280f3 1008 }
diogonac 7:929727a280f3 1009 pc.printf("Z= %f \r\n", deslocamento_Z);
diogonac 7:929727a280f3 1010 }
diogonac 7:929727a280f3 1011 pc.printf("Z seguro atingido \r\n");
diogonac 7:929727a280f3 1012 }
diogonac 7:929727a280f3 1013
diogonac 7:929727a280f3 1014
diogonac 7:929727a280f3 1015
diogonac 5:1ee07aa85351 1016 if (posicoes[a+1] <= deslocamento_Y) {
diogonac 5:1ee07aa85351 1017 while(deslocamento_Y > posicoes[a+1] & deslocamento_Y >= 0 & pulsos_Y >= 0 & estado_botao_emergencia_in == false) {
diogonac 5:1ee07aa85351 1018 for(i = 0; i < 4; i++) {
diogonac 5:1ee07aa85351 1019 motor_y = 1 << i;
diogonac 5:1ee07aa85351 1020 pulsos_Y-=1;
diogonac 5:1ee07aa85351 1021 wait(velocidade);
diogonac 5:1ee07aa85351 1022 rotina_velocidade_eixo();
diogonac 5:1ee07aa85351 1023 rotina_deslocamento_eixo();
diogonac 4:e905261df87f 1024
diogonac 5:1ee07aa85351 1025 }
diogonac 5:1ee07aa85351 1026 pc.printf("Y= %f \r\n", deslocamento_Y);
diogonac 4:e905261df87f 1027 }
diogonac 4:e905261df87f 1028
diogonac 3:a2de739d2802 1029
diogonac 5:1ee07aa85351 1030 } else motor_y = 0x00;
diogonac 4:e905261df87f 1031
diogonac 5:1ee07aa85351 1032 if(posicoes[a+1] >= deslocamento_Y) {
diogonac 3:a2de739d2802 1033
diogonac 5:1ee07aa85351 1034 while(deslocamento_Y < posicoes[a+1] & deslocamento_max_Y >= deslocamento_Y & pulsos_Y >= 0 & estado_botao_emergencia_in == false) {
diogonac 5:1ee07aa85351 1035 for(i = 3; i > -1; i--) {
diogonac 5:1ee07aa85351 1036 motor_y = 1 << i;
diogonac 5:1ee07aa85351 1037 pulsos_Y+=1;
diogonac 5:1ee07aa85351 1038 wait(velocidade);
diogonac 5:1ee07aa85351 1039 rotina_velocidade_eixo();
diogonac 5:1ee07aa85351 1040 rotina_deslocamento_eixo();
diogonac 3:a2de739d2802 1041
diogonac 5:1ee07aa85351 1042 }
diogonac 5:1ee07aa85351 1043 pc.printf("Y= %f \r\n", deslocamento_Y);
diogonac 4:e905261df87f 1044 }
diogonac 4:e905261df87f 1045
diogonac 5:1ee07aa85351 1046 } else motor_y = 0x00;
diogonac 3:a2de739d2802 1047
diogonac 3:a2de739d2802 1048 //============== Movimenta Eixo X ======================================
diogonac 3:a2de739d2802 1049
diogonac 5:1ee07aa85351 1050 if (posicoes[a] <= deslocamento_X) {
diogonac 3:a2de739d2802 1051
diogonac 5:1ee07aa85351 1052 while(deslocamento_X > posicoes[a] & deslocamento_X >= 0 & pulsos_X >= 0 & estado_botao_emergencia_in == false) {
diogonac 5:1ee07aa85351 1053 for(i = 0; i < 4; i++) {
diogonac 5:1ee07aa85351 1054 motor_x = 1 << i;
diogonac 5:1ee07aa85351 1055 pulsos_X-=1;
diogonac 5:1ee07aa85351 1056 wait(velocidade);
diogonac 5:1ee07aa85351 1057 rotina_velocidade_eixo();
diogonac 5:1ee07aa85351 1058 rotina_deslocamento_eixo();
diogonac 4:e905261df87f 1059
diogonac 5:1ee07aa85351 1060 }
diogonac 5:1ee07aa85351 1061 pc.printf("X= %f \r\n", deslocamento_X);
diogonac 4:e905261df87f 1062 }
diogonac 4:e905261df87f 1063
diogonac 5:1ee07aa85351 1064 } else motor_x = 0x00;
diogonac 3:a2de739d2802 1065
diogonac 5:1ee07aa85351 1066 if(posicoes[a] >= deslocamento_X) {
diogonac 3:a2de739d2802 1067
diogonac 5:1ee07aa85351 1068 while(deslocamento_X < posicoes[a] & deslocamento_max_X > deslocamento_X & pulsos_X >= 0 & estado_botao_emergencia_in == false) {
diogonac 5:1ee07aa85351 1069 for(i = 3; i > -1; i--) {
diogonac 5:1ee07aa85351 1070 motor_x = 1 << i;
diogonac 5:1ee07aa85351 1071 pulsos_X+=1;
diogonac 5:1ee07aa85351 1072 wait(velocidade);
diogonac 5:1ee07aa85351 1073 rotina_velocidade_eixo();
diogonac 5:1ee07aa85351 1074 rotina_deslocamento_eixo();
diogonac 4:e905261df87f 1075
diogonac 5:1ee07aa85351 1076 }
diogonac 5:1ee07aa85351 1077 pc.printf("X= %f \r\n", deslocamento_X);
diogonac 4:e905261df87f 1078 }
diogonac 4:e905261df87f 1079
diogonac 5:1ee07aa85351 1080 } else motor_x = 0x00;
diogonac 3:a2de739d2802 1081
diogonac 3:a2de739d2802 1082
diogonac 3:a2de739d2802 1083 //============== Movimenta Eixo Z ======================================
diogonac 3:a2de739d2802 1084
diogonac 5:1ee07aa85351 1085 if (posicoes[a+2] <= deslocamento_Z) {
diogonac 5:1ee07aa85351 1086
diogonac 5:1ee07aa85351 1087 while(deslocamento_Z > posicoes[a+2] & deslocamento_Z > 0 & pulsos_Z >= 0 & estado_botao_emergencia_in == false) {
diogonac 5:1ee07aa85351 1088 for(i = 0; i < 4; i++) {
diogonac 5:1ee07aa85351 1089 motor_z = 1 << i;
diogonac 5:1ee07aa85351 1090 pulsos_Z-=1;
diogonac 5:1ee07aa85351 1091 wait(velocidade);
diogonac 5:1ee07aa85351 1092 rotina_velocidade_eixo();
diogonac 5:1ee07aa85351 1093 rotina_deslocamento_eixo();
diogonac 5:1ee07aa85351 1094
diogonac 5:1ee07aa85351 1095 }
diogonac 5:1ee07aa85351 1096 pc.printf("Z= %f \r\n", deslocamento_Z);
diogonac 5:1ee07aa85351 1097 }
diogonac 5:1ee07aa85351 1098
diogonac 5:1ee07aa85351 1099 } else motor_z = 0x00;
diogonac 5:1ee07aa85351 1100
diogonac 5:1ee07aa85351 1101 if(posicoes[a+2] >= deslocamento_Z) {
diogonac 5:1ee07aa85351 1102
diogonac 5:1ee07aa85351 1103 while(deslocamento_Z < posicoes[a+2] & deslocamento_max_Z > deslocamento_Z & pulsos_Z >= 0 & estado_botao_emergencia_in == false) {
diogonac 5:1ee07aa85351 1104 for(i = 3; i > -1; i--) {
diogonac 5:1ee07aa85351 1105 motor_z = 1 << i;
diogonac 5:1ee07aa85351 1106 pulsos_Z+=1;
diogonac 5:1ee07aa85351 1107 wait(velocidade);
diogonac 5:1ee07aa85351 1108 rotina_velocidade_eixo();
diogonac 5:1ee07aa85351 1109 rotina_deslocamento_eixo();
diogonac 5:1ee07aa85351 1110
diogonac 5:1ee07aa85351 1111 }
diogonac 5:1ee07aa85351 1112 pc.printf("Z= %f \r\n", deslocamento_Z);
diogonac 5:1ee07aa85351 1113 }
diogonac 5:1ee07aa85351 1114
diogonac 5:1ee07aa85351 1115 } else motor_z = 0x00;
diogonac 5:1ee07aa85351 1116
diogonac 5:1ee07aa85351 1117 motor_x = 0x00;
diogonac 5:1ee07aa85351 1118 motor_y = 0x00;
diogonac 5:1ee07aa85351 1119 motor_z = 0x00;
diogonac 3:a2de739d2802 1120
diogonac 5:1ee07aa85351 1121 rotina_aciona_pipeta();
diogonac 5:1ee07aa85351 1122 rotina_pega();
diogonac 5:1ee07aa85351 1123 rotina_aciona_pipeta();
diogonac 5:1ee07aa85351 1124 quantidade_depositada++;
diogonac 5:1ee07aa85351 1125 pc.printf("quantidade_depositada= %d \r\n", quantidade_depositada);
diogonac 5:1ee07aa85351 1126 }
diogonac 5:1ee07aa85351 1127 }
diogonac 5:1ee07aa85351 1128 //}
diogonac 5:1ee07aa85351 1129 }
diogonac 5:1ee07aa85351 1130
diogonac 5:1ee07aa85351 1131
diogonac 5:1ee07aa85351 1132 void rotina_pega()
diogonac 5:1ee07aa85351 1133 {
diogonac 7:929727a280f3 1134
diogonac 7:929727a280f3 1135 //============== Movimenta Z para posição de segurança =================
diogonac 7:929727a280f3 1136
diogonac 7:929727a280f3 1137 if(Z_seguranca >= deslocamento_Z) {
diogonac 7:929727a280f3 1138
diogonac 7:929727a280f3 1139 while(deslocamento_Z < Z_seguranca & deslocamento_max_Z > deslocamento_Z & pulsos_Z >= 0 & estado_botao_emergencia_in == false) {
diogonac 7:929727a280f3 1140 for(i = 3; i > -1; i--) {
diogonac 7:929727a280f3 1141 motor_z = 1 << i;
diogonac 7:929727a280f3 1142 pulsos_Z+=1;
diogonac 7:929727a280f3 1143 wait(velocidade);
diogonac 7:929727a280f3 1144 rotina_velocidade_eixo();
diogonac 7:929727a280f3 1145 rotina_deslocamento_eixo();
diogonac 7:929727a280f3 1146
diogonac 7:929727a280f3 1147 }
diogonac 7:929727a280f3 1148 pc.printf("Z= %f \r\n", deslocamento_Z);
diogonac 7:929727a280f3 1149 }
diogonac 7:929727a280f3 1150 pc.printf("Z seguro atingido\r\n");
diogonac 7:929727a280f3 1151 }
diogonac 7:929727a280f3 1152
diogonac 5:1ee07aa85351 1153 //============== Movimenta Eixo Y ======================================
diogonac 5:1ee07aa85351 1154 rotina_deslocamento_eixo();
diogonac 4:e905261df87f 1155
diogonac 5:1ee07aa85351 1156 if (posicoes[1] <= deslocamento_Y) {
diogonac 5:1ee07aa85351 1157 while(deslocamento_Y > posicoes[1] & deslocamento_Y >= 0 & pulsos_Y >= 0 & estado_botao_emergencia_in == false) {
diogonac 5:1ee07aa85351 1158 for(i = 0; i < 4; i++) {
diogonac 5:1ee07aa85351 1159 motor_y = 1 << i;
diogonac 5:1ee07aa85351 1160 pulsos_Y-=1;
diogonac 5:1ee07aa85351 1161 wait(velocidade);
diogonac 5:1ee07aa85351 1162 rotina_velocidade_eixo();
diogonac 5:1ee07aa85351 1163 rotina_deslocamento_eixo();
diogonac 5:1ee07aa85351 1164
diogonac 3:a2de739d2802 1165 }
diogonac 5:1ee07aa85351 1166 pc.printf("Y= %f \r\n", deslocamento_Y);
diogonac 5:1ee07aa85351 1167 }
diogonac 4:e905261df87f 1168
diogonac 5:1ee07aa85351 1169
diogonac 5:1ee07aa85351 1170 } else motor_y = 0x00;
diogonac 5:1ee07aa85351 1171
diogonac 5:1ee07aa85351 1172 if(posicoes[1] >= deslocamento_Y) {
diogonac 4:e905261df87f 1173
diogonac 5:1ee07aa85351 1174 while(deslocamento_Y < posicoes[1] & deslocamento_max_Y >= deslocamento_Y & pulsos_Y >= 0 & estado_botao_emergencia_in == false) {
diogonac 5:1ee07aa85351 1175 for(i = 3; i > -1; i--) {
diogonac 5:1ee07aa85351 1176 motor_y = 1 << i;
diogonac 5:1ee07aa85351 1177 pulsos_Y+=1;
diogonac 5:1ee07aa85351 1178 wait(velocidade);
diogonac 5:1ee07aa85351 1179 rotina_velocidade_eixo();
diogonac 5:1ee07aa85351 1180 rotina_deslocamento_eixo();
diogonac 3:a2de739d2802 1181
diogonac 5:1ee07aa85351 1182 }
diogonac 5:1ee07aa85351 1183 pc.printf("Y= %f \r\n", deslocamento_Y);
diogonac 5:1ee07aa85351 1184 }
diogonac 5:1ee07aa85351 1185
diogonac 5:1ee07aa85351 1186 } else motor_y = 0x00;
diogonac 5:1ee07aa85351 1187
diogonac 5:1ee07aa85351 1188 //============== Movimenta Eixo X ======================================
diogonac 5:1ee07aa85351 1189
diogonac 5:1ee07aa85351 1190 if (posicoes[0] <= deslocamento_X) {
diogonac 5:1ee07aa85351 1191
diogonac 5:1ee07aa85351 1192 while(deslocamento_X > posicoes[0] & deslocamento_X >= 0 & pulsos_X >= 0 & estado_botao_emergencia_in == false) {
diogonac 5:1ee07aa85351 1193 for(i = 0; i < 4; i++) {
diogonac 5:1ee07aa85351 1194 motor_x = 1 << i;
diogonac 5:1ee07aa85351 1195 pulsos_X-=1;
diogonac 5:1ee07aa85351 1196 wait(velocidade);
diogonac 5:1ee07aa85351 1197 rotina_velocidade_eixo();
diogonac 5:1ee07aa85351 1198 rotina_deslocamento_eixo();
diogonac 5:1ee07aa85351 1199
diogonac 5:1ee07aa85351 1200 }
diogonac 5:1ee07aa85351 1201 pc.printf("X= %f \r\n", deslocamento_X);
diogonac 5:1ee07aa85351 1202 }
diogonac 5:1ee07aa85351 1203
diogonac 5:1ee07aa85351 1204 } else motor_x = 0x00;
diogonac 5:1ee07aa85351 1205
diogonac 5:1ee07aa85351 1206 if(posicoes[0] >= deslocamento_X) {
diogonac 5:1ee07aa85351 1207
diogonac 5:1ee07aa85351 1208 while(deslocamento_X < posicoes[0] & deslocamento_max_X > deslocamento_X & pulsos_X >= 0 & estado_botao_emergencia_in == false) {
diogonac 5:1ee07aa85351 1209 for(i = 3; i > -1; i--) {
diogonac 5:1ee07aa85351 1210 motor_x = 1 << i;
diogonac 5:1ee07aa85351 1211 pulsos_X+=1;
diogonac 5:1ee07aa85351 1212 wait(velocidade);
diogonac 5:1ee07aa85351 1213 rotina_velocidade_eixo();
diogonac 5:1ee07aa85351 1214 rotina_deslocamento_eixo();
diogonac 5:1ee07aa85351 1215
diogonac 5:1ee07aa85351 1216 }
diogonac 5:1ee07aa85351 1217 pc.printf("X= %f \r\n", deslocamento_X);
diogonac 5:1ee07aa85351 1218 }
diogonac 5:1ee07aa85351 1219
diogonac 5:1ee07aa85351 1220 } else motor_x = 0x00;
diogonac 3:a2de739d2802 1221
diogonac 5:1ee07aa85351 1222
diogonac 5:1ee07aa85351 1223 //============== Movimenta Eixo Z ======================================
diogonac 5:1ee07aa85351 1224
diogonac 5:1ee07aa85351 1225 if (posicoes[2] <= deslocamento_Z) {
diogonac 5:1ee07aa85351 1226
diogonac 5:1ee07aa85351 1227 while(deslocamento_Z > posicoes[2] & deslocamento_Z > 0 & pulsos_Z >= 0 & estado_botao_emergencia_in == false) {
diogonac 5:1ee07aa85351 1228 for(i = 0; i < 4; i++) {
diogonac 5:1ee07aa85351 1229 motor_z = 1 << i;
diogonac 5:1ee07aa85351 1230 pulsos_Z-=1;
diogonac 5:1ee07aa85351 1231 wait(velocidade);
diogonac 5:1ee07aa85351 1232 rotina_velocidade_eixo();
diogonac 5:1ee07aa85351 1233 rotina_deslocamento_eixo();
diogonac 5:1ee07aa85351 1234
diogonac 4:e905261df87f 1235 }
diogonac 5:1ee07aa85351 1236 pc.printf("Z= %f \r\n", deslocamento_Z);
diogonac 5:1ee07aa85351 1237 }
diogonac 5:1ee07aa85351 1238
diogonac 5:1ee07aa85351 1239 } else motor_z = 0x00;
diogonac 3:a2de739d2802 1240
diogonac 5:1ee07aa85351 1241 if(posicoes[2] >= deslocamento_Z) {
diogonac 5:1ee07aa85351 1242
diogonac 5:1ee07aa85351 1243 while(deslocamento_Z < posicoes[2] & deslocamento_max_Z > deslocamento_Z & pulsos_Z >= 0 & estado_botao_emergencia_in == false) {
diogonac 5:1ee07aa85351 1244 for(i = 3; i > -1; i--) {
diogonac 5:1ee07aa85351 1245 motor_z = 1 << i;
diogonac 5:1ee07aa85351 1246 pulsos_Z+=1;
diogonac 5:1ee07aa85351 1247 wait(velocidade);
diogonac 5:1ee07aa85351 1248 rotina_velocidade_eixo();
diogonac 5:1ee07aa85351 1249 rotina_deslocamento_eixo();
diogonac 5:1ee07aa85351 1250
diogonac 5:1ee07aa85351 1251 }
diogonac 5:1ee07aa85351 1252 pc.printf("Z= %f \r\n", deslocamento_Z);
diogonac 5:1ee07aa85351 1253 }
diogonac 5:1ee07aa85351 1254
diogonac 5:1ee07aa85351 1255 } else motor_z = 0x00;
diogonac 5:1ee07aa85351 1256
diogonac 5:1ee07aa85351 1257 motor_x = 0x00;
diogonac 5:1ee07aa85351 1258 motor_y = 0x00;
diogonac 5:1ee07aa85351 1259 motor_z = 0x00;
diogonac 5:1ee07aa85351 1260
diogonac 4:e905261df87f 1261 }
diogonac 3:a2de739d2802 1262
diogonac 3:a2de739d2802 1263
diogonac 3:a2de739d2802 1264 void rotina_aciona_pipeta()
diogonac 3:a2de739d2802 1265 {
diogonac 6:f21b6a630acb 1266 if(estado_botao_emergencia_in == false) {
diogonac 7:929727a280f3 1267 sinal_pipeta = 1; //Despeja qualquer residuo restante
diogonac 6:f21b6a630acb 1268 wait(tempo_pipeta);
diogonac 7:929727a280f3 1269 sinal_pipeta = 0; //Coleta volume especificado
diogonac 5:1ee07aa85351 1270 }
diogonac 3:a2de739d2802 1271
diogonac 3:a2de739d2802 1272 }
diogonac 3:a2de739d2802 1273
diogonac 6:f21b6a630acb 1274 void rotina_movimenta() //j é o ponteiro para sempre inicias em X
diogonac 6:f21b6a630acb 1275 {
diogonac 6:f21b6a630acb 1276
diogonac 7:929727a280f3 1277 //============== Movimenta Z para posição de segurança =================
diogonac 7:929727a280f3 1278
diogonac 7:929727a280f3 1279 if(Z_seguranca >= deslocamento_Z) {
diogonac 7:929727a280f3 1280
diogonac 7:929727a280f3 1281 while(deslocamento_Z < Z_seguranca & deslocamento_max_Z > deslocamento_Z & pulsos_Z >= 0 & estado_botao_emergencia_in == false) {
diogonac 7:929727a280f3 1282 for(i = 3; i > -1; i--) {
diogonac 7:929727a280f3 1283 motor_z = 1 << i;
diogonac 7:929727a280f3 1284 pulsos_Z+=1;
diogonac 7:929727a280f3 1285 wait(velocidade);
diogonac 7:929727a280f3 1286 rotina_velocidade_eixo();
diogonac 7:929727a280f3 1287 rotina_deslocamento_eixo();
diogonac 7:929727a280f3 1288
diogonac 7:929727a280f3 1289 }
diogonac 7:929727a280f3 1290 pc.printf("Z= %f \r\n", deslocamento_Z);
diogonac 7:929727a280f3 1291 }
diogonac 7:929727a280f3 1292 pc.printf("Z seguro atingido\r\n");
diogonac 7:929727a280f3 1293 }
diogonac 7:929727a280f3 1294
diogonac 7:929727a280f3 1295
diogonac 6:f21b6a630acb 1296 if (posicoes[j+1] <= deslocamento_Y) {
diogonac 6:f21b6a630acb 1297 while(deslocamento_Y > posicoes[j+1] & deslocamento_Y >= 0 & pulsos_Y >= 0 & estado_botao_emergencia_in == false) {
diogonac 6:f21b6a630acb 1298 for(i = 0; i < 4; i++) {
diogonac 6:f21b6a630acb 1299 motor_y = 1 << i;
diogonac 6:f21b6a630acb 1300 pulsos_Y-=1;
diogonac 6:f21b6a630acb 1301 wait(velocidade);
diogonac 6:f21b6a630acb 1302 rotina_velocidade_eixo();
diogonac 6:f21b6a630acb 1303 rotina_deslocamento_eixo();
diogonac 6:f21b6a630acb 1304
diogonac 6:f21b6a630acb 1305 }
diogonac 6:f21b6a630acb 1306 pc.printf("Y= %f \r\n", deslocamento_Y);
diogonac 6:f21b6a630acb 1307 }
diogonac 6:f21b6a630acb 1308
diogonac 6:f21b6a630acb 1309
diogonac 6:f21b6a630acb 1310 } else motor_y = 0x00;
diogonac 6:f21b6a630acb 1311
diogonac 6:f21b6a630acb 1312 if(posicoes[j+1] >= deslocamento_Y) {
diogonac 6:f21b6a630acb 1313
diogonac 6:f21b6a630acb 1314 while(deslocamento_Y < posicoes[j+1] & deslocamento_max_Y >= deslocamento_Y & pulsos_Y >= 0 & estado_botao_emergencia_in == false) {
diogonac 6:f21b6a630acb 1315 for(i = 3; i > -1; i--) {
diogonac 6:f21b6a630acb 1316 motor_y = 1 << i;
diogonac 6:f21b6a630acb 1317 pulsos_Y+=1;
diogonac 6:f21b6a630acb 1318 wait(velocidade);
diogonac 6:f21b6a630acb 1319 rotina_velocidade_eixo();
diogonac 6:f21b6a630acb 1320 rotina_deslocamento_eixo();
diogonac 6:f21b6a630acb 1321
diogonac 6:f21b6a630acb 1322 }
diogonac 6:f21b6a630acb 1323 pc.printf("Y= %f \r\n", deslocamento_Y);
diogonac 6:f21b6a630acb 1324 }
diogonac 6:f21b6a630acb 1325
diogonac 6:f21b6a630acb 1326 } else motor_y = 0x00;
diogonac 6:f21b6a630acb 1327
diogonac 6:f21b6a630acb 1328 //============== Movimenta Eixo X ======================================
diogonac 6:f21b6a630acb 1329
diogonac 6:f21b6a630acb 1330 if (posicoes[j] <= deslocamento_X) {
diogonac 6:f21b6a630acb 1331
diogonac 6:f21b6a630acb 1332 while(deslocamento_X > posicoes[j] & deslocamento_X >= 0 & pulsos_X >= 0 & estado_botao_emergencia_in == false) {
diogonac 6:f21b6a630acb 1333 for(i = 0; i < 4; i++) {
diogonac 6:f21b6a630acb 1334 motor_x = 1 << i;
diogonac 6:f21b6a630acb 1335 pulsos_X-=1;
diogonac 6:f21b6a630acb 1336 wait(velocidade);
diogonac 6:f21b6a630acb 1337 rotina_velocidade_eixo();
diogonac 6:f21b6a630acb 1338 rotina_deslocamento_eixo();
diogonac 6:f21b6a630acb 1339
diogonac 6:f21b6a630acb 1340 }
diogonac 6:f21b6a630acb 1341 pc.printf("X= %f \r\n", deslocamento_X);
diogonac 6:f21b6a630acb 1342 }
diogonac 6:f21b6a630acb 1343
diogonac 6:f21b6a630acb 1344 } else motor_x = 0x00;
diogonac 6:f21b6a630acb 1345
diogonac 6:f21b6a630acb 1346 if(posicoes[j] >= deslocamento_X) {
diogonac 6:f21b6a630acb 1347
diogonac 6:f21b6a630acb 1348 while(deslocamento_X < posicoes[j] & deslocamento_max_X > deslocamento_X & pulsos_X >= 0 & estado_botao_emergencia_in == false) {
diogonac 6:f21b6a630acb 1349 for(i = 3; i > -1; i--) {
diogonac 6:f21b6a630acb 1350 motor_x = 1 << i;
diogonac 6:f21b6a630acb 1351 pulsos_X+=1;
diogonac 6:f21b6a630acb 1352 wait(velocidade);
diogonac 6:f21b6a630acb 1353 rotina_velocidade_eixo();
diogonac 6:f21b6a630acb 1354 rotina_deslocamento_eixo();
diogonac 6:f21b6a630acb 1355
diogonac 6:f21b6a630acb 1356 }
diogonac 6:f21b6a630acb 1357 pc.printf("X= %f \r\n", deslocamento_X);
diogonac 6:f21b6a630acb 1358 }
diogonac 6:f21b6a630acb 1359
diogonac 6:f21b6a630acb 1360 } else motor_x = 0x00;
diogonac 6:f21b6a630acb 1361
diogonac 6:f21b6a630acb 1362
diogonac 6:f21b6a630acb 1363 //============== Movimenta Eixo Z ======================================
diogonac 6:f21b6a630acb 1364
diogonac 6:f21b6a630acb 1365 if (posicoes[j+2] <= deslocamento_Z) {
diogonac 6:f21b6a630acb 1366
diogonac 6:f21b6a630acb 1367 while(deslocamento_Z > posicoes[j+2] & deslocamento_Z > 0 & pulsos_Z >= 0 & estado_botao_emergencia_in == false) {
diogonac 6:f21b6a630acb 1368 for(i = 0; i < 4; i++) {
diogonac 6:f21b6a630acb 1369 motor_z = 1 << i;
diogonac 6:f21b6a630acb 1370 pulsos_Z-=1;
diogonac 6:f21b6a630acb 1371 wait(velocidade);
diogonac 6:f21b6a630acb 1372 rotina_velocidade_eixo();
diogonac 6:f21b6a630acb 1373 rotina_deslocamento_eixo();
diogonac 6:f21b6a630acb 1374
diogonac 6:f21b6a630acb 1375 }
diogonac 6:f21b6a630acb 1376 pc.printf("Z= %f \r\n", deslocamento_Z);
diogonac 6:f21b6a630acb 1377 }
diogonac 6:f21b6a630acb 1378
diogonac 6:f21b6a630acb 1379 } else motor_z = 0x00;
diogonac 6:f21b6a630acb 1380
diogonac 6:f21b6a630acb 1381 if(posicoes[j+2] >= deslocamento_Z) {
diogonac 6:f21b6a630acb 1382
diogonac 6:f21b6a630acb 1383 while(deslocamento_Z < posicoes[j+2] & deslocamento_max_Z > deslocamento_Z & pulsos_Z >= 0 & estado_botao_emergencia_in == false) {
diogonac 6:f21b6a630acb 1384 for(i = 3; i > -1; i--) {
diogonac 6:f21b6a630acb 1385 motor_z = 1 << i;
diogonac 6:f21b6a630acb 1386 pulsos_Z+=1;
diogonac 6:f21b6a630acb 1387 wait(velocidade);
diogonac 6:f21b6a630acb 1388 rotina_velocidade_eixo();
diogonac 6:f21b6a630acb 1389 rotina_deslocamento_eixo();
diogonac 6:f21b6a630acb 1390
diogonac 6:f21b6a630acb 1391 }
diogonac 6:f21b6a630acb 1392 pc.printf("Z= %f \r\n", deslocamento_Z);
diogonac 6:f21b6a630acb 1393 }
diogonac 6:f21b6a630acb 1394
diogonac 6:f21b6a630acb 1395 } else motor_z = 0x00;
diogonac 6:f21b6a630acb 1396
diogonac 6:f21b6a630acb 1397 motor_x = 0x00;
diogonac 6:f21b6a630acb 1398 motor_y = 0x00;
diogonac 6:f21b6a630acb 1399 motor_z = 0x00;
diogonac 6:f21b6a630acb 1400
diogonac 6:f21b6a630acb 1401 rotina_aciona_pipeta();
diogonac 6:f21b6a630acb 1402 rotina_pega();
diogonac 6:f21b6a630acb 1403 rotina_aciona_pipeta();
diogonac 6:f21b6a630acb 1404 quantidade_depositada++;
diogonac 6:f21b6a630acb 1405 pc.printf("quantidade_depositada= %d \r\n", quantidade_depositada);
diogonac 6:f21b6a630acb 1406 }
diogonac 6:f21b6a630acb 1407
diogonac 6:f21b6a630acb 1408
diogonac 6:f21b6a630acb 1409
diogonac 6:f21b6a630acb 1410
diogonac 6:f21b6a630acb 1411
diogonac 6:f21b6a630acb 1412
diogonac 6:f21b6a630acb 1413
diogonac 3:a2de739d2802 1414
diogonac 3:a2de739d2802 1415
diogonac 3:a2de739d2802 1416
diogonac 3:a2de739d2802 1417
diogonac 0:9344dd7c7e26 1418 void recebe_dados(unsigned char *data_buf, int numchar)
diogonac 0:9344dd7c7e26 1419 {
diogonac 0:9344dd7c7e26 1420 int count=0;
diogonac 0:9344dd7c7e26 1421 if(numchar == 0) {
diogonac 0:9344dd7c7e26 1422 numchar = sizeof(data_buf);
diogonac 0:9344dd7c7e26 1423 }
diogonac 0:9344dd7c7e26 1424
diogonac 5:1ee07aa85351 1425 while(count < 5) {
diogonac 0:9344dd7c7e26 1426 if(recebe_arduino.readable()) {
diogonac 0:9344dd7c7e26 1427 *data_buf = recebe_arduino.getc();
diogonac 0:9344dd7c7e26 1428 data_buf+=1;
diogonac 0:9344dd7c7e26 1429 count++;
diogonac 0:9344dd7c7e26 1430 }
diogonac 0:9344dd7c7e26 1431 }
diogonac 5:1ee07aa85351 1432 // if(recebe_arduino.readable()) {
diogonac 5:1ee07aa85351 1433 // for(int w = 0; w < 4; w++) {
diogonac 5:1ee07aa85351 1434 //
diogonac 5:1ee07aa85351 1435 //
diogonac 5:1ee07aa85351 1436 // data_buf[w] = recebe_arduino.getc();
diogonac 5:1ee07aa85351 1437 //
diogonac 5:1ee07aa85351 1438 // }
diogonac 5:1ee07aa85351 1439 // }
diogonac 0:9344dd7c7e26 1440 }