Alberto Terrazas / Mbed 2 deprecated Lupe

Dependencies:   mbed

Committer:
papaco
Date:
Wed Feb 13 03:47:33 2019 +0000
Revision:
3:dd5c9690ed0d
Parent:
2:364e8d3f9ee4
Child:
4:379e05b2fc0d

        

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 0:b47aaa131075 36 int GENERAL_TIME=0;
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 0:b47aaa131075 51 if(GENERAL_TIME==1){
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 0:b47aaa131075 77 if(interface.getStart()){
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 0:b47aaa131075 88 if(GENERAL_TIME==0){//INIT
papaco 0:b47aaa131075 89 }//if
papaco 0:b47aaa131075 90 if(extruder.getSwitch()){//No dough detected
papaco 0:b47aaa131075 91 if(extruder.getTimer()>=500){//Check every 0.5s
papaco 0:b47aaa131075 92 extruder.setTimer(0);
papaco 0:b47aaa131075 93 extruder.GetHome();
papaco 0:b47aaa131075 94 #if defined(DEBUG_MODE)
papaco 0:b47aaa131075 95 pc.printf("\nExtruder finding home on:%f\r\n",extruder.getPosition());
papaco 0:b47aaa131075 96 #endif
papaco 0:b47aaa131075 97 }//if
papaco 1:4fb1de70cd4d 98 }else{
papaco 1:4fb1de70cd4d 99 extruder.setTimer(0);
papaco 1:4fb1de70cd4d 100 cutter.setTimer(0);
papaco 1:4fb1de70cd4d 101 griddle.setTimer(0);
papaco 1:4fb1de70cd4d 102 oven.setTimer(0);
papaco 1:4fb1de70cd4d 103 tortilla.setDP(interface.getTortilla());
papaco 1:4fb1de70cd4d 104 #if defined(DEBUG_MODE)
papaco 1:4fb1de70cd4d 105 pc.printf("\nProduction of %f Tortillas...\r\n",extruder.getPosition());
papaco 1:4fb1de70cd4d 106 #endif
papaco 0:b47aaa131075 107 }//else
papaco 1:4fb1de70cd4d 108 }else if(STATUS==PRODUCTION){/**********************************PRODUCTION*/
papaco 1:4fb1de70cd4d 109 if(tortilla.getExtruder()){ExtruderProduction();}
papaco 1:4fb1de70cd4d 110 if(tortilla.getCutter()){CutterProduction();}
papaco 1:4fb1de70cd4d 111 if(tortilla.getGriddle()){GriddleProduction();}
papaco 1:4fb1de70cd4d 112 if(tortilla.getOven()){OvenProduction();}
papaco 1:4fb1de70cd4d 113 if(!tortilla.getTortilla()){
papaco 0:b47aaa131075 114 GENERAL_TIME=-1;
papaco 0:b47aaa131075 115 STATUS=HOME;
papaco 0:b47aaa131075 116 interface.setLED(1,1,0);
papaco 0:b47aaa131075 117 interface.setFlash(true);
papaco 0:b47aaa131075 118 }//if
papaco 0:b47aaa131075 119 }//else if
papaco 3:dd5c9690ed0d 120 checkUp();
papaco 0:b47aaa131075 121 return;
papaco 0:b47aaa131075 122 }//MANAGER
papaco 0:b47aaa131075 123
papaco 0:b47aaa131075 124 void init(void){
papaco 0:b47aaa131075 125 #if defined(DEBUG_MODE)
papaco 0:b47aaa131075 126 pc.printf("\nMachine modules is starting...\r\n");
papaco 0:b47aaa131075 127 #endif
papaco 0:b47aaa131075 128 interface.Init();
papaco 0:b47aaa131075 129 #if defined(DEBUG_MODE)
papaco 0:b47aaa131075 130 pc.printf("INTERFACE OK!\r\n");
papaco 0:b47aaa131075 131 #endif
papaco 0:b47aaa131075 132 Lupe.Init();
papaco 0:b47aaa131075 133 #if defined(DEBUG_MODE)
papaco 0:b47aaa131075 134 pc.printf("MACHINE OK!\r\n");
papaco 0:b47aaa131075 135 #endif
papaco 0:b47aaa131075 136 cutter.Init();
papaco 0:b47aaa131075 137 #if defined(DEBUG_MODE)
papaco 0:b47aaa131075 138 pc.printf("CUTTER OK!\r\n");
papaco 0:b47aaa131075 139 #endif
papaco 0:b47aaa131075 140 extruder.Init();
papaco 0:b47aaa131075 141 #if defined(DEBUG_MODE)
papaco 0:b47aaa131075 142 pc.printf("EXTRUDER OK!\r\n");
papaco 0:b47aaa131075 143 #endif
papaco 0:b47aaa131075 144 griddle.Init();
papaco 0:b47aaa131075 145 #if defined(DEBUG_MODE)
papaco 0:b47aaa131075 146 pc.printf("GRIDDLE OK!\r\n");
papaco 0:b47aaa131075 147 #endif
papaco 0:b47aaa131075 148 oven.Init();
papaco 0:b47aaa131075 149 #if defined(DEBUG_MODE)
papaco 0:b47aaa131075 150 pc.printf("OVEN OK!\r\n");
papaco 0:b47aaa131075 151 #endif
papaco 0:b47aaa131075 152 timer.attach(&MANAGER,0.001);
papaco 0:b47aaa131075 153 #if defined(DEBUG_MODE)
papaco 0:b47aaa131075 154 pc.printf("Time Manager OK!\r\n");
papaco 0:b47aaa131075 155 #endif
papaco 0:b47aaa131075 156 wait(5);
papaco 0:b47aaa131075 157 #if defined(DEBUG_MODE)
papaco 0:b47aaa131075 158 pc.printf("\nInit process done...\r\n");
papaco 0:b47aaa131075 159 #endif
papaco 0:b47aaa131075 160 STATUS=HOME;
papaco 0:b47aaa131075 161 GENERAL_TIME=0;
papaco 0:b47aaa131075 162 return;
papaco 1:4fb1de70cd4d 163 }//init
papaco 1:4fb1de70cd4d 164
papaco 3:dd5c9690ed0d 165 void checkUp(void){
papaco 3:dd5c9690ed0d 166 /*************************GENERAL INTERFACE CONTROL************************/
papaco 3:dd5c9690ed0d 167 interface.check(); //Flash_control; Update_start_button_latch_each 50ms
papaco 3:dd5c9690ed0d 168
papaco 3:dd5c9690ed0d 169 /*************************GENERAL MACHINE CONTROL**************************/
papaco 3:dd5c9690ed0d 170
papaco 3:dd5c9690ed0d 171 /*************************GENERAL CUTTER CONTROL***************************/
papaco 3:dd5c9690ed0d 172 cutter.check(); //Add_production_timer; Check_cutt_status;
papaco 3:dd5c9690ed0d 173 //Manage_cutting_process
papaco 3:dd5c9690ed0d 174
papaco 3:dd5c9690ed0d 175 /*************************GENERAL EXTRUDER CONTROL*************************/
papaco 3:dd5c9690ed0d 176 extruder.check(); //Add_timer
papaco 3:dd5c9690ed0d 177
papaco 3:dd5c9690ed0d 178 /*************************GENERAL GRIDDLE CONTROL**************************/
papaco 3:dd5c9690ed0d 179 griddle.check(); //Add_timer; Manage_Griddle_press
papaco 3:dd5c9690ed0d 180
papaco 3:dd5c9690ed0d 181 /*************************GENERAL OVEN CONTROL*****************************/
papaco 3:dd5c9690ed0d 182
papaco 3:dd5c9690ed0d 183
papaco 3:dd5c9690ed0d 184 /***********************GENERAL TORITLLA CONTROL***************************/
papaco 3:dd5c9690ed0d 185 tortilla.check();
papaco 3:dd5c9690ed0d 186 return;
papaco 3:dd5c9690ed0d 187 }//checkUp
papaco 3:dd5c9690ed0d 188
papaco 1:4fb1de70cd4d 189 void ExtruderProduction(void){
papaco 1:4fb1de70cd4d 190 if((extruder.getTimer()>=5000)&&(extruder.getPosition()>=0.1)){//Check every 5s
papaco 1:4fb1de70cd4d 191 extruder.setTimer(0);
papaco 1:4fb1de70cd4d 192 extruder.Step();
papaco 2:364e8d3f9ee4 193 tortilla.addExtruder();
papaco 2:364e8d3f9ee4 194 cutter.setTimer(0);
papaco 1:4fb1de70cd4d 195 #if defined(DEBUG_MODE)
papaco 1:4fb1de70cd4d 196 pc.printf("\nExtruder position:%f\r\n",extruder.getPosition());
papaco 1:4fb1de70cd4d 197 #endif
papaco 1:4fb1de70cd4d 198 }//if
papaco 1:4fb1de70cd4d 199 if(extruder.getPosition()>=0.1){
papaco 2:364e8d3f9ee4 200 tortilla.setExtruder(false);
papaco 1:4fb1de70cd4d 201 #if defined(DEBUG_MODE)
papaco 1:4fb1de70cd4d 202 pc.printf("\nExtruder reached end position\r\n");
papaco 1:4fb1de70cd4d 203 #endif
papaco 1:4fb1de70cd4d 204 }//if
papaco 1:4fb1de70cd4d 205 return;
papaco 1:4fb1de70cd4d 206 }//ExtruderProduction
papaco 1:4fb1de70cd4d 207
papaco 1:4fb1de70cd4d 208 void CutterProduction(void){
papaco 2:364e8d3f9ee4 209 if((cutter.getTimer()==5000)&&(tortilla.getExtruderCount()>tortilla.getCutterCount())){
papaco 2:364e8d3f9ee4 210 cutter.cutt();
papaco 2:364e8d3f9ee4 211 tortilla.addCutter();
papaco 2:364e8d3f9ee4 212 }//if
papaco 1:4fb1de70cd4d 213 return;
papaco 1:4fb1de70cd4d 214 }//CutterProduction
papaco 1:4fb1de70cd4d 215
papaco 1:4fb1de70cd4d 216 void GriddleProduction(void){
papaco 1:4fb1de70cd4d 217 return;
papaco 1:4fb1de70cd4d 218 }//GriddleProduction
papaco 1:4fb1de70cd4d 219
papaco 1:4fb1de70cd4d 220 void OvenProduction(void){
papaco 1:4fb1de70cd4d 221 return;
papaco 1:4fb1de70cd4d 222 }//OvenProduction