Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
main.cpp@1:4fb1de70cd4d, 2019-02-11 (annotated)
- 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?
User | Revision | Line number | New 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 |