.

Dependencies:   RTC-DS1307 Servo mbed

Fork of Progetto_Tandem_Finale by Tandem

Embed: (wiki syntax)

« Back to documentation index

Show/hide line numbers main.cpp Source File

main.cpp

00001 #include "mbed.h"
00002 #include "note.h"
00003 #include "Servo.h"
00004 #include "Rtc_Ds1307.h"
00005 
00006 DigitalIn bottone(p14);
00007 DigitalOut ledR(p25);
00008 DigitalOut ledG(p24);
00009 DigitalOut ledB(p26);
00010 PwmOut piezo(p22);
00011 Servo myservo1(p23);
00012 Servo myservo2(p21);
00013 Rtc_Ds1307 rtc( p9,p10 );
00014 Serial pc(USBTX, USBRX, "pc");
00015 
00016 int c=0;
00017 int a=0;
00018 int b=0;
00019 int f=0;
00020 int orario_pastiglia=0, ultimo_giorno=0;
00021 int flag=0;
00022 
00023 void suono(int frequenza, int beat);
00024 void movimento_servi();
00025 void seriale(Rtc_Ds1307::Time_rtc time);
00026 
00027 int main()
00028 {
00029     Rtc_Ds1307::Time_rtc time= {};
00030     ledB=1;
00031     suono(NOTE_B4,1);
00032     wait(0.5);
00033     seriale(time);
00034     while(1) {
00035 
00036         if(bottone) {
00037             flag=0;
00038             ledG=1;
00039             suono(NOTE_B4,8);
00040             wait(0.1);
00041             do {
00042                 flag=0;
00043                 wait_ms(1);
00044                 c++;
00045                 if(c++>=10000) {
00046                     ledG=0;
00047                     ledR=1;
00048                     suono(NOTE_C5,1);
00049                     flag=1;
00050                 } else if(bottone) flag=2;
00051             } while(flag==0);
00052             ledR=0;
00053             if(flag==2) {
00054                 movimento_servi();
00055             }else if(flag==1){seriale(time);}
00056         }
00057 
00058 
00059         if(ultimo_giorno!=time.date) {
00060             if(orario_pastiglia==time.hour) {
00061                 movimento_servi();
00062                 ultimo_giorno=time.date;
00063             } else if(time.hour==orario_pastiglia-1 || time.hour>orario_pastiglia) {
00064                 movimento_servi();
00065                 ultimo_giorno=time.date;
00066             }
00067         }//gia fatto oggi?
00068 
00069         wait_ms(1);
00070     }
00071 }
00072 /*
00073 pc.printf("a=%d03", a);
00074 pc.printf("b=%d03", b);
00075 */
00076 void movimento_servi()
00077 {
00078     if(a<2) {
00079         a++;
00080         pc.printf("a=%d03", a);
00081     } else if(a>=2) {
00082         for(float i=0; i<30; i++) {
00083             myservo1=i;
00084             wait(0.1);
00085             a=0;
00086             b++;
00087             pc.printf("b=%d03", b);
00088         }
00089     }
00090     if(b==5) {
00091         for(float i=180; i<0; i++)
00092             myservo1=i;
00093         wait(0.1);
00094         b=0;
00095     }
00096 
00097 
00098     if(f==0) {
00099         for(float i=0; i<30; i++)
00100             myservo2=i;
00101         wait(0.1);
00102         f++;
00103     } else if(f==1)
00104         for(float i=0; i<60; i++)
00105             myservo2=i;
00106     wait(0.1);
00107     f++;
00108     if(f==3) {
00109         for(float i=60; i<0; i--)
00110             myservo2=i;
00111         wait(0.1);
00112         f=0;
00113     }
00114 }
00115 
00116 void suono(int frequenza, int beat)
00117 {
00118     piezo.period(1.0 / frequenza);
00119     piezo.write(0.5);
00120     wait(1.0 / beat);
00121     piezo.write(0);
00122     wait(0.05);
00123 }
00124 
00125 void seriale(Rtc_Ds1307::Time_rtc time)
00126 {
00127     int s;
00128     do{
00129     pc.printf("**********************************\n");
00130     pc.printf("* Menu :                         *\n");
00131     pc.printf("* 1 - imposta ora orologio       *\n");
00132     pc.printf("* 2 - imposta ora pastiglia      *\n");
00133     pc.printf("* 3 - mostra settaggi            *\n");
00134     pc.printf("* 4 - esci                       *\n");
00135     pc.scanf("%d", &s);
00136     switch(s) {
00137         case 1:
00138             pc.printf("Giorno (0..31)");
00139             pc.scanf("%d", &time.date);
00140             pc.printf("Mese (1..12)");
00141             pc.scanf("%d", &time.mon);
00142             pc.printf("Anno ");
00143             pc.scanf("%d", &time.year);
00144             pc.printf("Ore (0..23)");
00145             pc.scanf("%d", &time.hour);
00146             pc.printf("Minuti (0..59)");
00147             pc.scanf("%d", &time.min);
00148             pc.printf("Secondi (0..59)");
00149             pc.scanf("%d", &time.sec);
00150             break;
00151         case 2:
00152             pc.printf("Orario pastiglia");
00153             pc.scanf("%d", &orario_pastiglia);
00154             break;
00155         case 3:
00156             pc.printf("Ora sono le : %02d:%02d:%02d del %02d/%02d/%04d \n", time.hour, time.min, time.sec, time.mon, time.date, time.year);
00157             break;
00158         case 4: pc.printf("Uscita");break;
00159     }
00160     }while(s!=4);
00161 }