Update

Dependencies:   mbed mbed-rtos X_NUCLEO_IHM02A1

Revision:
36:ba2e7eddbafa
Parent:
35:758191d5c6e1
Child:
37:a74d377d8f74
--- a/ST_SOLO.cpp	Sun May 05 16:18:20 2019 +0000
+++ b/ST_SOLO.cpp	Wed May 08 09:35:40 2019 +0000
@@ -1,13 +1,77 @@
 #include "SETUP.h"
 
 
+/*** BEISPIEL FÜR RAPHI
+if(evTasterStart == 1)
+{
+
+ entryEinlegenIn();
+ StatusSOLO=SOLO_EinlegenIN;
+ }*/
+
+/*
+if (count < 2) {
+    Set_Servo_Bad_Fil();
+    count = count + 1;
+} else {
+
+}
+*/
+
+/*
+Set_Servo_Bad_Fil();
+Thread::wait(1000);
+Set_Servo_Good_Fil();
+*/
+/*
+if (buttonSTART_pressed == true)
+{
+    printf("BUTTON_START\n\r");
+    Thread::wait(1000);
+    buttonSTART_pressed = false;
+}
+if (buttonAbbruch_pressed == true)
+{
+    printf("BUTTON_ABBRUCH\n\r");
+    Thread::wait(1000);
+    buttonAbbruch_pressed = false;
+}
+*/
+/*
+printf("SOLO\n\r");
+printf(" LS1 %d\n\r", LS_1.read());
+printf(" LS2 %d\n\r", LS_2.read());
+printf(" LS3 %d\n\r", LS_3.read());
+*/
+/*
+printf("SOLO\n\r");
+motors[0]->run(StepperMotor::FWD, 500);
+Thread::wait(1000);
+*/
+
+/*
+motors[0]->run(StepperMotor::FWD, 500);
+*/
+/*
+if(mybutton.read() == 0)
+{
+    printf("Blitz\n\r");
+    Set_Cutter(500, 2000, );
+
+}
+*/
+
+
+
+
+
 int StatusSOLO=SOLO_DEFAULT;
 extern PwmOut Servo;
 extern volatile bool buttonSTART_pressed;
 extern volatile bool buttonSTART_enabled;
 
 extern volatile bool buttonAbbruch_pressed;
-extern volatile bool buttonAbbruch_enabled; 
+extern volatile bool buttonAbbruch_enabled;
 
 extern DigitalIn LS_1;
 extern DigitalIn LS_2;
@@ -22,103 +86,286 @@
 extern PwmOut Spleisser_1;
 extern PwmOut Spleisser_2;
 
