2018.08能代CORE'S キッチン ミッション用プログラム

Dependencies:   BMP180 mbed

Fork of mission by hitomi shio

Revision:
4:82660534b32d
Parent:
3:0562feabce7b
Child:
5:b4ebd3587dae
--- a/main.cpp	Wed Aug 08 08:12:53 2018 +0000
+++ b/main.cpp	Mon Aug 20 16:36:21 2018 +0000
@@ -3,23 +3,24 @@
 #include "BMP180.h"
 
 #define p0 1013.25f//海面気圧
-#define TIME_TOP      13
-#define TIME_WATER    10
-#define TIME_BUZZER   15
+#define TIME_TOP      17
+#define TIME_WATER    94
+#define TIME_BUZZER   274
 #define NUM           5
-#define RATE          10
-
-enum PHASE{EGG,SERVO,RISE,DROP,BUZZER} Phase;
-enum MOVE{HEAT,CRACK,OPEN,TOP,HEAT_BUZZER} Move;
+#define RATE          20
+#define JUDGE_ALT     2.0
 
-PwmOut         servo_crack1(p26);   
-PwmOut         servo_crack2(p25);
-PwmOut         servo_open1(p24);   
-PwmOut         servo_open2(p23);
-DigitalIn      rec1(p5);
-DigitalIn      rec2(p6);
-DigitalOut     heat(p22);  
-DigitalOut     buzzer(p21);
+enum PHASE{EGG,SERVO,CLOSE,RISE,DROP,BUZZER} Phase;
+enum MOVE{HEAT,CRACK,OPEN,HUTA,TOP,HEAT_BUZZER} Move;
+
+PwmOut         servo_crack1(p21);   
+PwmOut         servo_crack2(p22);
+PwmOut         servo_open1(p23);   
+PwmOut         servo_open2(p24);
+DigitalIn      rec1(p18);
+DigitalIn      rec2(p19);
+DigitalOut     heat(p25);  
+DigitalOut     buzzer(p16);
 DigitalOut     myled1(LED1);
 DigitalOut     myled2(LED2);
 DigitalOut     myled3(LED3);
@@ -31,7 +32,6 @@
 Timer          timer_top; 
 Timer          timer_all;
 Ticker         tic_mission;
-//Timeout        tim_servo;
 Ticker         tic_buzzer;
  
 bool           Save;
@@ -44,7 +44,7 @@
 float          _median(float data[], int num);
 float          Med_alt,Maeno_alt;
 float          Pressure,Temperature,Altitude;
-float          alt[NUM],max=-1000;
+float          alt[NUM],max=-5000;
 float          t;
 int            Cnt_top=0,Cnt_water=0;
 int            u=0;
@@ -58,6 +58,14 @@
     servo_crack2.period_ms(20);
     servo_open1.period_ms(20);
     servo_open2.period_ms(20);
+    servo_crack1.pulsewidth(0.001);
+    servo_crack2.pulsewidth(0.001);
+    for(float j=0;j<0.00009;j+=0.00001){
+        servo_open1.pulsewidth(0.00099-j);
+        wait(0.02);
+        servo_open2.pulsewidth(0.00094-j);
+        wait(0.02);
+    }
     fp = fopen("/local/out.txt", "a"); 
     fprintf(fp,"%f:Hello,World\n\r");
     fclose(fp);
@@ -65,17 +73,13 @@
     _heater_acc(); 
     Phase=EGG;  
     tic_mission.attach(&_mission,1.0/20);
-    //tic_buzzer.attach(&_buzzer,1.0/RATE);
     while(1){
-        //_buzzer();
-        /*if(Phase==BUZZER){ 
-            tic_mission.detach();*/
         if(Save){
             _data();
         }
-        /*if(timer_top.read()>=TIME_BUZZER){
+        if(timer_top.read()>=TIME_BUZZER){
             buzzer=0;
-        }*/
+        }
     }
 }
     
