Alberto Terrazas / Mbed 2 deprecated Lupe

Dependencies:   mbed

Committer:
papaco
Date:
Mon Feb 11 23:01:09 2019 +0000
Revision:
1:4fb1de70cd4d
Parent:
0:b47aaa131075
Child:
2:364e8d3f9ee4
2/11/19 5:00pm

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 1:4fb1de70cd4d 29 void ExtruderProduction(void);
papaco 1:4fb1de70cd4d 30 void CutterProduction(void);
papaco 1:4fb1de70cd4d 31 void GriddleProduction(void);
papaco 1:4fb1de70cd4d 32 void OvenProduction(void);
papaco 0:b47aaa131075 33
papaco 0:b47aaa131075 34 int STATUS=-1;
papaco 0:b47aaa131075 35 int GENERAL_TIME=0;
papaco 0:b47aaa131075 36
papaco 0:b47aaa131075 37
papaco 0:b47aaa131075 38 int main(){
papaco 0:b47aaa131075 39 #if defined(DEBUG_MODE)
papaco 0:b47aaa131075 40 pc.printf("\n\n***************************\nMCU variable init OK!\r\n");
papaco 0:b47aaa131075 41 #endif
papaco 0:b47aaa131075 42 init();
papaco 0:b47aaa131075 43 while(1);
papaco 0:b47aaa131075 44 }//main
papaco 0:b47aaa131075 45
papaco 0:b47aaa131075 46 void MANAGER(void){
papaco 0:b47aaa131075 47 GENERAL_TIME++;
papaco 0:b47aaa131075 48 /******************************STATUS CONTROL******************************/
papaco 0:b47aaa131075 49 if(STATUS==HOME){/****************************************************HOME*/
papaco 0:b47aaa131075 50 if(GENERAL_TIME==1){
papaco 0:b47aaa131075 51 #if defined(DEBUG_MODE)
papaco 0:b47aaa131075 52 pc.printf("\nHOME rutine start...\r\n");
papaco 0:b47aaa131075 53 #endif
papaco 0:b47aaa131075 54 interface.setLED(1,1,0);
papaco 0:b47aaa131075 55 interface.setFlash(true);
papaco 0:b47aaa131075 56 cutter.down();
papaco 0:b47aaa131075 57 extruder.Init();
papaco 0:b47aaa131075 58 griddle.Home();
papaco 0:b47aaa131075 59 oven.Home();
papaco 0:b47aaa131075 60 }//if
papaco 0:b47aaa131075 61 if(cutter.available()&&griddle.isFree()){
papaco 0:b47aaa131075 62 #if defined(DEBUG_MODE)
papaco 0:b47aaa131075 63 pc.printf("\nHOME rutine end...\r\n");
papaco 0:b47aaa131075 64 #endif
papaco 0:b47aaa131075 65 GENERAL_TIME=-1;
papaco 0:b47aaa131075 66 STATUS=IDLE;
papaco 0:b47aaa131075 67 interface.setLED(0,1,0);
papaco 0:b47aaa131075 68 }//if
papaco 0:b47aaa131075 69 }else if(STATUS==IDLE){/**********************************************IDLE*/
papaco 0:b47aaa131075 70 if(IDLE_TIMER==GENERAL_TIME){
papaco 0:b47aaa131075 71 GENERAL_TIME=0;
papaco 0:b47aaa131075 72 if((Lupe.StartCheck())&&(interface.getFlash()))
papaco 0:b47aaa131075 73 interface.setFlash(false);
papaco 0:b47aaa131075 74 if((!Lupe.StartCheck())&&(!interface.getFlash()))
papaco 0:b47aaa131075 75 interface.setFlash(true);
papaco 0:b47aaa131075 76 if(interface.getStart()){
papaco 0:b47aaa131075 77 #if defined(DEBUG_MODE)
papaco 0:b47aaa131075 78 pc.printf("\nIDLE Done\r\n");
papaco 0:b47aaa131075 79 #endif
papaco 1:4fb1de70cd4d 80 STATUS=INIT_PRODUCTION;
papaco 0:b47aaa131075 81 GENERAL_TIME=-1;
papaco 0:b47aaa131075 82 interface.setLED(1,1,1);
papaco 0:b47aaa131075 83 interface.setFlash(true);
papaco 0:b47aaa131075 84 }//if
papaco 0:b47aaa131075 85 }//if
papaco 1:4fb1de70cd4d 86 }else if(STATUS==INIT_PRODUCTION){/*************************INIT_PRODUCTION*/
papaco 0:b47aaa131075 87 if(GENERAL_TIME==0){//INIT
papaco 0:b47aaa131075 88 }//if
papaco 0:b47aaa131075 89 if(extruder.getSwitch()){//No dough detected
papaco 0:b47aaa131075 90 if(extruder.getTimer()>=500){//Check every 0.5s
papaco 0:b47aaa131075 91 extruder.setTimer(0);
papaco 0:b47aaa131075 92 extruder.GetHome();
papaco 0:b47aaa131075 93 #if defined(DEBUG_MODE)
papaco 0:b47aaa131075 94 pc.printf("\nExtruder finding home on:%f\r\n",extruder.getPosition());
papaco 0:b47aaa131075 95 #endif
papaco 0:b47aaa131075 96 }//if
papaco 1:4fb1de70cd4d 97 }else{
papaco 1:4fb1de70cd4d 98 extruder.setTimer(0);
papaco 1:4fb1de70cd4d 99 cutter.setTimer(0);
papaco 1:4fb1de70cd4d 100 griddle.setTimer(0);
papaco 1:4fb1de70cd4d 101 oven.setTimer(0);
papaco 1:4fb1de70cd4d 102 tortilla.setDP(interface.getTortilla());
papaco 1:4fb1de70cd4d 103 #if defined(DEBUG_MODE)
papaco 1:4fb1de70cd4d 104 pc.printf("\nProduction of %f Tortillas...\r\n",extruder.getPosition());
papaco 1:4fb1de70cd4d 105 #endif
papaco 0:b47aaa131075 106 }//else
papaco 1:4fb1de70cd4d 107 }else if(STATUS==PRODUCTION){/**********************************PRODUCTION*/
papaco 1:4fb1de70cd4d 108 if(tortilla.getExtruder()){ExtruderProduction();}
papaco 1:4fb1de70cd4d 109 if(tortilla.getCutter()){CutterProduction();}
papaco 1:4fb1de70cd4d 110 if(tortilla.getGriddle()){GriddleProduction();}
papaco 1:4fb1de70cd4d 111 if(tortilla.getOven()){OvenProduction();}
papaco 1:4fb1de70cd4d 112 if(!tortilla.getTortilla()){
papaco 0:b47aaa131075 113 GENERAL_TIME=-1;
papaco 0:b47aaa131075 114 STATUS=HOME;
papaco 0:b47aaa131075 115 interface.setLED(1,1,0);
papaco 0:b47aaa131075 116 interface.setFlash(true);
papaco 0:b47aaa131075 117 }//if
papaco 0:b47aaa131075 118 }//else if
papaco 0:b47aaa131075 119
papaco 0:b47aaa131075 120 /*****************************GENERAL CONTROL******************************/
papaco 0:b47aaa131075 121 /*************************GENERAL INTERFACE CONTROL************************/
papaco 0:b47aaa131075 122 //Flash Control
papaco 0:b47aaa131075 123 interface.check();
papaco 0:b47aaa131075 124
papaco 0:b47aaa131075 125 /*************************GENERAL MACHINE CONTROL**************************/
papaco 0:b47aaa131075 126
papaco 0:b47aaa131075 127 /*************************GENERAL CUTTER CONTROL***************************/
papaco 0:b47aaa131075 128 cutter.check();
papaco 0:b47aaa131075 129
papaco 0:b47aaa131075 130 /*************************GENERAL EXTRUDER CONTROL*************************/
papaco 0:b47aaa131075 131 extruder.check();
papaco 0:b47aaa131075 132
papaco 0:b47aaa131075 133 /*************************GENERAL GRIDDLE CONTROL**************************/
papaco 0:b47aaa131075 134 if(griddle.check()){
papaco 0:b47aaa131075 135 #if defined(DEBUG_MODE)
papaco 0:b47aaa131075 136 pc.printf("\nGriddle moving\r\n");
papaco 0:b47aaa131075 137 #endif
papaco 0:b47aaa131075 138 }//if
papaco 0:b47aaa131075 139
papaco 0:b47aaa131075 140 /*************************GENERAL OVEN CONTROL*****************************/
papaco 0:b47aaa131075 141
papaco 1:4fb1de70cd4d 142
papaco 1:4fb1de70cd4d 143 /***********************GENERAL TORITLLA CONTROL***************************/
papaco 1:4fb1de70cd4d 144 tortilla.check();
papaco 0:b47aaa131075 145 return;
papaco 0:b47aaa131075 146 }//MANAGER
papaco 0:b47aaa131075 147
papaco 0:b47aaa131075 148 void init(void){
papaco 0:b47aaa131075 149 #if defined(DEBUG_MODE)
papaco 0:b47aaa131075 150 pc.printf("\nMachine modules is starting...\r\n");
papaco 0:b47aaa131075 151 #endif
papaco 0:b47aaa131075 152 interface.Init();
papaco 0:b47aaa131075 153 #if defined(DEBUG_MODE)
papaco 0:b47aaa131075 154 pc.printf("INTERFACE OK!\r\n");
papaco 0:b47aaa131075 155 #endif
papaco 0:b47aaa131075 156 Lupe.Init();
papaco 0:b47aaa131075 157 #if defined(DEBUG_MODE)
papaco 0:b47aaa131075 158 pc.printf("MACHINE OK!\r\n");
papaco 0:b47aaa131075 159 #endif
papaco 0:b47aaa131075 160 cutter.Init();
papaco 0:b47aaa131075 161 #if defined(DEBUG_MODE)
papaco 0:b47aaa131075 162 pc.printf("CUTTER OK!\r\n");
papaco 0:b47aaa131075 163 #endif
papaco 0:b47aaa131075 164 extruder.Init();
papaco 0:b47aaa131075 165 #if defined(DEBUG_MODE)
papaco 0:b47aaa131075 166 pc.printf("EXTRUDER OK!\r\n");
papaco 0:b47aaa131075 167 #endif
papaco 0:b47aaa131075 168 griddle.Init();
papaco 0:b47aaa131075 169 #if defined(DEBUG_MODE)
papaco 0:b47aaa131075 170 pc.printf("GRIDDLE OK!\r\n");
papaco 0:b47aaa131075 171 #endif
papaco 0:b47aaa131075 172 oven.Init();
papaco 0:b47aaa131075 173 #if defined(DEBUG_MODE)
papaco 0:b47aaa131075 174 pc.printf("OVEN OK!\r\n");
papaco 0:b47aaa131075 175 #endif
papaco 0:b47aaa131075 176 timer.attach(&MANAGER,0.001);
papaco 0:b47aaa131075 177 #if defined(DEBUG_MODE)
papaco 0:b47aaa131075 178 pc.printf("Time Manager OK!\r\n");
papaco 0:b47aaa131075 179 #endif
papaco 0:b47aaa131075 180 wait(5);
papaco 0:b47aaa131075 181 #if defined(DEBUG_MODE)
papaco 0:b47aaa131075 182 pc.printf("\nInit process done...\r\n");
papaco 0:b47aaa131075 183 #endif
papaco 0:b47aaa131075 184 STATUS=HOME;
papaco 0:b47aaa131075 185 GENERAL_TIME=0;
papaco 0:b47aaa131075 186 return;
papaco 1:4fb1de70cd4d 187 }//init
papaco 1:4fb1de70cd4d 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 1:4fb1de70cd4d 193 #if defined(DEBUG_MODE)
papaco 1:4fb1de70cd4d 194 pc.printf("\nExtruder position:%f\r\n",extruder.getPosition());
papaco 1:4fb1de70cd4d 195 #endif
papaco 1:4fb1de70cd4d 196 }//if
papaco 1:4fb1de70cd4d 197 if(extruder.getPosition()>=0.1){
papaco 1:4fb1de70cd4d 198 //EXTRUDER_PRODUCTION=true;
papaco 1:4fb1de70cd4d 199 #if defined(DEBUG_MODE)
papaco 1:4fb1de70cd4d 200 pc.printf("\nExtruder reached end position\r\n");
papaco 1:4fb1de70cd4d 201 #endif
papaco 1:4fb1de70cd4d 202 }//if
papaco 1:4fb1de70cd4d 203 return;
papaco 1:4fb1de70cd4d 204 }//ExtruderProduction
papaco 1:4fb1de70cd4d 205
papaco 1:4fb1de70cd4d 206 void CutterProduction(void){
papaco 1:4fb1de70cd4d 207 return;
papaco 1:4fb1de70cd4d 208 }//CutterProduction
papaco 1:4fb1de70cd4d 209
papaco 1:4fb1de70cd4d 210 void GriddleProduction(void){
papaco 1:4fb1de70cd4d 211 return;
papaco 1:4fb1de70cd4d 212 }//GriddleProduction
papaco 1:4fb1de70cd4d 213
papaco 1:4fb1de70cd4d 214 void OvenProduction(void){
papaco 1:4fb1de70cd4d 215 return;
papaco 1:4fb1de70cd4d 216 }//OvenProduction