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.
IHM.cpp
00001 #include "mbed.h" 00002 #include "TextLCD.h" 00003 00004 TextLCD lcd(D8, D9, D4, D5, D6, D7); // rs, e, d4-d7 00005 Serial pc (USBTX, USBRX); 00006 AnalogIn eixo_Z(PC_2); 00007 AnalogIn botao_SELECT(A0); 00008 InterruptIn posicao_salva(PA_15); 00009 InterruptIn botao_emergencia(PC_4); 00010 DigitalIn botao_indicador_fonte_externa(PC_10); 00011 00012 BusOut motor_z(PB_1, PB_15, PB_14, PB_13); 00013 float tempo_horario, tempo_anti_horario; //Segundos 00014 int pulsos_horario, pulsos_anti_horario; 00015 int i; 00016 int J_Z; 00017 float deslocamento_horario_Z, deslocamento_anti_horario_Z, deslocamento_total_Z; 00018 float velocidade_Z; 00019 float passo_motor = 18;//5.625/32; 00020 int passo_fuso = 5; 00021 int pegaZ; 00022 int posicao_salva_estado, botao_emergencia_estado; 00023 int fonte_externa; 00024 int SELECT, valor_SELECT; 00025 00026 void rotina_posicao_salva(void); 00027 void rotina_emergencia(void); 00028 void rotida_velocidade_eixo_Z(void); 00029 void rotida_deslocamento_eixo_Z (void); 00030 void rotida_aciona_motor (void); 00031 void rotida_botoes_IHM (void); 00032 00033 00034 int main() 00035 { 00036 00037 pc.baud(115200); 00038 motor_z = 0x00; 00039 posicao_salva.rise(&rotina_posicao_salva); 00040 botao_emergencia.rise(&rotina_emergencia); 00041 lcd.locate(0,0); 00042 lcd.printf("PosicaoZ:"); 00043 00044 00045 while(1) { 00046 00047 posicao_salva_estado = posicao_salva.read(); 00048 botao_emergencia_estado = botao_emergencia.read(); 00049 J_Z = eixo_Z.read_u16(); 00050 fonte_externa = botao_indicador_fonte_externa.read(); 00051 SELECT = botao_SELECT.read_u16(); 00052 rotida_botoes_IHM(); 00053 00054 pc.printf("Select=%d\r\n", valor_SELECT); 00055 //pc.printf("Z=%4d, PegaZ=%4d, Posicao_salva_estado=%d, Botao_emergencia_estado=%d, Tempo1=%4f, Tempo2=%4f, Pulsos=%d, Deslocamento_Z=%f, Velocidade_Z=%f\r\n", J_Z, pegaZ, posicao_salva_estado, botao_emergencia_estado, tempo_horario, tempo_anti_horario, pulsos_anti_horario, deslocamento_total_Z, velocidade_Z); 00056 00057 if(fonte_externa == 0) { 00058 lcd.locate(0,1); 00059 lcd.printf("%4fmm",deslocamento_total_Z); 00060 // pc.printf("Fonte=%d\r\n", fonte_externa); 00061 rotida_aciona_motor(); 00062 00063 } 00064 } 00065 } 00066 00067 00068 void rotina_posicao_salva() 00069 { 00070 if(posicao_salva_estado == 0) pegaZ = J_Z; 00071 else pegaZ = 0; 00072 } 00073 00074 void rotina_emergencia() 00075 { 00076 if(botao_emergencia_estado == 0) motor_z = 0x00; 00077 } 00078 00079 void rotida_velocidade_eixo_Z() 00080 { 00081 tempo_horario = -1*J_Z*0.0000028 +0.1875; 00082 tempo_anti_horario = J_Z*0.000002785 +0.0025; 00083 } 00084 00085 void rotida_deslocamento_eixo_Z() 00086 { 00087 deslocamento_horario_Z = (passo_fuso*pulsos_horario*passo_motor)/360; 00088 deslocamento_anti_horario_Z = (passo_fuso*pulsos_anti_horario*passo_motor)/360; 00089 deslocamento_total_Z = deslocamento_anti_horario_Z - deslocamento_horario_Z; 00090 } 00091 00092 void rotida_botoes_IHM() 00093 { 00094 00095 if(SELECT > 60000 & SELECT < 65000) valor_SELECT = 1; 00096 else valor_SELECT = 0; 00097 00098 00099 } 00100 00101 00102 void rotida_aciona_motor() 00103 { 00104 00105 if(31000 <= J_Z & J_Z <= 35000) { 00106 00107 motor_z = 0x00; 00108 00109 } else { 00110 if (J_Z > 31000) { 00111 for(i = 0; i < 4; i++) { 00112 motor_z = 1 << i; 00113 rotida_velocidade_eixo_Z(); 00114 rotida_deslocamento_eixo_Z(); 00115 wait(tempo_horario); 00116 pulsos_horario+=1; 00117 velocidade_Z = deslocamento_horario_Z/tempo_horario; 00118 00119 } 00120 } 00121 00122 if(J_Z < 35000) { 00123 for(i = 3; i > -1; i--) { 00124 motor_z = 1 << i; 00125 rotida_velocidade_eixo_Z(); 00126 rotida_deslocamento_eixo_Z(); 00127 wait(tempo_anti_horario); 00128 pulsos_anti_horario+=1; 00129 velocidade_Z = deslocamento_horario_Z/tempo_horario; 00130 00131 } 00132 } 00133 } 00134 00135 00136 }
Generated on Tue Aug 30 2022 00:29:24 by
1.7.2