Alberto Terrazas / Mbed 2 deprecated Lupe

Dependencies:   mbed

Committer:
papaco
Date:
Wed Feb 20 18:43:15 2019 +0000
Revision:
5:fe1e88d6b0cb
Parent:
4:379e05b2fc0d
Child:
6:b1b74d1f8fab
Oh si!!!;

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 5:fe1e88d6b0cb 182 #if defined(DEBUG_MODE)
papaco 5:fe1e88d6b0cb 183 if((GENERAL_TIME%5000==0)&&(STATUS==PRODUCTION))
papaco 5:fe1e88d6b0cb 184 pc.printf("Time: %ds\r\n",GENERAL_TIME/1000);
papaco 5:fe1e88d6b0cb 185 #endif
papaco 3:dd5c9690ed0d 186 /*************************GENERAL INTERFACE CONTROL************************/
papaco 3:dd5c9690ed0d 187 interface.check(); //Flash_control; Update_start_button_latch_each 50ms
papaco 3:dd5c9690ed0d 188
papaco 3:dd5c9690ed0d 189 /*************************GENERAL MACHINE CONTROL**************************/
papaco 4:379e05b2fc0d 190 if(Lupe.check()&&(STATUS==PRODUCTION)){ //Error at the machine
papaco 4:379e05b2fc0d 191 interface.setLED(1,0,0);
papaco 4:379e05b2fc0d 192 interface.setFlash(true);
papaco 4:379e05b2fc0d 193 tortilla.setExtruder(false);
papaco 4:379e05b2fc0d 194 }//if
papaco 3:dd5c9690ed0d 195
papaco 3:dd5c9690ed0d 196 /*************************GENERAL CUTTER CONTROL***************************/
papaco 3:dd5c9690ed0d 197 cutter.check(); //Add_production_timer; Check_cutt_status;
papaco 3:dd5c9690ed0d 198 //Manage_cutting_process
papaco 3:dd5c9690ed0d 199
papaco 3:dd5c9690ed0d 200 /*************************GENERAL EXTRUDER CONTROL*************************/
papaco 3:dd5c9690ed0d 201 extruder.check(); //Add_timer
papaco 3:dd5c9690ed0d 202
papaco 3:dd5c9690ed0d 203 /*************************GENERAL GRIDDLE CONTROL**************************/
papaco 3:dd5c9690ed0d 204 griddle.check(); //Add_timer; Manage_Griddle_press
papaco 3:dd5c9690ed0d 205
papaco 3:dd5c9690ed0d 206 /*************************GENERAL OVEN CONTROL*****************************/
papaco 4:379e05b2fc0d 207 oven.check();
papaco 3:dd5c9690ed0d 208
papaco 3:dd5c9690ed0d 209 /***********************GENERAL TORITLLA CONTROL***************************/
papaco 4:379e05b2fc0d 210 #if defined(DEBUG_MODE)
papaco 4:379e05b2fc0d 211 bool latchExtruder=tortilla.getExtruder();
papaco 4:379e05b2fc0d 212 bool latchCutter=tortilla.getCutter();
papaco 4:379e05b2fc0d 213 bool latchGriddle=tortilla.getGriddle();
papaco 4:379e05b2fc0d 214 bool latchOven=tortilla.getOven();
papaco 4:379e05b2fc0d 215 bool latchProduction=tortilla.getTortilla();
papaco 4:379e05b2fc0d 216 int END=tortilla.check();
papaco 4:379e05b2fc0d 217 if((END==1)&&(latchExtruder!=tortilla.getExtruder()))
papaco 4:379e05b2fc0d 218 pc.printf("\n..........Extruder END..........\r\n");
papaco 4:379e05b2fc0d 219 else if((END==2)&&(latchCutter!=tortilla.getCutter()))
papaco 4:379e05b2fc0d 220 pc.printf("\n..........Cutter END..........\r\n");
papaco 4:379e05b2fc0d 221 else if((END==3)&&(latchGriddle!=tortilla.getGriddle()))
papaco 4:379e05b2fc0d 222 pc.printf("\n..........Griddle END..........\r\n");
papaco 4:379e05b2fc0d 223 else if((END==4)&&(latchOven!=tortilla.getOven()))
papaco 4:379e05b2fc0d 224 pc.printf("\n..........Oven END..........\r\n");
papaco 4:379e05b2fc0d 225 else if((END==5)&&(latchProduction!=tortilla.getTortilla()))
papaco 4:379e05b2fc0d 226 pc.printf("\n!!..........FULL PRODUCTION END..........!!\r\n");
papaco 4:379e05b2fc0d 227 #else
papaco 4:379e05b2fc0d 228 tortilla.check();
papaco 4:379e05b2fc0d 229 #endif
papaco 3:dd5c9690ed0d 230 return;
papaco 3:dd5c9690ed0d 231 }//checkUp
papaco 3:dd5c9690ed0d 232
papaco 1:4fb1de70cd4d 233 void ExtruderProduction(void){
papaco 5:fe1e88d6b0cb 234 if((extruder.getTimer()>=EXTRUDER_CYCLE)&&(extruder.getPosition()<0.1)){
papaco 5:fe1e88d6b0cb 235 if(tortilla.getExtruderCount()==0)
papaco 5:fe1e88d6b0cb 236 int addTime=GENERAL_TIME+CUTTER_WAIT_TIMER+CUTTER_FIRST_TIME;
papaco 5:fe1e88d6b0cb 237 else
papaco 5:fe1e88d6b0cb 238 int addTime=GENERAL_TIME+CUTTER_WAIT_TIMER;
papaco 5:fe1e88d6b0cb 239 tortilla.setCutterTrigger(tortilla.getExtruderCount(),addTime);
papaco 1:4fb1de70cd4d 240 extruder.setTimer(0);
papaco 1:4fb1de70cd4d 241 extruder.Step();
papaco 2:364e8d3f9ee4 242 tortilla.addExtruder();
papaco 1:4fb1de70cd4d 243 #if defined(DEBUG_MODE)
papaco 4:379e05b2fc0d 244 pc.printf("Extruded dough number %d in position:%f\r\n",tortilla.getExtruderCount(),extruder.getPosition());
papaco 1:4fb1de70cd4d 245 #endif
papaco 1:4fb1de70cd4d 246 }//if
papaco 1:4fb1de70cd4d 247 if(extruder.getPosition()>=0.1){
papaco 2:364e8d3f9ee4 248 tortilla.setExtruder(false);
papaco 1:4fb1de70cd4d 249 #if defined(DEBUG_MODE)
papaco 4:379e05b2fc0d 250 pc.printf("Extruder reached end position\r\n");
papaco 1:4fb1de70cd4d 251 #endif
papaco 1:4fb1de70cd4d 252 }//if
papaco 1:4fb1de70cd4d 253 return;
papaco 1:4fb1de70cd4d 254 }//ExtruderProduction
papaco 1:4fb1de70cd4d 255
papaco 1:4fb1de70cd4d 256 void CutterProduction(void){
papaco 5:fe1e88d6b0cb 257 int cutterMomentum=tortilla.getCutterTrigger(tortilla.getCutterCount());
papaco 5:fe1e88d6b0cb 258 if((cutterMomentum<=GENERAL_TIME)&&(cutterMomentum!=0)){
papaco 5:fe1e88d6b0cb 259 if(tortilla.getCutterCount()==0)
papaco 5:fe1e88d6b0cb 260 int addTime=GENERAL_TIME+GRIDDLE_WAIT_TIMER+GRIDDLE_FIRST_TIME;
papaco 5:fe1e88d6b0cb 261 else
papaco 5:fe1e88d6b0cb 262 int addTime=GENERAL_TIME+GRIDDLE_WAIT_TIMER;
papaco 2:364e8d3f9ee4 263 cutter.cutt();
papaco 5:fe1e88d6b0cb 264 tortilla.setGriddleTrigger(tortilla.getCutterCount(),addTime);
papaco 2:364e8d3f9ee4 265 tortilla.addCutter();
papaco 4:379e05b2fc0d 266 #if defined(DEBUG_MODE)
papaco 4:379e05b2fc0d 267 pc.printf("Cutted tortilla number:%d\r\n",tortilla.getCutterCount());
papaco 4:379e05b2fc0d 268 #endif
papaco 2:364e8d3f9ee4 269 }//if
papaco 1:4fb1de70cd4d 270 return;
papaco 1:4fb1de70cd4d 271 }//CutterProduction
papaco 1:4fb1de70cd4d 272
papaco 1:4fb1de70cd4d 273 void GriddleProduction(void){
papaco 5:fe1e88d6b0cb 274 int griddleMomentum=tortilla.getGriddleTrigger(tortilla.getGriddleCount());
papaco 5:fe1e88d6b0cb 275 if((griddleMomentum<=GENERAL_TIME)&&(griddleMomentum!=0)){
papaco 5:fe1e88d6b0cb 276 if(tortilla.getGriddleCount()==0)
papaco 5:fe1e88d6b0cb 277 int addTime=GENERAL_TIME+OVEN_WAIT_TIMER+OVEN_FIRST_TIME;
papaco 5:fe1e88d6b0cb 278 else
papaco 5:fe1e88d6b0cb 279 int addTime=GENERAL_TIME+OVEN_WAIT_TIMER;
papaco 5:fe1e88d6b0cb 280 tortilla.setOvenTrigger(tortilla.getGriddleCount(),addTime);
papaco 4:379e05b2fc0d 281 griddle.press();
papaco 4:379e05b2fc0d 282 tortilla.addGriddle();
papaco 4:379e05b2fc0d 283 #if defined(DEBUG_MODE)
papaco 4:379e05b2fc0d 284 pc.printf("Griddled dough process number:%d\r\n",tortilla.getGriddleCount());
papaco 4:379e05b2fc0d 285 #endif
papaco 4:379e05b2fc0d 286 }//if
papaco 1:4fb1de70cd4d 287 return;
papaco 1:4fb1de70cd4d 288 }//GriddleProduction
papaco 1:4fb1de70cd4d 289
papaco 1:4fb1de70cd4d 290 void OvenProduction(void){
papaco 5:fe1e88d6b0cb 291 int ovenMomentum=tortilla.getOvenTrigger(tortilla.getOvenCount());
papaco 5:fe1e88d6b0cb 292 if((ovenMomentum<=GENERAL_TIME)&&(ovenMomentum!=0)){
papaco 4:379e05b2fc0d 293 oven.open();
papaco 4:379e05b2fc0d 294 tortilla.addOven();
papaco 4:379e05b2fc0d 295 #if defined(DEBUG_MODE)
papaco 4:379e05b2fc0d 296 pc.printf("Oven passing tortilla number:%d\r\n",tortilla.getOvenCount());
papaco 4:379e05b2fc0d 297 #endif
papaco 4:379e05b2fc0d 298 }//if
papaco 1:4fb1de70cd4d 299 return;
papaco 1:4fb1de70cd4d 300 }//OvenProduction