Alberto Terrazas / Mbed 2 deprecated Lupe

Dependencies:   mbed

Committer:
papaco
Date:
Wed Feb 20 15:35:56 2019 +0000
Revision:
4:379e05b2fc0d
Parent:
3:dd5c9690ed0d
Child:
5:fe1e88d6b0cb

        

Who changed what in which revision?

UserRevisionLine numberNew contents of line
papaco 0:b47aaa131075 1
papaco 0:b47aaa131075 2 #include "mbed.h"
papaco 0:b47aaa131075 3 #include "pinout.h"
papaco 0:b47aaa131075 4
papaco 0:b47aaa131075 5 #include "CUTTER.h"
papaco 0:b47aaa131075 6 #include "EXTRUDER.h"
papaco 0:b47aaa131075 7 #include "GRIDDLE.h"
papaco 0:b47aaa131075 8 #include "INTERFACE.h"
papaco 0:b47aaa131075 9 #include "MACHINE.h"
papaco 0:b47aaa131075 10 #include "OVEN.h"
papaco 0:b47aaa131075 11 #include "TORTILLA.h"
papaco 0:b47aaa131075 12
papaco 0:b47aaa131075 13 Ticker timer;
papaco 0:b47aaa131075 14 INTERFACE interface(StartStopPin,StartStopRPin,StartStopGPin,StartStopBPin,TortillaPin,TempReadyPin);
papaco 0:b47aaa131075 15 EXTRUDER extruder(ExtruderStartPin,ExtruderPWMPin);
papaco 0:b47aaa131075 16 CUTTER cutter(CutterUpPin,CutterDownPin,CutterMotorDirectionPin,CutterMotorEnablePin);
papaco 0:b47aaa131075 17 GRIDDLE griddle(GriddlePWMPin,GriddleUpPin,GriddleDownPin,GriddleHomePin);
papaco 0:b47aaa131075 18 OVEN oven(OvenPWMPin);
papaco 0:b47aaa131075 19 MACHINE Lupe(BandPWMPin,TempPin,CapsuleDoorPin,CartridgePin,CuttedPin);
papaco 1:4fb1de70cd4d 20 TORTILLA tortilla;
papaco 0:b47aaa131075 21
papaco 0:b47aaa131075 22 #if defined(DEBUG_MODE)
papaco 0:b47aaa131075 23 static Serial pc(USBTX, USBRX);
papaco 0:b47aaa131075 24 int DebugTimer=0;
papaco 0:b47aaa131075 25 #endif
papaco 0:b47aaa131075 26
papaco 1:4fb1de70cd4d 27 void MANAGER(void);
papaco 0:b47aaa131075 28 void init(void);
papaco 3:dd5c9690ed0d 29 void checkUp(void);
papaco 1:4fb1de70cd4d 30 void ExtruderProduction(void);
papaco 1:4fb1de70cd4d 31 void CutterProduction(void);
papaco 1:4fb1de70cd4d 32 void GriddleProduction(void);
papaco 1:4fb1de70cd4d 33 void OvenProduction(void);
papaco 0:b47aaa131075 34
papaco 0:b47aaa131075 35 int STATUS=-1;
papaco 4:379e05b2fc0d 36 int GENERAL_TIME=-1;
papaco 0:b47aaa131075 37
papaco 0:b47aaa131075 38
papaco 0:b47aaa131075 39 int main(){
papaco 0:b47aaa131075 40 #if defined(DEBUG_MODE)
papaco 0:b47aaa131075 41 pc.printf("\n\n***************************\nMCU variable init OK!\r\n");
papaco 0:b47aaa131075 42 #endif
papaco 0:b47aaa131075 43 init();
papaco 0:b47aaa131075 44 while(1);
papaco 0:b47aaa131075 45 }//main
papaco 0:b47aaa131075 46
papaco 0:b47aaa131075 47 void MANAGER(void){
papaco 0:b47aaa131075 48 GENERAL_TIME++;
papaco 0:b47aaa131075 49 /******************************STATUS CONTROL******************************/
papaco 0:b47aaa131075 50 if(STATUS==HOME){/****************************************************HOME*/
papaco 4:379e05b2fc0d 51 if(GENERAL_TIME==0){
papaco 0:b47aaa131075 52 #if defined(DEBUG_MODE)
papaco 0:b47aaa131075 53 pc.printf("\nHOME rutine start...\r\n");
papaco 0:b47aaa131075 54 #endif
papaco 0:b47aaa131075 55 interface.setLED(1,1,0);
papaco 0:b47aaa131075 56 interface.setFlash(true);
papaco 0:b47aaa131075 57 cutter.down();
papaco 0:b47aaa131075 58 extruder.Init();
papaco 0:b47aaa131075 59 griddle.Home();
papaco 0:b47aaa131075 60 oven.Home();
papaco 0:b47aaa131075 61 }//if
papaco 3:dd5c9690ed0d 62 if(cutter.available()&&griddle.isFree()){//falta temperatura
papaco 0:b47aaa131075 63 #if defined(DEBUG_MODE)
papaco 0:b47aaa131075 64 pc.printf("\nHOME rutine end...\r\n");
papaco 0:b47aaa131075 65 #endif
papaco 0:b47aaa131075 66 GENERAL_TIME=-1;
papaco 0:b47aaa131075 67 STATUS=IDLE;
papaco 0:b47aaa131075 68 interface.setLED(0,1,0);
papaco 0:b47aaa131075 69 }//if
papaco 0:b47aaa131075 70 }else if(STATUS==IDLE){/**********************************************IDLE*/
papaco 0:b47aaa131075 71 if(IDLE_TIMER==GENERAL_TIME){
papaco 0:b47aaa131075 72 GENERAL_TIME=0;
papaco 0:b47aaa131075 73 if((Lupe.StartCheck())&&(interface.getFlash()))
papaco 0:b47aaa131075 74 interface.setFlash(false);
papaco 0:b47aaa131075 75 if((!Lupe.StartCheck())&&(!interface.getFlash()))
papaco 0:b47aaa131075 76 interface.setFlash(true);
papaco 4:379e05b2fc0d 77 if(interface.getStart()&&(!interface.getFlash())){
papaco 0:b47aaa131075 78 #if defined(DEBUG_MODE)
papaco 0:b47aaa131075 79 pc.printf("\nIDLE Done\r\n");
papaco 0:b47aaa131075 80 #endif
papaco 1:4fb1de70cd4d 81 STATUS=INIT_PRODUCTION;
papaco 0:b47aaa131075 82 GENERAL_TIME=-1;
papaco 0:b47aaa131075 83 interface.setLED(1,1,1);
papaco 0:b47aaa131075 84 interface.setFlash(true);
papaco 0:b47aaa131075 85 }//if
papaco 0:b47aaa131075 86 }//if
papaco 1:4fb1de70cd4d 87 }else if(STATUS==INIT_PRODUCTION){/*************************INIT_PRODUCTION*/
papaco 4:379e05b2fc0d 88 if(GENERAL_TIME==0){//INIT
papaco 4:379e05b2fc0d 89 #if defined(DEBUG_MODE)
papaco 4:379e05b2fc0d 90 pc.printf("\nFinding producton start point................r\n");
papaco 4:379e05b2fc0d 91 #endif
papaco 0:b47aaa131075 92 }//if
papaco 0:b47aaa131075 93 if(extruder.getSwitch()){//No dough detected
papaco 4:379e05b2fc0d 94 if(extruder.getTimer()>=1000){//Check every 1s
papaco 0:b47aaa131075 95 extruder.setTimer(0);
papaco 0:b47aaa131075 96 extruder.GetHome();
papaco 0:b47aaa131075 97 #if defined(DEBUG_MODE)
papaco 0:b47aaa131075 98 pc.printf("\nExtruder finding home on:%f\r\n",extruder.getPosition());
papaco 0:b47aaa131075 99 #endif
papaco 4:379e05b2fc0d 100 if(extruder.getPosition()>=0.1){
papaco 4:379e05b2fc0d 101 GENERAL_TIME=-1;
papaco 4:379e05b2fc0d 102 STATUS=HOME;
papaco 4:379e05b2fc0d 103 interface.setLED(1,1,0);
papaco 4:379e05b2fc0d 104 interface.setFlash(true);
papaco 4:379e05b2fc0d 105 }//if
papaco 0:b47aaa131075 106 }//if
papaco 1:4fb1de70cd4d 107 }else{
papaco 4:379e05b2fc0d 108 extruder.setTimer(EXTRUDER_CYCLE);
papaco 4:379e05b2fc0d 109 cutter.setTimer(-CUTTER_FIRST_TIME);
papaco 4:379e05b2fc0d 110 griddle.setTimer(-GRIDDLE_FIRST_TIME-CUTTER_WAIT_TIMER);
papaco 4:379e05b2fc0d 111 oven.setTimer(-OVEN_FIRST_TIME-GRIDDLE_WAIT_TIMER-CUTTER_WAIT_TIMER);
papaco 4:379e05b2fc0d 112 STATUS=PRODUCTION;
papaco 4:379e05b2fc0d 113 GENERAL_TIME=-1;
papaco 1:4fb1de70cd4d 114 tortilla.setDP(interface.getTortilla());
papaco 1:4fb1de70cd4d 115 #if defined(DEBUG_MODE)
papaco 4:379e05b2fc0d 116 pc.printf("\nProduction of %d Tortillas...\r\n",interface.getTortilla());
papaco 1:4fb1de70cd4d 117 #endif
papaco 0:b47aaa131075 118 }//else
papaco 1:4fb1de70cd4d 119 }else if(STATUS==PRODUCTION){/**********************************PRODUCTION*/
papaco 4:379e05b2fc0d 120 if(GENERAL_TIME==0){//INIT
papaco 4:379e05b2fc0d 121 #if defined(DEBUG_MODE)
papaco 4:379e05b2fc0d 122 pc.printf("\nProducton started!\r\n");
papaco 4:379e05b2fc0d 123 #endif
papaco 4:379e05b2fc0d 124 }//if
papaco 1:4fb1de70cd4d 125 if(tortilla.getExtruder()){ExtruderProduction();}
papaco 1:4fb1de70cd4d 126 if(tortilla.getCutter()){CutterProduction();}
papaco 1:4fb1de70cd4d 127 if(tortilla.getGriddle()){GriddleProduction();}
papaco 1:4fb1de70cd4d 128 if(tortilla.getOven()){OvenProduction();}
papaco 4:379e05b2fc0d 129 if(!tortilla.getTortilla()){
papaco 0:b47aaa131075 130 GENERAL_TIME=-1;
papaco 0:b47aaa131075 131 STATUS=HOME;
papaco 0:b47aaa131075 132 interface.setLED(1,1,0);
papaco 0:b47aaa131075 133 interface.setFlash(true);
papaco 0:b47aaa131075 134 }//if
papaco 0:b47aaa131075 135 }//else if
papaco 3:dd5c9690ed0d 136 checkUp();
papaco 0:b47aaa131075 137 return;
papaco 0:b47aaa131075 138 }//MANAGER
papaco 0:b47aaa131075 139
papaco 0:b47aaa131075 140 void init(void){
papaco 0:b47aaa131075 141 #if defined(DEBUG_MODE)
papaco 0:b47aaa131075 142 pc.printf("\nMachine modules is starting...\r\n");
papaco 0:b47aaa131075 143 #endif
papaco 0:b47aaa131075 144 interface.Init();
papaco 0:b47aaa131075 145 #if defined(DEBUG_MODE)
papaco 0:b47aaa131075 146 pc.printf("INTERFACE OK!\r\n");
papaco 0:b47aaa131075 147 #endif
papaco 0:b47aaa131075 148 Lupe.Init();
papaco 0:b47aaa131075 149 #if defined(DEBUG_MODE)
papaco 0:b47aaa131075 150 pc.printf("MACHINE OK!\r\n");
papaco 0:b47aaa131075 151 #endif
papaco 0:b47aaa131075 152 cutter.Init();
papaco 0:b47aaa131075 153 #if defined(DEBUG_MODE)
papaco 0:b47aaa131075 154 pc.printf("CUTTER OK!\r\n");
papaco 0:b47aaa131075 155 #endif
papaco 0:b47aaa131075 156 extruder.Init();
papaco 0:b47aaa131075 157 #if defined(DEBUG_MODE)
papaco 0:b47aaa131075 158 pc.printf("EXTRUDER OK!\r\n");
papaco 0:b47aaa131075 159 #endif
papaco 0:b47aaa131075 160 griddle.Init();
papaco 0:b47aaa131075 161 #if defined(DEBUG_MODE)
papaco 0:b47aaa131075 162 pc.printf("GRIDDLE OK!\r\n");
papaco 0:b47aaa131075 163 #endif
papaco 0:b47aaa131075 164 oven.Init();
papaco 0:b47aaa131075 165 #if defined(DEBUG_MODE)
papaco 0:b47aaa131075 166 pc.printf("OVEN OK!\r\n");
papaco 0:b47aaa131075 167 #endif
papaco 0:b47aaa131075 168 timer.attach(&MANAGER,0.001);
papaco 0:b47aaa131075 169 #if defined(DEBUG_MODE)
papaco 0:b47aaa131075 170 pc.printf("Time Manager OK!\r\n");
papaco 0:b47aaa131075 171 #endif
papaco 0:b47aaa131075 172 wait(5);
papaco 0:b47aaa131075 173 #if defined(DEBUG_MODE)
papaco 0:b47aaa131075 174 pc.printf("\nInit process done...\r\n");
papaco 0:b47aaa131075 175 #endif
papaco 0:b47aaa131075 176 STATUS=HOME;
papaco 0:b47aaa131075 177 GENERAL_TIME=0;
papaco 0:b47aaa131075 178 return;
papaco 1:4fb1de70cd4d 179 }//init
papaco 1:4fb1de70cd4d 180
papaco 3:dd5c9690ed0d 181 void checkUp(void){
papaco 3:dd5c9690ed0d 182 /*************************GENERAL INTERFACE CONTROL************************/
papaco 3:dd5c9690ed0d 183 interface.check(); //Flash_control; Update_start_button_latch_each 50ms
papaco 3:dd5c9690ed0d 184
papaco 3:dd5c9690ed0d 185 /*************************GENERAL MACHINE CONTROL**************************/
papaco 4:379e05b2fc0d 186 if(Lupe.check()&&(STATUS==PRODUCTION)){ //Error at the machine
papaco 4:379e05b2fc0d 187 interface.setLED(1,0,0);
papaco 4:379e05b2fc0d 188 interface.setFlash(true);
papaco 4:379e05b2fc0d 189 tortilla.setExtruder(false);
papaco 4:379e05b2fc0d 190 }//if
papaco 3:dd5c9690ed0d 191
papaco 3:dd5c9690ed0d 192 /*************************GENERAL CUTTER CONTROL***************************/
papaco 3:dd5c9690ed0d 193 cutter.check(); //Add_production_timer; Check_cutt_status;
papaco 3:dd5c9690ed0d 194 //Manage_cutting_process
papaco 3:dd5c9690ed0d 195
papaco 3:dd5c9690ed0d 196 /*************************GENERAL EXTRUDER CONTROL*************************/
papaco 3:dd5c9690ed0d 197 extruder.check(); //Add_timer
papaco 3:dd5c9690ed0d 198
papaco 3:dd5c9690ed0d 199 /*************************GENERAL GRIDDLE CONTROL**************************/
papaco 3:dd5c9690ed0d 200 griddle.check(); //Add_timer; Manage_Griddle_press
papaco 3:dd5c9690ed0d 201
papaco 3:dd5c9690ed0d 202 /*************************GENERAL OVEN CONTROL*****************************/
papaco 4:379e05b2fc0d 203 oven.check();
papaco 3:dd5c9690ed0d 204
papaco 3:dd5c9690ed0d 205 /***********************GENERAL TORITLLA CONTROL***************************/
papaco 4:379e05b2fc0d 206 #if defined(DEBUG_MODE)
papaco 4:379e05b2fc0d 207 bool latchExtruder=tortilla.getExtruder();
papaco 4:379e05b2fc0d 208 bool latchCutter=tortilla.getCutter();
papaco 4:379e05b2fc0d 209 bool latchGriddle=tortilla.getGriddle();
papaco 4:379e05b2fc0d 210 bool latchOven=tortilla.getOven();
papaco 4:379e05b2fc0d 211 bool latchProduction=tortilla.getTortilla();
papaco 4:379e05b2fc0d 212 int END=tortilla.check();
papaco 4:379e05b2fc0d 213 if((END==1)&&(latchExtruder!=tortilla.getExtruder()))
papaco 4:379e05b2fc0d 214 pc.printf("\n..........Extruder END..........\r\n");
papaco 4:379e05b2fc0d 215 else if((END==2)&&(latchCutter!=tortilla.getCutter()))
papaco 4:379e05b2fc0d 216 pc.printf("\n..........Cutter END..........\r\n");
papaco 4:379e05b2fc0d 217 else if((END==3)&&(latchGriddle!=tortilla.getGriddle()))
papaco 4:379e05b2fc0d 218 pc.printf("\n..........Griddle END..........\r\n");
papaco 4:379e05b2fc0d 219 else if((END==4)&&(latchOven!=tortilla.getOven()))
papaco 4:379e05b2fc0d 220 pc.printf("\n..........Oven END..........\r\n");
papaco 4:379e05b2fc0d 221 else if((END==5)&&(latchProduction!=tortilla.getTortilla()))
papaco 4:379e05b2fc0d 222 pc.printf("\n!!..........FULL PRODUCTION END..........!!\r\n");
papaco 4:379e05b2fc0d 223 #else
papaco 4:379e05b2fc0d 224 tortilla.check();
papaco 4:379e05b2fc0d 225 #endif
papaco 3:dd5c9690ed0d 226 return;
papaco 3:dd5c9690ed0d 227 }//checkUp
papaco 3:dd5c9690ed0d 228
papaco 1:4fb1de70cd4d 229 void ExtruderProduction(void){
papaco 4:379e05b2fc0d 230 if((extruder.getTimer()>=EXTRUDER_CYCLE)&&(extruder.getPosition()<0.1)){//Check every 5s
papaco 1:4fb1de70cd4d 231 extruder.setTimer(0);
papaco 1:4fb1de70cd4d 232 extruder.Step();
papaco 2:364e8d3f9ee4 233 tortilla.addExtruder();
papaco 2:364e8d3f9ee4 234 cutter.setTimer(0);
papaco 1:4fb1de70cd4d 235 #if defined(DEBUG_MODE)
papaco 4:379e05b2fc0d 236 pc.printf("Extruded dough number %d in position:%f\r\n",tortilla.getExtruderCount(),extruder.getPosition());
papaco 1:4fb1de70cd4d 237 #endif
papaco 1:4fb1de70cd4d 238 }//if
papaco 1:4fb1de70cd4d 239 if(extruder.getPosition()>=0.1){
papaco 2:364e8d3f9ee4 240 tortilla.setExtruder(false);
papaco 1:4fb1de70cd4d 241 #if defined(DEBUG_MODE)
papaco 4:379e05b2fc0d 242 pc.printf("Extruder reached end position\r\n");
papaco 1:4fb1de70cd4d 243 #endif
papaco 1:4fb1de70cd4d 244 }//if
papaco 1:4fb1de70cd4d 245 return;
papaco 1:4fb1de70cd4d 246 }//ExtruderProduction
papaco 1:4fb1de70cd4d 247
papaco 1:4fb1de70cd4d 248 void CutterProduction(void){
papaco 4:379e05b2fc0d 249 if((cutter.getTimer()==5000)&&(interface.getTortilla()>tortilla.getCutterCount())){
papaco 2:364e8d3f9ee4 250 cutter.cutt();
papaco 2:364e8d3f9ee4 251 tortilla.addCutter();
papaco 4:379e05b2fc0d 252 griddle.setTimer(0);
papaco 4:379e05b2fc0d 253 #if defined(DEBUG_MODE)
papaco 4:379e05b2fc0d 254 pc.printf("Cutted tortilla number:%d\r\n",tortilla.getCutterCount());
papaco 4:379e05b2fc0d 255 #endif
papaco 2:364e8d3f9ee4 256 }//if
papaco 1:4fb1de70cd4d 257 return;
papaco 1:4fb1de70cd4d 258 }//CutterProduction
papaco 1:4fb1de70cd4d 259
papaco 1:4fb1de70cd4d 260 void GriddleProduction(void){
papaco 4:379e05b2fc0d 261 if((griddle.getTimer()==5000)&&(interface.getTortilla()>tortilla.getGriddleCount())){
papaco 4:379e05b2fc0d 262 griddle.press();
papaco 4:379e05b2fc0d 263 tortilla.addGriddle();
papaco 4:379e05b2fc0d 264 oven.setTimer(0);
papaco 4:379e05b2fc0d 265 #if defined(DEBUG_MODE)
papaco 4:379e05b2fc0d 266 pc.printf("Griddled dough process number:%d\r\n",tortilla.getGriddleCount());
papaco 4:379e05b2fc0d 267 #endif
papaco 4:379e05b2fc0d 268 }//if
papaco 1:4fb1de70cd4d 269 return;
papaco 1:4fb1de70cd4d 270 }//GriddleProduction
papaco 1:4fb1de70cd4d 271
papaco 1:4fb1de70cd4d 272 void OvenProduction(void){
papaco 4:379e05b2fc0d 273 if((oven.getTimer()==5000)&&(interface.getTortilla()>tortilla.getOvenCount())){
papaco 4:379e05b2fc0d 274 oven.open();
papaco 4:379e05b2fc0d 275 tortilla.addOven();
papaco 4:379e05b2fc0d 276 #if defined(DEBUG_MODE)
papaco 4:379e05b2fc0d 277 pc.printf("Oven passing tortilla number:%d\r\n",tortilla.getOvenCount());
papaco 4:379e05b2fc0d 278 #endif
papaco 4:379e05b2fc0d 279 }//if
papaco 1:4fb1de70cd4d 280 return;
papaco 1:4fb1de70cd4d 281 }//OvenProduction