.
Dependencies: RTC-DS1307 Servo mbed
Fork of Progetto_Tandem_Finale by
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 }
Generated on Wed Jul 20 2022 23:25:21 by 1.7.2