-int count;
+int material = 0;
+float zeit = 0;
+int val_LS1 = 0;
+int val_LS2 = 0;
+int val_LS3 = 0;
+
+Timer machNichts;
+
+void enable_Buttons()
+{
+    buttonSTART_enabled_cb();
+    buttonAbbruch_enabled_cb();
+}
+
+void entry_SOLO_DEFAULT()
+{
+    StatusSOLO = SOLO_DEFAULT;
+    machNichts.stop();
+    machNichts.reset();
+    zeit = 0;
+    val_LS1 = LS_1.read();
+    if(val_LS1 == 0) {
+        while(val_LS1 == 0) {
+            Stepper_1_Run('R', 200);
+            DisplaySendeBefehl(0x01);
+            DisplaySendeBefehl(0x0C);
+            gotoxy(1, 1);
+            DisplaySendeString("ABBRUCH:");
+            gotoxy(1, 2);
+            DisplaySendeString("Filament rechts");
+            gotoxy(1, 4);
+            DisplaySendeString("entfernen");
+            val_LS1 = LS_1.read();
+        }
+    }
+    val_LS3 = LS_3.read();
+    if(val_LS3 == 0) {
+        while(val_LS3 == 0) {
+            Stepper_3_Run('V', 200);
+            DisplaySendeBefehl(0x01);
+            DisplaySendeBefehl(0x0C);
+            gotoxy(1, 1);
+            DisplaySendeString("ABBRUCH:");
+            gotoxy(1, 2);
+            DisplaySendeString("Filament links");
+            gotoxy(1, 4);
+            DisplaySendeString("entfernen");
+            val_LS1 = LS_1.read();
+        }
+    }
+    DisplaySendeBefehl(0x01);
+}
+
+void entry_SOLO_EinlegenIN()
+{
+    StatusSOLO = SOLO_EinlegenIN;
+    DisplaySendeBefehl(0x01);
+    machNichts.start();
+    Set_Servo_Good_Fil();
+
+}
+
+void entry_SOLO_INtoSPLEISSER()
+{
+    StatusSOLO = SOLO_INtoSPLEISSER;
+    DisplaySendeBefehl(0x01);
+    machNichts.stop();
+    machNichts.reset();
+    zeit = 0;
+    machNichts.start();
+    enable_Buttons();
+}
+
+void entry_SOLO_EinlegenOUT()
+{
+    StatusSOLO = SOLO_EinlegenOUT;
+    DisplaySendeBefehl(0x01);
+    machNichts.stop();
+    machNichts.reset();
+    zeit = 0;
+    machNichts.start();
+    enable_Buttons();
+}
+
+void entry_SOLO_OUTtoSPLEISSER()
+{
+    StatusSOLO = SOLO_OUTtoSPLEISSER;
+    DisplaySendeBefehl(0x01);
+    machNichts.stop();
+    machNichts.reset();
+    zeit = 0;
+    machNichts.start();
+    enable_Buttons();
+}
+
+void entry_SOLO_Spleissen()
+{
+    StatusSOLO = SOLO_Spleissen;
+}
 
 void EntrySOLO()
 {
-    switch(StatusSOLO)
-    {     
-       case SOLO_DEFAULT:
-       /*** BEISPIEL FÜR RAPHI
-       if(evTasterStart == 1)
-       {
-        
-        entryEinlegenIn();
-        StatusSOLO=SOLO_EinlegenIN;
-        }*/
-        
-        /*
-        if (count < 2) {
-            Set_Servo_Bad_Fil();
-            count = count + 1;
-        } else {
+    switch(StatusSOLO) {
+        case SOLO_DEFAULT:
+
+            enable_Buttons();
+
+            Stepper_1_Leerlauf();
+            Stepper_3_Leerlauf();
             
-        }
-        */
-        
-        /*
-        Set_Servo_Bad_Fil();
-        Thread::wait(1000);
-        Set_Servo_Good_Fil();
-        */
-        /*
-        if (buttonSTART_pressed == true)
-        {
-            printf("BUTTON_START\n\r");
-            Thread::wait(1000);
-            buttonSTART_pressed = false;
-        }
-        if (buttonAbbruch_pressed == true)
-        {
-            printf("BUTTON_ABBRUCH\n\r");
-            Thread::wait(1000);
-            buttonAbbruch_pressed = false;
-        }
-        */
-        /*
-        printf("SOLO\n\r");
-        printf(" LS1 %d\n\r", LS_1.read());
-        printf(" LS2 %d\n\r", LS_2.read());
-        printf(" LS3 %d\n\r", LS_3.read());
-        */
-        /*
-        printf("SOLO\n\r");
-        motors[0]->run(StepperMotor::FWD, 500);
-        Thread::wait(1000);
-        */
-        
-        /*
-        motors[0]->run(StepperMotor::FWD, 500);
-        if(mybutton.read() == 0)
-        {
-            printf("Blitz\n\r");
-            Set_Cutter(500, 2000, 6);
+
+            DisplaySendeBefehl(0x0C);
+            gotoxy(1, 1);
+            DisplaySendeString("Modus: SOLO-Betrieb");
+            if(material == 1) {
+                gotoxy(1, 4);
+                DisplaySendeString("Start            ABS");
+            } else if(material == 0) {
+                gotoxy(1, 4);
+                DisplaySendeString("Start            PLA");
+            }
+
+            if(buttonAbbruch_pressed == true) {
+                buttonAbbruch_pressed = false;
+                buttonAbbruch_diable_cb();
+                material = !material;
+            }
+
+
+            if(buttonSTART_pressed == true) {
+                buttonSTART_pressed = false;
+                buttonSTART_diable_cb();
+                entry_SOLO_EinlegenIN();
+            }
+            break;
+
+
+
+
+        case SOLO_EinlegenIN:
+
+            //Servo_Off();
+
+            DisplaySendeBefehl(0x0C);
+            gotoxy(1, 1);
+            DisplaySendeString("Filament rechts");
+            gotoxy(1, 3);
+            DisplaySendeString("einlegen");
+            gotoxy(1, 4);
+            DisplaySendeString("             Abbruch");
+
+
+            if(buttonAbbruch_pressed == true) {
+                buttonAbbruch_pressed = false;
+                buttonAbbruch_diable_cb();
+                entry_SOLO_DEFAULT();
+            }
+
+            zeit = machNichts.read();
+            if(zeit >= WARTEZEIT) {
+
+                entry_SOLO_DEFAULT();
+            }
+
+
+            val_LS2 = LS_2.read();
+            if(val_LS2 == 1) {
+                Stepper_1_Run('V', 200);
+            } else if (val_LS2 == 0) {
+                Stepper_1_Stop();
+                entry_SOLO_INtoSPLEISSER();
+            }
+
+            break;
+
+
+
+
+        case SOLO_INtoSPLEISSER:
+            DisplaySendeBefehl(0x0C);
+            gotoxy(1, 1);
+            DisplaySendeString("Filament rechts");
+            gotoxy(1, 3);
+            DisplaySendeString("bereit");
+            gotoxy(1, 4);
+            DisplaySendeString("Weiter       Abbruch");
+
+            zeit = machNichts.read();
+            if(zeit >= WARTEZEIT) {
+
+                entry_SOLO_DEFAULT();
+            }
 
-        }
-        
-        DisplaySendeBefehl(0x0C);
-        gotoxy(1, 1);
-        DisplaySendeString("Fuck You");
-        gotoxy(1, 3);
-        DisplaySendeString("Fuck You");
-        */
-        printf("SOLO\n\r");
-        Thread::wait(1000);
-        
-       break;
-       
-       case SOLO_EinlegenIN:
-       break;
-       
-       case SOLO_INtoSPLEISSER:
-       break;
-       
-       case SOLO_EinlegenOUT:
-       break;
-       
-       case SOLO_OUTtoSPLEISSER:
-       break;
-       
-       case SOLO_Spleissen:
-       break;
-       
-       case SOLO_FERTIG:
-       break;
-       
-       case SOLO_STOERUNG:
-       break;
-             
-    }   
+            if(buttonAbbruch_pressed == true) {
+                buttonAbbruch_pressed = false;
+                buttonAbbruch_diable_cb();
+                entry_SOLO_DEFAULT();
+            }
+
+            if(buttonSTART_pressed == true) {
+                buttonSTART_pressed = false;
+                buttonSTART_diable_cb();
+                entry_SOLO_EinlegenOUT();
+            }
+
+            break;
+
+        case SOLO_EinlegenOUT:
+            DisplaySendeBefehl(0x0C);
+            gotoxy(1, 1);
+            DisplaySendeString("Filament links");
+            gotoxy(1, 3);
+            DisplaySendeString("einlegen");
+            gotoxy(1, 4);
+            DisplaySendeString("             Abbruch");
+
+            if(buttonAbbruch_pressed == true) {
+                buttonAbbruch_pressed = false;
+                buttonAbbruch_diable_cb();
+                entry_SOLO_DEFAULT();
+            }
+
+            zeit = machNichts.read();
+            if(zeit >= WARTEZEIT) {
+
+                entry_SOLO_DEFAULT();
+            }
+
+            val_LS3 = LS_3.read();
+            if(val_LS3 == 1) {
+                Stepper_3_Run('R', 200);        /// das isch no Scheisse
+            } else if (val_LS3 == 0) {
+                Stepper_3_Stop();
+                entry_SOLO_OUTtoSPLEISSER();
+            }
+            break;
+
+        case SOLO_OUTtoSPLEISSER:
+            DisplaySendeBefehl(0x0C);
+            gotoxy(1, 1);
+            DisplaySendeString("Filament links");
+            gotoxy(1, 3);
+            DisplaySendeString("bereit");
+            gotoxy(1, 4);
+            DisplaySendeString("Spleissen    Abbruch");
+
+            zeit = machNichts.read();
+            if(zeit >= WARTEZEIT) {
+
+                entry_SOLO_DEFAULT();
+            }
+
+            if(buttonAbbruch_pressed == true) {
+                buttonAbbruch_pressed = false;
+                buttonAbbruch_diable_cb();
+                entry_SOLO_DEFAULT();
+            }
+
+            if(buttonSTART_pressed == true) {
+                buttonSTART_pressed = false;
+                buttonSTART_diable_cb();
+                entry_SOLO_Spleissen();
+            }
+            break;
+
+        case SOLO_Spleissen:
+            DisplaySendeBefehl(0x0C);
+            gotoxy(1, 1);
+            DisplaySendeString("Spleissen");
+            gotoxy(1, 3);
+            DisplaySendeString("Spleissent");
+            break;
+
+        case SOLO_FERTIG:
+            break;
+
+        case SOLO_STOERUNG:
+            break;
+
+    }
 }