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@0:b47aaa131075, 2019-02-11 (annotated)
- Committer:
- papaco
- Date:
- Mon Feb 11 15:28:07 2019 +0000
- Revision:
- 0:b47aaa131075
- Child:
- 1:4fb1de70cd4d
lad
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 | 0:b47aaa131075 | 20 | TORTILLA DesiredProduction(); |
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 | 0:b47aaa131075 | 27 | void init(void); |
papaco | 0:b47aaa131075 | 28 | void MANAGER(void); |
papaco | 0:b47aaa131075 | 29 | |
papaco | 0:b47aaa131075 | 30 | int STATUS=-1; |
papaco | 0:b47aaa131075 | 31 | int GENERAL_TIME=0; |
papaco | 0:b47aaa131075 | 32 | |
papaco | 0:b47aaa131075 | 33 | |
papaco | 0:b47aaa131075 | 34 | int main(){ |
papaco | 0:b47aaa131075 | 35 | #if defined(DEBUG_MODE) |
papaco | 0:b47aaa131075 | 36 | pc.printf("\n\n***************************\nMCU variable init OK!\r\n"); |
papaco | 0:b47aaa131075 | 37 | #endif |
papaco | 0:b47aaa131075 | 38 | init(); |
papaco | 0:b47aaa131075 | 39 | while(1); |
papaco | 0:b47aaa131075 | 40 | }//main |
papaco | 0:b47aaa131075 | 41 | |
papaco | 0:b47aaa131075 | 42 | void MANAGER(void){ |
papaco | 0:b47aaa131075 | 43 | GENERAL_TIME++; |
papaco | 0:b47aaa131075 | 44 | /******************************STATUS CONTROL******************************/ |
papaco | 0:b47aaa131075 | 45 | if(STATUS==HOME){/****************************************************HOME*/ |
papaco | 0:b47aaa131075 | 46 | if(GENERAL_TIME==1){ |
papaco | 0:b47aaa131075 | 47 | #if defined(DEBUG_MODE) |
papaco | 0:b47aaa131075 | 48 | pc.printf("\nHOME rutine start...\r\n"); |
papaco | 0:b47aaa131075 | 49 | #endif |
papaco | 0:b47aaa131075 | 50 | interface.setLED(1,1,0); |
papaco | 0:b47aaa131075 | 51 | interface.setFlash(true); |
papaco | 0:b47aaa131075 | 52 | cutter.down(); |
papaco | 0:b47aaa131075 | 53 | extruder.Init(); |
papaco | 0:b47aaa131075 | 54 | griddle.Home(); |
papaco | 0:b47aaa131075 | 55 | oven.Home(); |
papaco | 0:b47aaa131075 | 56 | }//if |
papaco | 0:b47aaa131075 | 57 | if(cutter.available()&&griddle.isFree()){ |
papaco | 0:b47aaa131075 | 58 | #if defined(DEBUG_MODE) |
papaco | 0:b47aaa131075 | 59 | pc.printf("\nHOME rutine end...\r\n"); |
papaco | 0:b47aaa131075 | 60 | #endif |
papaco | 0:b47aaa131075 | 61 | GENERAL_TIME=-1; |
papaco | 0:b47aaa131075 | 62 | STATUS=IDLE; |
papaco | 0:b47aaa131075 | 63 | interface.setLED(0,1,0); |
papaco | 0:b47aaa131075 | 64 | }//if |
papaco | 0:b47aaa131075 | 65 | }else if(STATUS==IDLE){/**********************************************IDLE*/ |
papaco | 0:b47aaa131075 | 66 | if(IDLE_TIMER==GENERAL_TIME){ |
papaco | 0:b47aaa131075 | 67 | GENERAL_TIME=0; |
papaco | 0:b47aaa131075 | 68 | if((Lupe.StartCheck())&&(interface.getFlash())) |
papaco | 0:b47aaa131075 | 69 | interface.setFlash(false); |
papaco | 0:b47aaa131075 | 70 | if((!Lupe.StartCheck())&&(!interface.getFlash())) |
papaco | 0:b47aaa131075 | 71 | interface.setFlash(true); |
papaco | 0:b47aaa131075 | 72 | if(interface.getStart()){ |
papaco | 0:b47aaa131075 | 73 | #if defined(DEBUG_MODE) |
papaco | 0:b47aaa131075 | 74 | pc.printf("\nIDLE Done\r\n"); |
papaco | 0:b47aaa131075 | 75 | #endif |
papaco | 0:b47aaa131075 | 76 | STATUS=PRODUCTION; |
papaco | 0:b47aaa131075 | 77 | GENERAL_TIME=-1; |
papaco | 0:b47aaa131075 | 78 | interface.setLED(1,1,1); |
papaco | 0:b47aaa131075 | 79 | interface.setFlash(true); |
papaco | 0:b47aaa131075 | 80 | }//if |
papaco | 0:b47aaa131075 | 81 | }//if |
papaco | 0:b47aaa131075 | 82 | }else if(STATUS==PRODUCTION){/**********************************PRODUCTION*/ |
papaco | 0:b47aaa131075 | 83 | if(GENERAL_TIME==0){//INIT |
papaco | 0:b47aaa131075 | 84 | //DesiredProduction= TORTILLA(interface.getTortilla()); |
papaco | 0:b47aaa131075 | 85 | #if defined(DEBUG_MODE) |
papaco | 0:b47aaa131075 | 86 | pc.printf("\nProduction of %f Tortillas...\r\n",extruder.getPosition()); |
papaco | 0:b47aaa131075 | 87 | #endif |
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 | 0:b47aaa131075 | 97 | }else{//Dough detected |
papaco | 0:b47aaa131075 | 98 | if((extruder.getTimer()>=5000)&&(extruder.getPosition()>=0.1)){//Check every 5s |
papaco | 0:b47aaa131075 | 99 | extruder.setTimer(0); |
papaco | 0:b47aaa131075 | 100 | extruder.Step(); |
papaco | 0:b47aaa131075 | 101 | #if defined(DEBUG_MODE) |
papaco | 0:b47aaa131075 | 102 | pc.printf("\nExtruder position:%f\r\n",extruder.getPosition()); |
papaco | 0:b47aaa131075 | 103 | #endif |
papaco | 0:b47aaa131075 | 104 | }//if |
papaco | 0:b47aaa131075 | 105 | }//else |
papaco | 0:b47aaa131075 | 106 | if(extruder.getPosition()>=0.1){ |
papaco | 0:b47aaa131075 | 107 | //EXTRUDER_PRODUCTION=true; |
papaco | 0:b47aaa131075 | 108 | #if defined(DEBUG_MODE) |
papaco | 0:b47aaa131075 | 109 | pc.printf("\nExtruder reached end position\r\n"); |
papaco | 0:b47aaa131075 | 110 | #endif |
papaco | 0:b47aaa131075 | 111 | GENERAL_TIME=-1; |
papaco | 0:b47aaa131075 | 112 | STATUS=HOME; |
papaco | 0:b47aaa131075 | 113 | interface.setLED(1,1,0); |
papaco | 0:b47aaa131075 | 114 | interface.setFlash(true); |
papaco | 0:b47aaa131075 | 115 | }//if |
papaco | 0:b47aaa131075 | 116 | }//else if |
papaco | 0:b47aaa131075 | 117 | |
papaco | 0:b47aaa131075 | 118 | /*****************************GENERAL CONTROL******************************/ |
papaco | 0:b47aaa131075 | 119 | /*************************GENERAL INTERFACE CONTROL************************/ |
papaco | 0:b47aaa131075 | 120 | //Flash Control |
papaco | 0:b47aaa131075 | 121 | interface.check(); |
papaco | 0:b47aaa131075 | 122 | |
papaco | 0:b47aaa131075 | 123 | /*************************GENERAL MACHINE CONTROL**************************/ |
papaco | 0:b47aaa131075 | 124 | |
papaco | 0:b47aaa131075 | 125 | /*************************GENERAL CUTTER CONTROL***************************/ |
papaco | 0:b47aaa131075 | 126 | cutter.check(); |
papaco | 0:b47aaa131075 | 127 | |
papaco | 0:b47aaa131075 | 128 | /*************************GENERAL EXTRUDER CONTROL*************************/ |
papaco | 0:b47aaa131075 | 129 | extruder.check(); |
papaco | 0:b47aaa131075 | 130 | |
papaco | 0:b47aaa131075 | 131 | /*************************GENERAL GRIDDLE CONTROL**************************/ |
papaco | 0:b47aaa131075 | 132 | if(griddle.check()){ |
papaco | 0:b47aaa131075 | 133 | #if defined(DEBUG_MODE) |
papaco | 0:b47aaa131075 | 134 | pc.printf("\nGriddle moving\r\n"); |
papaco | 0:b47aaa131075 | 135 | #endif |
papaco | 0:b47aaa131075 | 136 | }//if |
papaco | 0:b47aaa131075 | 137 | |
papaco | 0:b47aaa131075 | 138 | /*************************GENERAL OVEN CONTROL*****************************/ |
papaco | 0:b47aaa131075 | 139 | |
papaco | 0:b47aaa131075 | 140 | return; |
papaco | 0:b47aaa131075 | 141 | }//MANAGER |
papaco | 0:b47aaa131075 | 142 | |
papaco | 0:b47aaa131075 | 143 | void init(void){ |
papaco | 0:b47aaa131075 | 144 | #if defined(DEBUG_MODE) |
papaco | 0:b47aaa131075 | 145 | pc.printf("\nMachine modules is starting...\r\n"); |
papaco | 0:b47aaa131075 | 146 | #endif |
papaco | 0:b47aaa131075 | 147 | interface.Init(); |
papaco | 0:b47aaa131075 | 148 | #if defined(DEBUG_MODE) |
papaco | 0:b47aaa131075 | 149 | pc.printf("INTERFACE OK!\r\n"); |
papaco | 0:b47aaa131075 | 150 | #endif |
papaco | 0:b47aaa131075 | 151 | Lupe.Init(); |
papaco | 0:b47aaa131075 | 152 | #if defined(DEBUG_MODE) |
papaco | 0:b47aaa131075 | 153 | pc.printf("MACHINE OK!\r\n"); |
papaco | 0:b47aaa131075 | 154 | #endif |
papaco | 0:b47aaa131075 | 155 | cutter.Init(); |
papaco | 0:b47aaa131075 | 156 | #if defined(DEBUG_MODE) |
papaco | 0:b47aaa131075 | 157 | pc.printf("CUTTER OK!\r\n"); |
papaco | 0:b47aaa131075 | 158 | #endif |
papaco | 0:b47aaa131075 | 159 | extruder.Init(); |
papaco | 0:b47aaa131075 | 160 | #if defined(DEBUG_MODE) |
papaco | 0:b47aaa131075 | 161 | pc.printf("EXTRUDER OK!\r\n"); |
papaco | 0:b47aaa131075 | 162 | #endif |
papaco | 0:b47aaa131075 | 163 | griddle.Init(); |
papaco | 0:b47aaa131075 | 164 | #if defined(DEBUG_MODE) |
papaco | 0:b47aaa131075 | 165 | pc.printf("GRIDDLE OK!\r\n"); |
papaco | 0:b47aaa131075 | 166 | #endif |
papaco | 0:b47aaa131075 | 167 | oven.Init(); |
papaco | 0:b47aaa131075 | 168 | #if defined(DEBUG_MODE) |
papaco | 0:b47aaa131075 | 169 | pc.printf("OVEN OK!\r\n"); |
papaco | 0:b47aaa131075 | 170 | #endif |
papaco | 0:b47aaa131075 | 171 | timer.attach(&MANAGER,0.001); |
papaco | 0:b47aaa131075 | 172 | #if defined(DEBUG_MODE) |
papaco | 0:b47aaa131075 | 173 | pc.printf("Time Manager OK!\r\n"); |
papaco | 0:b47aaa131075 | 174 | #endif |
papaco | 0:b47aaa131075 | 175 | wait(5); |
papaco | 0:b47aaa131075 | 176 | #if defined(DEBUG_MODE) |
papaco | 0:b47aaa131075 | 177 | pc.printf("\nInit process done...\r\n"); |
papaco | 0:b47aaa131075 | 178 | #endif |
papaco | 0:b47aaa131075 | 179 | STATUS=HOME; |
papaco | 0:b47aaa131075 | 180 | GENERAL_TIME=0; |
papaco | 0:b47aaa131075 | 181 | return; |
papaco | 0:b47aaa131075 | 182 | }//init |