LCD

Dependencies:   mbed TextLCD

Committer:
diogonac
Date:
Tue May 18 19:18:07 2021 +0000
Revision:
3:8e11b49b1b29
Parent:
main.cpp@2:2547de0cde50
Child:
4:cdd205f48898
Alteracao no tempo do LCD

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
juan_ruiz 1:4ba95a6ae582 4 Serial pc (USBTX, USBRX);
juan_ruiz 1:4ba95a6ae582 5
juan_ruiz 1:4ba95a6ae582 6 TextLCD lcd(D8, D9, D4, D5, D6, D7);
juan_ruiz 1:4ba95a6ae582 7 AnalogIn eixo_Z(A0);
juan_ruiz 1:4ba95a6ae582 8 InterruptIn posicao_salva(PA_15);
juan_ruiz 1:4ba95a6ae582 9 InterruptIn botao_emergencia(PB_10);
juan_ruiz 1:4ba95a6ae582 10
juan_ruiz 1:4ba95a6ae582 11 BusOut motor_z(PB_1, PB_15, PB_14, PB_13);
diogonac 0:4d11c8fe2ef9 12
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 0:4d11c8fe2ef9 23
juan_ruiz 1:4ba95a6ae582 24 void rotina_posicao_salva(void);
juan_ruiz 1:4ba95a6ae582 25 void rotina_emergencia(void);
juan_ruiz 1:4ba95a6ae582 26 void rotida_velocidade_eixo_Z(void);
juan_ruiz 2:2547de0cde50 27 void rotida_deslocamento_eixo_Z (void);
diogonac 0:4d11c8fe2ef9 28
juan_ruiz 2:2547de0cde50 29
diogonac 0:4d11c8fe2ef9 30
diogonac 0:4d11c8fe2ef9 31 int main()
diogonac 0:4d11c8fe2ef9 32 {
diogonac 0:4d11c8fe2ef9 33
juan_ruiz 1:4ba95a6ae582 34 pc.baud(115200);
juan_ruiz 1:4ba95a6ae582 35 motor_z = 0x00;
juan_ruiz 1:4ba95a6ae582 36 posicao_salva.rise(&rotina_posicao_salva);
juan_ruiz 1:4ba95a6ae582 37 botao_emergencia.rise(&rotina_emergencia);
juan_ruiz 1:4ba95a6ae582 38
diogonac 0:4d11c8fe2ef9 39 while(1) {
diogonac 0:4d11c8fe2ef9 40
juan_ruiz 2:2547de0cde50 41 J_Z = eixo_Z.read_u16();
juan_ruiz 1:4ba95a6ae582 42 posicao_salva_estado = posicao_salva.read();
juan_ruiz 1:4ba95a6ae582 43 botao_emergencia_estado = botao_emergencia.read();
juan_ruiz 2:2547de0cde50 44
juan_ruiz 2:2547de0cde50 45 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 46
juan_ruiz 2:2547de0cde50 47 lcd.locate(0,0);
juan_ruiz 2:2547de0cde50 48 lcd.printf("Posicao Z:");
juan_ruiz 2:2547de0cde50 49 lcd.locate(0,1);
juan_ruiz 2:2547de0cde50 50 lcd.printf("%fmm",deslocamento_total_Z);
juan_ruiz 2:2547de0cde50 51
juan_ruiz 2:2547de0cde50 52 if(31000 <= J_Z & J_Z <= 35000) {
juan_ruiz 1:4ba95a6ae582 53
juan_ruiz 1:4ba95a6ae582 54 motor_z = 0x00;
juan_ruiz 1:4ba95a6ae582 55
juan_ruiz 1:4ba95a6ae582 56 } else {
juan_ruiz 2:2547de0cde50 57 if (J_Z > 31000) {
juan_ruiz 1:4ba95a6ae582 58 for(i = 0; i < 4; i++) {
juan_ruiz 1:4ba95a6ae582 59 motor_z = 1 << i;
juan_ruiz 2:2547de0cde50 60 rotida_velocidade_eixo_Z();
juan_ruiz 2:2547de0cde50 61 rotida_deslocamento_eixo_Z();
juan_ruiz 2:2547de0cde50 62 wait(tempo_horario);
juan_ruiz 2:2547de0cde50 63 pulsos_horario+=1;
juan_ruiz 2:2547de0cde50 64 velocidade_Z = deslocamento_horario_Z/tempo_horario;
juan_ruiz 2:2547de0cde50 65
juan_ruiz 1:4ba95a6ae582 66 }
juan_ruiz 1:4ba95a6ae582 67 }
juan_ruiz 1:4ba95a6ae582 68
juan_ruiz 2:2547de0cde50 69 if(J_Z < 35000) {
juan_ruiz 1:4ba95a6ae582 70 for(i = 3; i > -1; i--) {
juan_ruiz 1:4ba95a6ae582 71 motor_z = 1 << i;
juan_ruiz 2:2547de0cde50 72 rotida_velocidade_eixo_Z();
juan_ruiz 2:2547de0cde50 73 rotida_deslocamento_eixo_Z();
juan_ruiz 2:2547de0cde50 74 wait(tempo_anti_horario);
juan_ruiz 2:2547de0cde50 75 pulsos_anti_horario+=1;
juan_ruiz 2:2547de0cde50 76 velocidade_Z = deslocamento_horario_Z/tempo_horario;
juan_ruiz 2:2547de0cde50 77
juan_ruiz 1:4ba95a6ae582 78 }
juan_ruiz 1:4ba95a6ae582 79 }
juan_ruiz 1:4ba95a6ae582 80 }
diogonac 3:8e11b49b1b29 81
diogonac 3:8e11b49b1b29 82 wait_ms(100);
diogonac 3:8e11b49b1b29 83 lcd.cls();
juan_ruiz 1:4ba95a6ae582 84 }
juan_ruiz 1:4ba95a6ae582 85 }
juan_ruiz 1:4ba95a6ae582 86
juan_ruiz 1:4ba95a6ae582 87
juan_ruiz 1:4ba95a6ae582 88 void rotina_posicao_salva()
juan_ruiz 1:4ba95a6ae582 89 {
juan_ruiz 2:2547de0cde50 90 if(posicao_salva_estado == 0) pegaZ = J_Z;
juan_ruiz 1:4ba95a6ae582 91 else pegaZ = 0;
juan_ruiz 1:4ba95a6ae582 92 }
juan_ruiz 1:4ba95a6ae582 93
juan_ruiz 1:4ba95a6ae582 94 void rotina_emergencia()
juan_ruiz 1:4ba95a6ae582 95 {
juan_ruiz 1:4ba95a6ae582 96 if(botao_emergencia_estado == 0) motor_z = 0x00;
juan_ruiz 1:4ba95a6ae582 97 }
juan_ruiz 1:4ba95a6ae582 98
juan_ruiz 1:4ba95a6ae582 99 void rotida_velocidade_eixo_Z()
juan_ruiz 1:4ba95a6ae582 100 {
juan_ruiz 2:2547de0cde50 101 tempo_horario = -1*J_Z*0.0000028 +0.1875;
juan_ruiz 2:2547de0cde50 102 tempo_anti_horario = J_Z*0.000002785 +0.0025;
juan_ruiz 2:2547de0cde50 103 }
juan_ruiz 1:4ba95a6ae582 104
juan_ruiz 2:2547de0cde50 105 void rotida_deslocamento_eixo_Z()
juan_ruiz 2:2547de0cde50 106 {
juan_ruiz 2:2547de0cde50 107 deslocamento_horario_Z = (passo_fuso*pulsos_horario*passo_motor)/360;
juan_ruiz 2:2547de0cde50 108 deslocamento_anti_horario_Z = (passo_fuso*pulsos_anti_horario*passo_motor)/360;
juan_ruiz 2:2547de0cde50 109 deslocamento_total_Z = deslocamento_anti_horario_Z - deslocamento_horario_Z;
diogonac 0:4d11c8fe2ef9 110 }