![](/media/cache/group/default_image.jpg.50x50_q85.jpg)
2018.08能代CORE'S キッチン ミッション用プログラム
Fork of mission by
Diff: main.cpp
- Revision:
- 4:82660534b32d
- Parent:
- 3:0562feabce7b
- Child:
- 5:b4ebd3587dae
diff -r 0562feabce7b -r 82660534b32d main.cpp --- 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