testando

Dependencies:   mbed TextLCD2

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;