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:
- 106:a35a10e8cf0d
- Parent:
- 105:d547091e8d44
- Child:
- 107:345b1ef490a8
--- a/main_PM.cpp Mon Jun 22 20:16:36 2020 +0000
+++ b/main_PM.cpp Mon Jun 22 21:41:17 2020 +0000
@@ -23,6 +23,7 @@
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
float altura_solta = 50;
string est_ihm = "novo";
+int cont_pipeta; //variavel que guarda valores de pipetagens feitas
//pinos usados pelos botoes de fim de curso
InterruptIn fdc_x(PC_10);
@@ -142,15 +143,14 @@
//Calcular a altura do pega com base no tipo do pega
//a dimensão do pega pode ser o lado de um quadrado ou diâmetro de uma circunferência. O contador se refere a quantas vezes o líquido já foi retirado do pega.
-float calcula_altura(int forma_do_pega, int dimensao, float v, int contador){
+float calcula_altura(int forma_do_pega, int dimensao, float v){
if(forma_do_pega==1){//quad
- return (v-contador)/(dimensao*dimensao)*0.001-4;
+ return (v-cont_pipeta)/(dimensao*dimensao)*0.001-4;
}
else{//red
- return ((v-contador)/(PI*(dimensao/2)*(dimensao/2))*0.001-4);
+ return ((v-cont_pipeta)/(PI*(dimensao/2)*(dimensao/2))*0.001-4);
};
}
-
void go_to_z(float posicao_z){
while(coord_z < posicao_z){ //coord_z representa a posicao atual de z e posicao_z é a posicao em z que se quer atingir.
mov_z_mais(); //gira no sentido horário
@@ -159,15 +159,16 @@
mov_z_menos(); //gira no sentido anti-horário
}
}
-
//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, 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);
+void rotina_pino(float volume_solta, int tipo_do_pega, float medida_do_pega, float volume_do_pega, float pos_pino_x, float pos_pino_y, float pos_pega_x, float pos_pega_y){
+ printf("%f",volume_solta);
+ for(int i = 0; i < volume_solta; i++){ //
+ printf("entrou no for");
+ float altura = calcula_altura(tipo_do_pega,medida_do_pega, volume_do_pega);
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);
+ wait(0.5);
pipeta = 0; //aciona a pipeta pelo relé
wait(0.5);
pipeta = 1; //desaciona a pipeta
@@ -181,7 +182,7 @@
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
+ cont_pipeta+=1; //contabiliza uma pipetagem
}
}
@@ -265,7 +266,7 @@
string status_tela = "zeramento"; //variavel para guardar o estado atual da tela e situar o programa, juntamente aos botoes apertados, a respeito de onde ele está.
//Neste sentido, ao longo de todo o programa, esta variavel sera usada seguindo a lógica de "se estou na tela x e o usuario apertou o botao
//y, vou para a tela z"
-int programa = 1; //A variável programa remete a que programa salvo o usuário deseja acessar
+int programa = 0; //A variável programa remete a que programa salvo o usuário deseja acessar
//Informações sobre o pega a serem armazenadas no array do programa que está sendo construido pelo usuário
//O comprimento de cada array é de 6 pois podem ser "salvos" apenas 6 programas
@@ -488,7 +489,6 @@
continuar = 1;
status_tela = "salvo_confirmacao";
troca_tela(continuar, funcao_salvo_agree1, funcao_salvo_agree2, confirmacao_pos_pega[programa], confirmacao_pos_solta[programa],confirmacao_vol_pega[programa],confirmacao_vol_solta[programa],4);
- programa = 1;
}
else if(tecla =='2' && status_tela =="salvo_confirmacao"){
continuar = 1;
@@ -523,9 +523,7 @@
if(nome_programa[3] != 0){lcd.locate(2,0);lcd.printf("%d",nome_programa[3]);}
if(nome_programa[4] != 0){lcd.locate(2,1);lcd.printf("%d",nome_programa[4]);}
if(nome_programa[5] != 0){lcd.locate(2,2);lcd.printf("%d",nome_programa[5]);}
-
- programa = 1;
- status_tela = "salvo";}
+ status_tela = "salvo";}
else if(tecla =='3' && status_tela =="salvo_confirmacao"){
funcao_salvo_agree_pega_vol(); //Função que imprime na tela do usuário que ele deve dar entreda no volume
continuar = 1;
@@ -574,9 +572,7 @@
if(nome_programa[3] != 0){lcd.locate(2,0);lcd.printf("%d",nome_programa[3]);}
if(nome_programa[4] != 0){lcd.locate(2,1);lcd.printf("%d",nome_programa[4]);}
if(nome_programa[5] != 0){lcd.locate(2,2);lcd.printf("%d",nome_programa[5]);}
-
- programa = 1;
- status_tela = "salvo";}
+ status_tela = "salvo";}
tecla = pega_tecla(); //Atualiza a variável tecla
@@ -1242,10 +1238,11 @@
}
else if(tecla == '2' && status_tela == "solta"){
+ status_tela="solta_vol";
funcao_solta_vol();
- status_tela="solta_vol";
}
- else if(tecla == '1' && status_tela == "solta_vol"){
+ tecla = pega_tecla();
+ if(tecla == '1' && status_tela == "solta_vol"){
funcao_solta_vol_igual();
status_tela = "solta_vol_igual";
lcd.locate(0,2);
@@ -1302,6 +1299,7 @@
}
}
else if(tecla == 'B' && status_tela == "solta"){
+ est_ihm = "pega";
continuar = 1;
status_tela="novo";
troca_tela(continuar, funcao_pega1, funcao_pega2, medida_lado_pega[programa],volume_pega[programa], pos_y_pega[programa],0,3);
@@ -1320,6 +1318,7 @@
status_tela="solta";
troca_tela(continuar, funcao_solta1, funcao_solta2, dimensao_solta[programa],volume_solta_9[programa], pos_y_solta[programa],0,3);
}
+ tecla = pega_tecla();
if(tecla=='1' && status_tela=="solta_vol"){
funcao_solta_vol_igual();
status_tela="solta_vol_igual";
@@ -1704,7 +1703,7 @@
//ここまで来たよな!頑張りましたね!あと少しだよ!
if(est_ihm == "exec"){
if(confirmacao_pos_pega[programa]==0 && confirmacao_pos_solta[programa]==0 && confirmacao_vol_pega[programa]==0 && confirmacao_pos_solta[programa]==0 && status_tela == "acompanhamento"){
- int cont_pipeta = 0;
+ cont_pipeta = 0;
//Aqui definimos a posição de cada solta a partir de um pinos.
float pos1[2] = {pos_x_solta[programa], pos_y_solta[programa]} ; //Pino referência
@@ -1718,15 +1717,15 @@
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], 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]);
+ rotina_pino(volume_solta_1[programa], tipo_pega[programa], medida_lado_pega[programa], volume_pega[programa], 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], 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], 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], 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], 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], 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], 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], 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], pos9[0],pos9[1], pos_x_pega[programa],pos_y_solta[programa]);
programa+=1;
printf("CABÔ HEIN");
lcd.cls();