Projeto Mecatrônico
/
LCD_IHM
LCD
IHM.cpp@6:0320c521b9e0, 2021-05-20 (annotated)
- 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?
User | Revision | Line number | New 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 | } |