Update

Dependencies:   mbed mbed-rtos X_NUCLEO_IHM02A1

ST_SOLO.cpp

Committer:
hagenrap
Date:
2019-05-10
Revision:
37:a74d377d8f74
Parent:
36:ba2e7eddbafa
Child:
38:3776ee18e56f

File content as of revision 37:a74d377d8f74:

#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 DigitalIn LS_1;
extern DigitalIn LS_2;
extern DigitalIn LS_3;

extern L6470  **motors;
extern L6470B **motors2;

extern XNucleoIHM02A1 *x_nucleo_ihm02a1_1;
extern XNucleoIHM02A12 *x_nucleo_ihm02a1_2;

extern DigitalIn  mybutton;

extern PwmOut Cutter_1;
extern PwmOut Cutter_2;
extern PwmOut Spleisser_1;
extern PwmOut Spleisser_2;

int material = 0;
float zeit = 0;
int val_LS1 = 0;
int val_LS2 = 0;
int val_LS3 = 0;

int count = 0;


Timer machNichts;

void enable_Buttons()
{
    buttonSTART_enabled_cb();
    buttonAbbruch_enabled_cb();
}

void entry_SOLO_DEFAULT()
{
    StatusSOLO = SOLO_DEFAULT;
    DisplaySendeBefehl(0x01);
    machNichts.stop();
    machNichts.reset();
    zeit = 0;
    val_LS1 = LS_1.read();
    if(val_LS1 == 0) {
        while(val_LS1 == 0) {
            Stepper_1_Run('R', 500);
            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_2_Run('V', 500);
            gotoxy(1, 1);
            DisplaySendeString("ABBRUCH:");
            gotoxy(1, 2);
            DisplaySendeString("Filament links");
            gotoxy(1, 4);
            DisplaySendeString("entfernen");
            val_LS3 = LS_3.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()
{
    DisplaySendeBefehl(0x01);
    StatusSOLO = SOLO_Spleissen;
}

void EntrySOLO()
{
    switch(StatusSOLO) {
        case SOLO_DEFAULT:

            enable_Buttons();

            Stepper_1_Leerlauf();
            Stepper_2_Leerlauf();


            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_EinlegenOUT();
                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', 100);
            } 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();
            }

            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_2_Run('R', 100);        /// das isch no Scheisse
            } else if (val_LS3 == 0) {
                Stepper_2_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("Spleissen");


            motors[1]->set_max_speed(50);
            //motors[1]->set_acceleration(5);
            Stepper_2_Move('R', 1.3*400);
            StatusSOLO = SOLO_FERTIG;

            break;

        case SOLO_FERTIG:

            motors[1]->set_max_speed(50);
            motors[1]->set_acceleration(10);
            motors[0]->set_max_speed(55);
            motors[0]->set_acceleration(10);

            //motors[0]->move(StepperMotor::FWD, 0.2*400*128);
            motors[1]->move(StepperMotor::FWD, 0.05*400*128);
            
            //Set_Cutter(400, 200, 4);

            motors[1]->wait_while_active();

            

            motors[1]->set_max_speed(300);
            motors[1]->set_acceleration(300);
            motors[0]->set_max_speed(400);
            motors[0]->set_acceleration(400);

            motors[0]->move(StepperMotor::FWD, 1.2*400*128);
            motors[1]->move(StepperMotor::FWD, 1*400*128);
            motors[1]->wait_while_active();
            Stepper_2_Leerlauf();
            /*
            motors[0]->perform_prepared_actions();
            motors2[0]->perform_prepared_actions();
            */




            //motors2[0]->perform_prepared_actions();

            //Stepper_3_Move('V', 1.3*400);





            /*
            Stepper_3_Move('V', 1*400);
            Stepper_1_Move('V', 1*400);
            */

            StatusSOLO = SOLO_STOERUNG;
            break;

        case SOLO_STOERUNG:
            gotoxy(1, 1);
            DisplaySendeString("fertigfertig");
            gotoxy(1, 3);
            DisplaySendeString("fertigfertig");
            break;

    }
}