Projeto Mecatrônico
/
ProjetoMecatronico
testando
Diff: main_PM.cpp
- Revision:
- 87:6bba4ab5a623
- Parent:
- 85:10dec681c389
- Child:
- 88:bae82f6f91b9
--- a/main_PM.cpp Mon Jun 08 15:10:34 2020 +0000 +++ b/main_PM.cpp Mon Jun 08 16:27:27 2020 +0000 @@ -24,9 +24,9 @@ float altura_solta = 50; //pinos usados pelos botoes de fim de curso -DigitalIn fdc_x(PC_10); -DigitalIn fdc_y(PC_11); -DigitalIn fdc_z(PC_12); +InterruptIn fdc_x(PC_10); +InterruptIn fdc_y(PC_11); +InterruptIn fdc_z(PC_12); //Iterrupcao botao de emergência InterruptIn interrupcao(PB_11); @@ -81,6 +81,26 @@ if (t_8 == 0)return('8'); if (t_9 == 0)return('9'); return('k');} + +//funcoes de fim de curso por interrupção +void lim_x(){for(int i = 0; i < 4; i++){TextLCD lcd(D4, D5, D6, D7, D8, D9); + eixox = parado[i];wait(t_motor); + lcd.cls();lcd.printf("Limite de x atingido"); + lcd.locate(0,2);lcd.printf("Pressione 0 para continuar"); + est_x = 1;}} + +void lim_y(){for(int i = 0; i < 4; i++){TextLCD lcd(D4, D5, D6, D7, D8, D9); + eixoy = parado[i];wait(t_motor); + lcd.cls();lcd.printf("Limite de y atingido"); + lcd.locate(0,2);lcd.printf("Pressione 0 para continuar"); + est_y = 1;}} + +void lim_z(){for(int i = 0; i < 4; i++){TextLCD lcd(D4, D5, D6, D7, D8, D9); + eixoz = parado[i];wait(t_motor); + lcd.cls();lcd.printf("Limite de z atingido"); + lcd.locate(0,2);lcd.printf("Pressione 0 para continuar"); + est_z = 1;}} +void reseta_eixo(){est_x = 0;est_y = 0;est_z = 0;} //funcao de movimentacao dos motores void mov_x_menos(){for(int i = 0; i < 4; i++){eixox = antihor[i];wait(t_motor);coord_x -= (5.625*5/32)/360;}} @@ -257,7 +277,13 @@ //main int main() { - interrupcao.fall(&emergencia); + interrupcao.fall(&emergencia); + fdc_x.fall(&lim_x); + fdc_y.fall(&lim_y); + fdc_z.fall(&lim_z); + fdc_x.rise(&reseta_eixo); + fdc_y.rise(&reseta_eixo); + fdc_z.rise(&reseta_eixo); int volume; //variaveis que precisam ser construídas de modo global int volume_solta; int diametro_solta;