IHM for Industrial Inspection platform Developed for PIMS project / Institut d'Optique Graduate School / LEnsE
Dependents: PIMS_VisionIndus_IHM
Vision_Indus_IHM.cpp
- Committer:
- villemejane
- Date:
- 2021-11-19
- Revision:
- 1:a7281be87607
- Parent:
- 0:d70b8a6bed22
File content as of revision 1:a7281be87607:
/****************************************************************************/ /* Vision Industrielle IHM */ /****************************************************************************/ /* LEnsE / Julien VILLEMEJANE / Institut d'Optique Graduate School */ /****************************************************************************/ /* Library - Vision_Indus_IHM.cpp file */ /****************************************************************************/ /* Tested on DISCO-F746 / 14th nov 2021 */ /****************************************************************************/ #include "Vision_Indus_IHM.h" /* Inputs and Outputs */ // Flex DigitalOut flex1_out(D4); DigitalOut flex2_out(D5); // Dome DigitalOut dome_out(D11); // Rasant DigitalOut rasant_out(D12); // Effi-RGB DigitalOut ringRGB_R_out(D6); DigitalOut ringRGB_G_out(D7); DigitalOut ringRGB_B_out(D8); // Conveyor PwmOut conveyor_speed(D14); DigitalOut conveyor_dir(D15); DigitalOut conveyor_m0(D9); DigitalOut conveyor_m1(D10); DigitalOut conveyor_enable(D3); DigitalOut conveyor_reset(D13); DigitalIn conveyor_fault(D2); /* Graphical objects */ Label title(240, 2, "Vision Industrielle", Label::CENTER, Font24); Label subtitle(240, 25, "LEnsE / 2021", Label::CENTER, Font16); // All On-Off Button light_on(250, 65, 80, 40, "ALL ON"); Button light_off(340, 65, 80, 40, "ALL OFF"); uint8_t all_on_active; // EFFI-Ring Label ringRGB(10, 50, "EFFI-Ring RGB", Label::LEFT); Button ringRGB_R(10, 65, 50, 40, "RED"); Button ringRGB_G(70, 65, 50, 40, "GREEN"); Button ringRGB_B(130, 65, 50, 40, "BLUE"); uint8_t ringRGB_R_active; uint8_t ringRGB_G_active; uint8_t ringRGB_B_active; // EFFI-Dome Label dome(10, 115, "EFFI-Dome W", Label::LEFT); Button dome_W(10, 130, 80, 40, "Dome"); uint8_t dome_active; // EFFI-Dome Label rasant(100, 115, "EFFI-Rlla R", Label::LEFT); Button rasant_R(100, 130, 80, 40, "Rasant"); uint8_t rasant_active; // EFFI-Flex Label flex1(10, 180, "EFFI-Flex W", Label::LEFT); Button flex1_W(10, 195, 80, 40, "Flex1"); uint8_t flex1_active; Button flex2_W(100, 195, 80, 40, "Flex2"); uint8_t flex2_active; // Conveyor Label conveyor(250, 200, "Convoyeur / Vitesse", Label::LEFT); NumericLabel<int> conv_speed_lab(400, 200, "V = ", Label::LEFT); SeekBar conv_speed(250, 250, 150, 0, 100, 0, "0", "", "100%"); /* initIHM */ void initIHM(void){ all_on_active = 0; light_off.Draw(0xFFFFFFFF, 0xFF000000); light_on.Draw(COLOR_OFF, 0xFFFFFFFF); /* EFFI-Ring */ ringRGB_R_active = 0; ringRGB_R_out = 1; ringRGB_R.Draw(COLOR_OFF); ringRGB_G_active = 0; ringRGB_G_out = 1; ringRGB_G.Draw(COLOR_OFF); ringRGB_B_active = 0; ringRGB_B_out = 1; ringRGB_B.Draw(COLOR_OFF); /* EFFI-Dome */ dome_active = 0; dome_out = 1; dome_W.Draw(COLOR_OFF); /* EFFI-Rlla */ rasant_active = 0; rasant_out = 1; rasant_R.Draw(COLOR_OFF); /* EFFI-Flex */ flex1_active = 0; flex1_out = 1; flex1_W.Draw(COLOR_OFF); flex2_active = 0; flex2_out = 1; flex2_W.Draw(COLOR_OFF); /* Conveyor */ int8_t x = (int8_t)conv_speed.GetValue(); conv_speed_lab.Draw("%3d m/s", x); conveyor_enable = 1; conveyor_reset = 1; conveyor_m0 = 0; conveyor_m1 = 0; conveyor_speed.period_us(1000); conveyor_dir = CONV_DIR_FW; conveyor_speed.write(0); // STOP } /* updateIHM */ void updateIHM(void){ if (light_on.Touched()){ all_on_active = 1; } if(all_on_active == 1){ light_off.Draw(COLOR_OFF, 0xFFFFFFFF); light_on.Draw(0xFFFFFFFF, 0xFF000000); ringRGB_R_active = 1; ringRGB_R_out = 0; ringRGB_R.Draw(0xFFFF0000); ringRGB_G_active = 1; ringRGB_G_out = 0; ringRGB_G.Draw(0xFF33DD33, 0xFF000000); ringRGB_B_active = 1; ringRGB_B_out = 0; ringRGB_B.Draw(0xFF0000FF); dome_active = 1; dome_out = 0; dome_W.Draw(0xFFFFFFFF, 0xFF000000); rasant_active = 1; rasant_out = 0; rasant_R.Draw(0xFFFF0000); flex1_active = 1; flex1_out = 0; flex1_W.Draw(0xFFEEEEEE, 0xFF000000); flex2_active = 1; flex2_out = 0; flex2_W.Draw(0xFFEEEEEE, 0xFF000000); all_on_active = 0; } else{ light_off.Draw(0xFFFFFFFF, 0xFF000000); light_on.Draw(COLOR_OFF, 0xFFFFFFFF); if (light_off.Touched()){ all_on_active = 0; light_off.Draw(0xFFFFFFFF, 0xFF000000); light_on.Draw(COLOR_OFF, 0xFFFFFFFF); } if (ringRGB_R.Touched()){ if(ringRGB_R_active){ ringRGB_R_active = 0; ringRGB_R_out = 1; all_on_active = 0; ringRGB_R.Draw(COLOR_OFF); } else{ ringRGB_R_active = 1; ringRGB_R_out = 0; ringRGB_R.Draw(0xFFFF0000); } } if (ringRGB_G.Touched()){ if(ringRGB_G_active){ ringRGB_G_active = 0; ringRGB_G_out = 1; all_on_active = 0; ringRGB_G.Draw(COLOR_OFF, 0xFFFFFFFF); } else{ ringRGB_G_active = 1; ringRGB_G_out = 0; ringRGB_G.Draw(0xFF33DD33, 0xFF000000); } } if (ringRGB_B.Touched()){ if(ringRGB_B_active){ ringRGB_B_active = 0; ringRGB_B_out = 1; all_on_active = 0; ringRGB_B.Draw(COLOR_OFF); } else{ ringRGB_B_active = 1; ringRGB_B_out = 0; ringRGB_B.Draw(0xFF0000FF); } } if (dome_W.Touched()){ if(dome_active){ dome_active = 0; dome_out = 1; all_on_active = 0; dome_W.Draw(COLOR_OFF, 0xFFFFFFFF); } else{ dome_active = 1; dome_out = 0; dome_W.Draw(0xFFFFFFFF, 0xFF000000); } } if (rasant_R.Touched()){ if(rasant_active){ rasant_active = 0; rasant_out = 1; all_on_active = 0; rasant_R.Draw(COLOR_OFF); } else{ rasant_active = 1; rasant_out = 0; rasant_R.Draw(0xFFFF0000); } } if (flex1_W.Touched()){ if(flex1_active){ flex1_active = 0; flex1_out = 1; all_on_active = 0; flex1_W.Draw(COLOR_OFF, 0xFFFFFFFF); } else{ flex1_active = 1; flex1_out = 0; flex1_W.Draw(0xFFEEEEEE, 0xFF000000); } } if (flex2_W.Touched()){ if(flex2_active){ flex2_active = 0; flex2_out = 1; all_on_active = 0; flex2_W.Draw(COLOR_OFF, 0xFFFFFFFF); } else{ flex2_active = 1; flex2_out = 0; flex2_W.Draw(0xFFEEEEEE, 0xFF000000); } } } if (conv_speed.Slide()) { int8_t x = (int8_t)conv_speed.GetValue(); conv_speed_lab.Draw("%3d", x); } } /* updateIHM */ void moveConveyor(char dir, int speed_us){ conveyor_enable = 0; conveyor_speed.period_us(speed_us); conveyor_dir = dir; conveyor_speed.write(0.5); } /* updateIHM */ void stopConveyor(void){ conveyor_enable = 1; conveyor_speed.write(0); }