Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
Diff: main_PM.cpp
- Revision:
- 104:35d857d681ac
- Parent:
- 103:1192b279c051
- Child:
- 105:d547091e8d44
--- a/main_PM.cpp Fri Jun 12 19:48:20 2020 +0000
+++ b/main_PM.cpp Fri Jun 12 21:08:00 2020 +0000
@@ -17,7 +17,7 @@
float coord_x = 0; //variável que guardará a posição linear do eixo x, ela é incrementada com a conta do deslocamento linear dado um deslocamento angular sempre que o eixo é movimentado depois do referencimaneto
float coord_y = 0; //variável que guardará a posição linear do eixo y, ela é incrementada com a conta do deslocamento linear dado um deslocamento angular sempre que o eixo é movimentado depois do referencimaneto
float coord_z = 0;
-float normal_z = 10; //variável que guardará a posição linear do eixo z, ela é incrementada com a conta do deslocamento linear dado um deslocamento angular sempre que o eixo é movimentado depois do referencimaneto
+float normal_z = 5; //variável que guardará a posição linear do eixo z, ela é incrementada com a conta do deslocamento linear dado um deslocamento angular sempre que o eixo é movimentado depois do referencimaneto
int est_x = 0; //variável que indicará o estado do eixo x, pemitindo ou não que ele possa ser avançado depois de atingir o fim de curso
int est_y = 0; //variável que indicará o estado do eixo y, pemitindo ou não que ele possa ser avançado depois de atingir o fim de curso
int est_z = 0; //variável que indicará o estado do eixo z, pemitindo ou não que ele possa ser avançado depois de atingir o fim de curso
@@ -161,19 +161,25 @@
}
//Funcao da rotina de execucao
-void rotina_pino(float volume_solta, int tipo_do_pega, float medida_do_pega, float volume_do_pega, int contador, float pos_pino_x, float pos_pino_y){
+void rotina_pino(float volume_solta, int tipo_do_pega, float medida_do_pega, float volume_do_pega, int contador, float pos_pino_x, float pos_pino_y, float pos_pega_x, float pos_pega_y){
for(int i; i < volume_solta; i++){ //
float altura = calcula_altura(tipo_do_pega,medida_do_pega, volume_do_pega, contador);
- go_to_z(altura); //move z até a altura para sugar o líquido
+ go_to_posicao(pos_pega_x, pos_pega_y); //vai para a posicao pega
+ wait(0.5);
+ go_to_z(altura); //move z até a altura para sugar o líquido no pega
+ wait(0.5);
pipeta = 0; //aciona a pipeta pelo relé
- wait(1);
+ wait(0.5);
pipeta = 1; //desaciona a pipeta
+ wait(0.5);
go_to_z(normal_z);//move z até a posicao normal de z (posicao de z que não vai atrapalhar o processo de pipetagem)
go_to_posicao(pos_pino_x,pos_pino_y); //move até o pino pelo plano de x e y
go_to_z(altura_solta);//Após chegar na posicao xy desejada, a pipeta desce para a altura do solta
+ wait(0.5);
pipeta = 0; //aciona a pipeta e solta o líquido no solta
- wait(1);
+ wait(0.5);
pipeta = 1; //desaciona a pipeta
+ wait(0.5);
go_to_z(normal_z);//volta para a posicao normal de z
contador+=1; //contabiliza uma pipetagem
}
@@ -319,7 +325,8 @@
fdc_y.fall(&lim_y); //faz a leitura de inturrupção do fdc_y logo depois que o botão é pressionado e executa lim_y
fdc_z.fall(&lim_z); //faz a leitura de inturrupção do fdc_z logo depois que o botão é pressionado e executa a lim_z
fdc_x.rise(&reseta_eixo); //faz a leitura de inturrupção do fdc_x logo depois que o botão é soltado e executa o reseta_eixo
- fdc_z.rise(&reseta_eixo);
+ fdc_y.rise(&reseta_eixo); //faz a leitura de inturrupção do fdc_y logo depois que o botão é soltado e executa o reseta_eixo
+ fdc_z.rise(&reseta_eixo); //faz a leitura de inturrupção do fdc_z logo depois que o botão é soltado e executa o reseta_eixo
//Variáveis de iteração (serão utilizadas como variável nos cálculos para depois, fornecer o valor para o pega e os soltas)
int volume;
int volume_solta;
@@ -329,7 +336,7 @@
bool continuar; //condicao de verdade para loops que serão utilizados
int multiplicador = 10;
TextLCD lcd(D4, D5, D6, D7, D8, D9); //Pinos para ligar o display à NUCLEO
-
+ lcd.cls();
//Tela inicial
lcd.printf("Bem-vindo ao Pipemax");
lcd.locate(3,1); //funcao que posiciona o texto na tela
@@ -544,17 +551,17 @@
status_tela="salvo_conf_vol_pega";}
else if(tecla =='4' && status_tela =="salvo_confirmacao"){
funcao_salvo_agree_solta_vol(); //volumes configurados por cada pipeta. (programa.vol_solta_pipeta)
- lcd.locate(1,0);lcd.printf("%g",volume_solta_1[programa]);
- lcd.locate(8,0);lcd.printf("%g",volume_solta_2[programa]);
- lcd.locate(16,0);lcd.printf("%g",volume_solta_3[programa]);
+ lcd.locate(2,0);lcd.printf("%g",volume_solta_1[programa]);
+ lcd.locate(9,0);lcd.printf("%g",volume_solta_2[programa]);
+ lcd.locate(17,0);lcd.printf("%g",volume_solta_3[programa]);
- lcd.locate(1,1);lcd.printf("%g",volume_solta_4[programa]);
- lcd.locate(8,1);lcd.printf("%g",volume_solta_5[programa]);
- lcd.locate(16,1);lcd.printf("%g",volume_solta_6[programa]);
+ lcd.locate(2,1);lcd.printf("%g",volume_solta_4[programa]);
+ lcd.locate(9,1);lcd.printf("%g",volume_solta_5[programa]);
+ lcd.locate(17,1);lcd.printf("%g",volume_solta_6[programa]);
- lcd.locate(1,2);lcd.printf("%g",volume_solta_7[programa]);
+ lcd.locate(2,2);lcd.printf("%g",volume_solta_7[programa]);
lcd.locate(8,2);lcd.printf("%g",volume_solta_8[programa]);
- lcd.locate(16,2);lcd.printf("%g",volume_solta_9[programa]);
+ lcd.locate(17,2);lcd.printf("%g",volume_solta_9[programa]);
status_tela="salvo_conf_vol_solta";}
else if(tecla =='B' && status_tela =="salvo_confirmacao"){
funcao_salvo1();
@@ -1709,17 +1716,17 @@
float pos7[2] = {pos_x_solta[programa], pos_y_solta[programa]+4*medida_lado_pega[programa]} ;
float pos8[2] = {pos_x_solta[programa]+2*medida_lado_pega[programa], pos_y_solta[programa]+4*medida_lado_pega[programa]} ;
float pos9[2] = {pos_x_solta[programa]+4*medida_lado_pega[programa], pos_y_solta[programa]+4*medida_lado_pega[programa]};
-
+ go_to_z(normal_z);
//Execução da rotina em cada pino
- rotina_pino(volume_solta_1[programa], tipo_pega[programa], medida_lado_pega[programa], volume_pega[programa], cont_pipeta, pos1[0],pos1[1]);
- rotina_pino(volume_solta_2[programa], tipo_pega[programa], medida_lado_pega[programa], volume_pega[programa], cont_pipeta, pos2[0],pos2[1]);
- rotina_pino(volume_solta_3[programa], tipo_pega[programa], medida_lado_pega[programa], volume_pega[programa], cont_pipeta, pos3[0],pos3[1]);
- rotina_pino(volume_solta_4[programa], tipo_pega[programa], medida_lado_pega[programa], volume_pega[programa], cont_pipeta, pos4[0],pos4[1]);
- rotina_pino(volume_solta_5[programa], tipo_pega[programa], medida_lado_pega[programa], volume_pega[programa], cont_pipeta, pos5[0],pos5[1]);
- rotina_pino(volume_solta_6[programa], tipo_pega[programa], medida_lado_pega[programa], volume_pega[programa], cont_pipeta, pos6[0],pos6[1]);
- rotina_pino(volume_solta_7[programa], tipo_pega[programa], medida_lado_pega[programa], volume_pega[programa], cont_pipeta, pos7[0],pos7[1]);
- rotina_pino(volume_solta_8[programa], tipo_pega[programa], medida_lado_pega[programa], volume_pega[programa], cont_pipeta, pos8[0],pos8[1]);
- rotina_pino(volume_solta_9[programa], tipo_pega[programa], medida_lado_pega[programa], volume_pega[programa], cont_pipeta, pos9[0],pos9[1]);
+ rotina_pino(volume_solta_1[programa], tipo_pega[programa], medida_lado_pega[programa], volume_pega[programa], cont_pipeta, pos1[0],pos1[1], pos_x_pega[programa],pos_y_solta[programa]);
+ rotina_pino(volume_solta_2[programa], tipo_pega[programa], medida_lado_pega[programa], volume_pega[programa], cont_pipeta, pos2[0],pos2[1], pos_x_pega[programa],pos_y_solta[programa]);
+ rotina_pino(volume_solta_3[programa], tipo_pega[programa], medida_lado_pega[programa], volume_pega[programa], cont_pipeta, pos3[0],pos3[1], pos_x_pega[programa],pos_y_solta[programa]);
+ rotina_pino(volume_solta_4[programa], tipo_pega[programa], medida_lado_pega[programa], volume_pega[programa], cont_pipeta, pos4[0],pos4[1], pos_x_pega[programa],pos_y_solta[programa]);
+ rotina_pino(volume_solta_5[programa], tipo_pega[programa], medida_lado_pega[programa], volume_pega[programa], cont_pipeta, pos5[0],pos5[1], pos_x_pega[programa],pos_y_solta[programa]);
+ rotina_pino(volume_solta_6[programa], tipo_pega[programa], medida_lado_pega[programa], volume_pega[programa], cont_pipeta, pos6[0],pos6[1], pos_x_pega[programa],pos_y_solta[programa]);
+ rotina_pino(volume_solta_7[programa], tipo_pega[programa], medida_lado_pega[programa], volume_pega[programa], cont_pipeta, pos7[0],pos7[1], pos_x_pega[programa],pos_y_solta[programa]);
+ rotina_pino(volume_solta_8[programa], tipo_pega[programa], medida_lado_pega[programa], volume_pega[programa], cont_pipeta, pos8[0],pos8[1], pos_x_pega[programa],pos_y_solta[programa]);
+ rotina_pino(volume_solta_9[programa], tipo_pega[programa], medida_lado_pega[programa], volume_pega[programa], cont_pipeta, pos9[0],pos9[1], pos_x_pega[programa],pos_y_solta[programa]);
programa+=1;
printf("CABÔ HEIN");
lcd.cls();
@@ -1730,6 +1737,7 @@
lcd.locate(2,0);
lcd.printf(" a tela inicial...");
wait(3);
+ status_tela = "inicio";
if (programa==6){
lcd.cls();
lcd.printf("Limite de programas");