LCD

Dependencies:   mbed TextLCD

Committer:
diogonac
Date:
Thu May 20 12:18:23 2021 +0000
Revision:
6:0320c521b9e0
Parent:
5:5e0059e59cb2
Logica da deteccao de fonte externa

Who changed what in which revision?

UserRevisionLine numberNew contents of line
diogonac 0:4d11c8fe2ef9 1 #include "mbed.h"
diogonac 0:4d11c8fe2ef9 2 #include "TextLCD.h"
diogonac 0:4d11c8fe2ef9 3
diogonac 4:cdd205f48898 4 TextLCD lcd(D8, D9, D4, D5, D6, D7); // rs, e, d4-d7
juan_ruiz 1:4ba95a6ae582 5 Serial pc (USBTX, USBRX);
diogonac 4:cdd205f48898 6 AnalogIn eixo_Z(PC_2);
diogonac 6:0320c521b9e0 7 AnalogIn botao_SELECT(A0);
juan_ruiz 1:4ba95a6ae582 8 InterruptIn posicao_salva(PA_15);
diogonac 4:cdd205f48898 9 InterruptIn botao_emergencia(PC_4);
diogonac 5:5e0059e59cb2 10 DigitalIn botao_indicador_fonte_externa(PC_10);
juan_ruiz 1:4ba95a6ae582 11
juan_ruiz 1:4ba95a6ae582 12 BusOut motor_z(PB_1, PB_15, PB_14, PB_13);
juan_ruiz 2:2547de0cde50 13 float tempo_horario, tempo_anti_horario; //Segundos
juan_ruiz 2:2547de0cde50 14 int pulsos_horario, pulsos_anti_horario;
juan_ruiz 1:4ba95a6ae582 15 int i;
juan_ruiz 2:2547de0cde50 16 int J_Z;
juan_ruiz 2:2547de0cde50 17 float deslocamento_horario_Z, deslocamento_anti_horario_Z, deslocamento_total_Z;
juan_ruiz 2:2547de0cde50 18 float velocidade_Z;
juan_ruiz 2:2547de0cde50 19 float passo_motor = 18;//5.625/32;
juan_ruiz 2:2547de0cde50 20 int passo_fuso = 5;
juan_ruiz 1:4ba95a6ae582 21 int pegaZ;
juan_ruiz 1:4ba95a6ae582 22 int posicao_salva_estado, botao_emergencia_estado;
diogonac 5:5e0059e59cb2 23 int fonte_externa;
diogonac 6:0320c521b9e0 24 int SELECT, valor_SELECT;
diogonac 0:4d11c8fe2ef9 25
juan_ruiz 1:4ba95a6ae582 26 void rotina_posicao_salva(void);
juan_ruiz 1:4ba95a6ae582 27 void rotina_emergencia(void);
juan_ruiz 1:4ba95a6ae582 28 void rotida_velocidade_eixo_Z(void);
juan_ruiz 2:2547de0cde50 29 void rotida_deslocamento_eixo_Z (void);
diogonac 5:5e0059e59cb2 30 void rotida_aciona_motor (void);
diogonac 6:0320c521b9e0 31 void rotida_botoes_IHM (void);
juan_ruiz 2:2547de0cde50 32
diogonac 0:4d11c8fe2ef9 33
diogonac 0:4d11c8fe2ef9 34 int main()
diogonac 0:4d11c8fe2ef9 35 {
diogonac 0:4d11c8fe2ef9 36
juan_ruiz 1:4ba95a6ae582 37 pc.baud(115200);
juan_ruiz 1:4ba95a6ae582 38 motor_z = 0x00;
juan_ruiz 1:4ba95a6ae582 39 posicao_salva.rise(&rotina_posicao_salva);
juan_ruiz 1:4ba95a6ae582 40 botao_emergencia.rise(&rotina_emergencia);
diogonac 4:cdd205f48898 41 lcd.locate(0,0);
diogonac 6:0320c521b9e0 42 lcd.printf("PosicaoZ:");
diogonac 6:0320c521b9e0 43
juan_ruiz 1:4ba95a6ae582 44
diogonac 0:4d11c8fe2ef9 45 while(1) {
diogonac 0:4d11c8fe2ef9 46
juan_ruiz 1:4ba95a6ae582 47 posicao_salva_estado = posicao_salva.read();
juan_ruiz 1:4ba95a6ae582 48 botao_emergencia_estado = botao_emergencia.read();
diogonac 5:5e0059e59cb2 49 J_Z = eixo_Z.read_u16();
diogonac 5:5e0059e59cb2 50 fonte_externa = botao_indicador_fonte_externa.read();
diogonac 6:0320c521b9e0 51 SELECT = botao_SELECT.read_u16();
diogonac 6:0320c521b9e0 52 rotida_botoes_IHM();
diogonac 6:0320c521b9e0 53
diogonac 6:0320c521b9e0 54 pc.printf("Select=%d\r\n", valor_SELECT);
diogonac 5:5e0059e59cb2 55 //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);
juan_ruiz 1:4ba95a6ae582 56
diogonac 6:0320c521b9e0 57 if(fonte_externa == 0) {
diogonac 5:5e0059e59cb2 58 lcd.locate(0,1);
diogonac 5:5e0059e59cb2 59 lcd.printf("%4fmm",deslocamento_total_Z);
diogonac 6:0320c521b9e0 60 // pc.printf("Fonte=%d\r\n", fonte_externa);
diogonac 5:5e0059e59cb2 61 rotida_aciona_motor();
juan_ruiz 1:4ba95a6ae582 62
juan_ruiz 1:4ba95a6ae582 63 }
juan_ruiz 1:4ba95a6ae582 64 }
juan_ruiz 1:4ba95a6ae582 65 }
juan_ruiz 1:4ba95a6ae582 66
juan_ruiz 1:4ba95a6ae582 67
juan_ruiz 1:4ba95a6ae582 68 void rotina_posicao_salva()
juan_ruiz 1:4ba95a6ae582 69 {
juan_ruiz 2:2547de0cde50 70 if(posicao_salva_estado == 0) pegaZ = J_Z;
juan_ruiz 1:4ba95a6ae582 71 else pegaZ = 0;
juan_ruiz 1:4ba95a6ae582 72 }
juan_ruiz 1:4ba95a6ae582 73
juan_ruiz 1:4ba95a6ae582 74 void rotina_emergencia()
juan_ruiz 1:4ba95a6ae582 75 {
juan_ruiz 1:4ba95a6ae582 76 if(botao_emergencia_estado == 0) motor_z = 0x00;
juan_ruiz 1:4ba95a6ae582 77 }
juan_ruiz 1:4ba95a6ae582 78
juan_ruiz 1:4ba95a6ae582 79 void rotida_velocidade_eixo_Z()
juan_ruiz 1:4ba95a6ae582 80 {
juan_ruiz 2:2547de0cde50 81 tempo_horario = -1*J_Z*0.0000028 +0.1875;
juan_ruiz 2:2547de0cde50 82 tempo_anti_horario = J_Z*0.000002785 +0.0025;
juan_ruiz 2:2547de0cde50 83 }
juan_ruiz 1:4ba95a6ae582 84
juan_ruiz 2:2547de0cde50 85 void rotida_deslocamento_eixo_Z()
juan_ruiz 2:2547de0cde50 86 {
juan_ruiz 2:2547de0cde50 87 deslocamento_horario_Z = (passo_fuso*pulsos_horario*passo_motor)/360;
juan_ruiz 2:2547de0cde50 88 deslocamento_anti_horario_Z = (passo_fuso*pulsos_anti_horario*passo_motor)/360;
juan_ruiz 2:2547de0cde50 89 deslocamento_total_Z = deslocamento_anti_horario_Z - deslocamento_horario_Z;
diogonac 5:5e0059e59cb2 90 }
diogonac 5:5e0059e59cb2 91
diogonac 6:0320c521b9e0 92 void rotida_botoes_IHM()
diogonac 6:0320c521b9e0 93 {
diogonac 6:0320c521b9e0 94
diogonac 6:0320c521b9e0 95 if(SELECT > 60000 & SELECT < 65000) valor_SELECT = 1;
diogonac 6:0320c521b9e0 96 else valor_SELECT = 0;
diogonac 6:0320c521b9e0 97
diogonac 6:0320c521b9e0 98
diogonac 6:0320c521b9e0 99 }
diogonac 6:0320c521b9e0 100
diogonac 6:0320c521b9e0 101
diogonac 5:5e0059e59cb2 102 void rotida_aciona_motor()
diogonac 5:5e0059e59cb2 103 {
diogonac 5:5e0059e59cb2 104
diogonac 5:5e0059e59cb2 105 if(31000 <= J_Z & J_Z <= 35000) {
diogonac 5:5e0059e59cb2 106
diogonac 5:5e0059e59cb2 107 motor_z = 0x00;
diogonac 5:5e0059e59cb2 108
diogonac 5:5e0059e59cb2 109 } else {
diogonac 5:5e0059e59cb2 110 if (J_Z > 31000) {
diogonac 5:5e0059e59cb2 111 for(i = 0; i < 4; i++) {
diogonac 5:5e0059e59cb2 112 motor_z = 1 << i;
diogonac 5:5e0059e59cb2 113 rotida_velocidade_eixo_Z();
diogonac 5:5e0059e59cb2 114 rotida_deslocamento_eixo_Z();
diogonac 5:5e0059e59cb2 115 wait(tempo_horario);
diogonac 5:5e0059e59cb2 116 pulsos_horario+=1;
diogonac 5:5e0059e59cb2 117 velocidade_Z = deslocamento_horario_Z/tempo_horario;
diogonac 5:5e0059e59cb2 118
diogonac 5:5e0059e59cb2 119 }
diogonac 5:5e0059e59cb2 120 }
diogonac 5:5e0059e59cb2 121
diogonac 5:5e0059e59cb2 122 if(J_Z < 35000) {
diogonac 5:5e0059e59cb2 123 for(i = 3; i > -1; i--) {
diogonac 5:5e0059e59cb2 124 motor_z = 1 << i;
diogonac 5:5e0059e59cb2 125 rotida_velocidade_eixo_Z();
diogonac 5:5e0059e59cb2 126 rotida_deslocamento_eixo_Z();
diogonac 5:5e0059e59cb2 127 wait(tempo_anti_horario);
diogonac 5:5e0059e59cb2 128 pulsos_anti_horario+=1;
diogonac 5:5e0059e59cb2 129 velocidade_Z = deslocamento_horario_Z/tempo_horario;
diogonac 5:5e0059e59cb2 130
diogonac 5:5e0059e59cb2 131 }
diogonac 5:5e0059e59cb2 132 }
diogonac 5:5e0059e59cb2 133 }
diogonac 5:5e0059e59cb2 134
diogonac 5:5e0059e59cb2 135
diogonac 0:4d11c8fe2ef9 136 }