Alberto Terrazas / Mbed 2 deprecated Lupe

Dependencies:   mbed

Committer:
papaco
Date:
Mon Feb 11 15:28:07 2019 +0000
Revision:
0:b47aaa131075
Child:
1:4fb1de70cd4d
lad

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 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