@@ -87,25 +91,50 @@
     myled4=!myled4;
     switch(Phase){
         case EGG:            
-                        buzzer=0;
                         myled1=0;
                         myled2=0;
-                        servo_crack1.pulsewidth(0.005);
-                        servo_crack2.pulsewidth(0.024);
+                        for(float i=0;i<0.00045;i+=0.00005){
+                            servo_crack1.pulsewidth(0.001+i);
+                            wait(0.02);
+                            servo_crack2.pulsewidth(0.001+i);
+                            wait(0.02);
+                        }            
                         t=timer_all.read();
                         Move=CRACK;
-                        Save=true;
+                        _data();
                         Phase=SERVO;
+                        break;
                         
-        case SERVO:     if(timer_all.read()-t>=1.0){
-                            servo_open1.pulsewidth(0.005);
-                            servo_open2.pulsewidth(0.024);
+        case SERVO:     
+                        if(timer_all.read()-t>=0.5){
+                            for(float j=0;j<0.00009;j+=0.00001){
+                                servo_open1.pulsewidth(0.0009+j);
+                                wait(0.02);
+                                servo_open2.pulsewidth(0.00085+j);
+                                wait(0.02);
+                            }
                             Move=OPEN;
+                            _data();
                             Save=true;
-                            //tim_servo.attach(&_servo, 1.0); 
+                            Phase=CLOSE;
+                        }
+                        break;
+                        
+        case CLOSE:     
+                        if(timer_all.read()-t>=1.5){
+                            for(float j=0;j<0.00009;j+=0.00001){
+                                servo_open1.pulsewidth(0.00099-j);
+                                wait(0.02);
+                                servo_open2.pulsewidth(0.00094-j);
+                                wait(0.02);
+                            }
+                            Move=HUTA;
+                            _data();
+                            Save=true;
                             Phase=RISE;
                         }
                         break;
+                            
         case RISE:      
                         for(int j=0;j<NUM;j++){
                             bmp.ReadData(&Temperature,&Pressure);
@@ -115,8 +144,8 @@
                         if(Med_alt>max){
                             max=Med_alt;
                             Cnt_top=0;
-                        }else if(max-Med_alt>=2.0){
-                            Cnt_top++;
+                        }else if(max-Med_alt>=JUDGE_ALT){
+                             Cnt_top++;
                         }
                         if(Cnt_top>=3||timer_acc.read()>=TIME_TOP){
                             myled1=1;
@@ -134,41 +163,27 @@
                             alt[i]=_getAlt(Pressure,Temperature);
                         }
                         Med_alt=_median(alt,NUM);
-                        if(Maeno_alt-Med_alt>=-1.0&&Maeno_alt-Med_alt<=1.0){
+                        if(Maeno_alt-Med_alt>=-5.0&&Maeno_alt-Med_alt<=5.0){
                             Cnt_water++;
                         }else{
                             Cnt_water=0;
                         }
-                        if(/*Cnt_water>=3||*/timer_top.read()>=TIME_WATER){
-                            //fp = fopen("/local/out.txt", "a"); 
+                        if(Cnt_water>=3||timer_top.read()>=TIME_WATER){
                             myled2=1;
                             buzzer=1;
-                            heat=0;
-                            //tic_buzzer.attach(&_buzzer,1/100);
+                            //heat=0;
                             Move=HEAT_BUZZER;
+                            _data();
                             Save=true;
-                            //fclose(fp);
                             Phase=BUZZER;
-                            //tic_buzzer.attach(&_buzzer,1.0/40);
-                            //tic_mission.detach();
-                            
                         }
-                        //break;
-                        
-        /*case BUZZER:
-                        if(timer_top.read()>=TIME_BUZZER){
-                            fp = fopen("/local/out.txt", "a"); 
-                            buzzer=0;
-                            fprintf(fp, "%f:ブザーOFF\n\r",timer_all.read());
-                            fclose(fp);
-                        }
-                        break;*/
+                        break;
         }  
 }
 
 void _heater_acc(){
         heat=0;
-        while(1){
+        while(1){ 
             if(u!=rec1){
                 heat=!heat;
                 u=rec1;
@@ -176,17 +191,8 @@
                 Save=true;
                 _data();
             }
-            /*if(rec1==1){
+            if(rec2==1){
                 heat=1;
-                Move=HEAT_ON;
-                Save=true;
-                _data();
-            }else if(rec1==0){
-                heat=0;
-                Move=HEAT_OFF;
-                Save=true; 
-            }*/
-            if(rec2==1){
                 timer_acc.start();
                 break;
             }
@@ -232,11 +238,4 @@
         fp = fopen("/local/out.txt", "a"); 
         fprintf(fp,"%f:%d\n\r",timer_all.read(),Move);
         fclose(fp);
-}
-
-/*void _servo(){
-        servo_open1.pulsewidth(0.005);
-        servo_open2.pulsewidth(0.024);
-        Move=OPEN;
-        Save=true;
-}*/
\ No newline at end of file
+}
\ No newline at end of file