Matthias Reichstam / Mbed 2 deprecated STMSchalterUebenKraft_TINF_29102018

Dependencies:   C12832 LM75B mbed

Embed: (wiki syntax)

« Back to documentation index

Show/hide line numbers main.cpp Source File

main.cpp

00001 #include "mbed.h"
00002 #include "LM75B.h"
00003 
00004 LM75B tmp(p28, p27);
00005 
00006 DigitalOut led1(LED1);
00007 DigitalOut led2(LED2);
00008 DigitalOut led3(LED3);
00009 DigitalOut led4(LED4);
00010 
00011 InterruptIn sw1(p14);
00012 InterruptIn sw2(p15);
00013 
00014 void flipper(void);
00015 void ON(void);
00016 void IDLE(void);
00017 void sw1Rise(void);
00018 void sw2Rise(void);
00019 void Time(void);
00020 void TimeOut(void);
00021 void Blink(void);
00022 void tempOut(void);
00023 void timeOutError(void);
00024 void errorBlink(void);
00025 void timeover(void);
00026 bool checker(void);
00027 bool checkerSW2(void);
00028 bool volatile sw2Pressed;
00029 bool volatile sw1Pressed;
00030 
00031 Timeout removeTime;
00032 Timer gettime;
00033 Ticker tickerflipper;
00034 int counter;
00035 
00036 enum Status{ST_IDLE=0, ST_ON, ST_TimeOut, ST_TempOut, ST_Error};
00037 Status volatile status;
00038 
00039 int main(void)
00040 {
00041     sw1.rise(&sw1Rise);
00042     sw2.rise(&sw2Rise);
00043     status = ST_IDLE;
00044     sw1Pressed = 0;
00045     sw2Pressed = 0;
00046     counter=0;
00047     led1=0, led2=0, led3=0, led4=0;
00048     
00049     while(1)
00050     {
00051         switch(status)
00052         {
00053             case ST_IDLE:IDLE()         ; break;
00054             case ST_ON:ON()             ; break;
00055             case ST_TimeOut:TimeOut()   ; break;
00056             case ST_TempOut:tempOut()   ; break;
00057             case ST_Error:timeover()    ; break;
00058         }
00059     }
00060 }
00061 
00062 void timeover(void)
00063 {
00064     printf("Ende gut, Alles gut\n");
00065     while(1)
00066     {}
00067 }
00068 
00069 void errorBlink(void)
00070 {
00071  led4 = !led4;
00072  
00073 }
00074 void timeOutError(void)
00075 {
00076     status = ST_Error;
00077     printf("Error TimeOut\n");
00078     printf("Status: %i\n", status);
00079 }
00080 
00081 void tempOut(void)
00082 {
00083     int countertmp = 0;
00084     
00085     printf("void tempOut\n");
00086     while(1)
00087     {
00088      printf("Temperatur: %f\n",tmp.read());
00089      if(checkerSW2() == true)
00090      {
00091          status = ST_ON;
00092          return;
00093      }   
00094      countertmp++;
00095      wait(1);
00096     }
00097 }
00098 
00099 void flipper(void)
00100 {
00101     printf("void flipper\n");
00102     led4 = !led4;
00103     if(counter == 3)
00104     {
00105      tickerflipper.detach();   
00106      counter=0;
00107     }
00108     else
00109     counter++; 
00110 }
00111 
00112 void TimeOut(void)
00113 {
00114     printf("void TimeOut\n");
00115     int counterto = 0;
00116     while(1)
00117     {
00118         printf("TimeOut: %i\n", counterto);
00119         counterto++;
00120         wait(1);
00121         
00122     if(checkerSW2() == true)
00123     {
00124         status = ST_TempOut;
00125         return;
00126     }
00127     }
00128 }
00129 
00130 void Time(void)
00131 {
00132     printf("void Time\n");
00133     if (gettime.read() ==0)
00134     {
00135         gettime.start();
00136     }
00137     
00138     else
00139         printf("Secunden: %f\n", gettime.read());
00140         gettime.reset();
00141 }
00142 
00143 bool checker(void)
00144 {
00145     if(sw1Pressed == true)
00146     {
00147         printf("void checker\n");
00148         Time();
00149         sw1Pressed = false;
00150         return true;
00151     }
00152     return false;
00153 }
00154 
00155 bool checkerSW2(void)
00156 {
00157     if(sw2Pressed == true)
00158     {
00159         printf("void checkerSW2\n");
00160         sw2Pressed = false;
00161         return true;
00162     }
00163     return false;
00164 }
00165     
00166 
00167 void sw1Rise(void)
00168 {   
00169     printf("sw1Rise\n");
00170     
00171     if(status == ST_ON || status == ST_IDLE) sw1Pressed = 1;
00172     wait_ms(200);
00173 }
00174 
00175 void sw2Rise(void)
00176 {
00177     printf("void sw2Rise\n");
00178     if(status == ST_ON || status == ST_TimeOut || status == ST_TempOut)  sw2Pressed = 1;
00179     wait_ms(200);
00180 }
00181 
00182 void ON(void)
00183 {
00184     printf("void ON\n");
00185     tickerflipper.attach(&flipper, 0.5);
00186     removeTime.attach(&timeOutError, 10);
00187     led1 = true; 
00188     
00189     while(1)
00190     {
00191         if(status == ST_Error)
00192         {
00193             printf("IDLE verlassen\n");
00194             tickerflipper.attach(&errorBlink, 0.3);
00195             led1=false;
00196         return;
00197         }
00198         if(checkerSW2() == true)
00199         {
00200             status = ST_TimeOut;
00201             removeTime.detach();
00202             return;
00203         }
00204         if (checker() == true)
00205         {
00206             status = ST_IDLE;
00207             removeTime.detach();
00208             led1=false;
00209             return;
00210         }
00211     }
00212 }
00213 
00214 void IDLE(void)
00215 {
00216     printf("void IDLE\n");
00217     removeTime.attach(&timeOutError, 10);
00218     while(1)
00219     {
00220         if(status == ST_Error)
00221         {
00222             printf("IDLE verlassen\n");
00223             tickerflipper.attach(&errorBlink, 0.3);
00224             led1=false;
00225         return;
00226         }
00227         if (checker() == true)
00228         {
00229             status = ST_ON;
00230             removeTime.detach();
00231             return;
00232         }
00233 
00234     }
00235 }