![](/media/cache/group/default_image.jpg.50x50_q85.jpg)
.
Dependencies: RTC-DS1307 mbed
main.cpp
- Committer:
- Karrots3
- Date:
- 2016-04-18
- Revision:
- 0:3fa629914ea5
- Child:
- 1:134750dc8585
File content as of revision 0:3fa629914ea5:
#include "mbed.h" #include "Servo.h" #include "Rtc_Ds1307.h" #include "note.h" DigitalIn bottone1(p23); DigitalOut ledR(p30); DigitalOut ledG(p29); DigitalOut ledB(p28); AnalogIn sensore_lum(p20); AnalogIn potenziometro(p15); PwmOut piezo(p20); Serial pc(USBTX, USBRX, "pc"); bool flag1=0, flag2=0; int ultimo_giorno=0; double temp_lum; int orario; long long int c; /* struct orario { int ora; int minuti; }; */ void setOrario_Pastiglia(); void suono(int frequenza, int beat); void scesa_della_pastiglia(); void seriale(Rtc_Ds1307::Time_rtc time); int main() { Rtc_Ds1307::Time_rtc time= {}; setOrario_Pastiglia(); while(1) { if(ultimo_giorno!=time.date) { //if ultimo giorno è oggi if(orario == time.hour) { //if è l'ora della pappa scesa_della_pastiglia(); ultimo_giorno=time.date; } else if(bottone1 && time.hour==(orario-1) && time.min>=30) { //30 min prima scesa_della_pastiglia(); ultimo_giorno=time.date; } else if(bottone1 && time.hour>orario) { //l'ora è gia passata ma devo ancora prenderlo scesa_della_pastiglia(); ultimo_giorno=time.date; } else { if(bottone1) { //l'ora deve ancora venire e premo bottone ledR=1; suono(NOTE_B4,1); wait(1); ledR=0; } } } else { //gia fatto oggi e premo bottone if(bottone1) { ledR=1; suono(NOTE_B4,1); } } }//while(1) }//main void scesa_della_pastiglia() { ledB=1; suono(440,1); do { /*pastiglia*/ c++; if(bottone1) { flag1=1; /////funzione del servo che gira per far scendere la pastiglia ledG=1; ledB=0; wait_ms(10); temp_lum=sensore_lum; c=0; } else if(c>0 && c%1000==0) { suono(NOTE_D5, 1); } } while(!flag1) ; flag1=0; do { c++; if(sensore_lum<=temp_lum/20) { flag1=1; ledG=0; suono(NOTE_A3,1); } else if(c>0 && c%1000==0) { suono(NOTE_D5, 1); } wait_ms(10); } while(!flag1); } void setOrario_Pastiglia() { bool pot=0; bool seri=0; bool Fpot=0; do { if(bottone1) pot=1; wait_ms(1); } while(!pot); if(pot) { wait(0.2); ledR=1; ledG=1; ledB=1; suono(NOTE_A3, 2); do { if(bottone1) { ledR=0; ledG=0; ledB=0; orario=(potenziometro/1024)*24; Fpot=1; suono(NOTE_A3, 1); } } while(!Fpot); } } void suono(int frequenza, int beat) { piezo.period(1.0 / frequenza); piezo.write(0.5); wait(1.0 / beat); piezo.write(0); wait(0.05); } void seriale(Rtc_Ds1307::Time_rtc time) { int c; pc.printf("**********************************\n"); pc.printf("* Menu : *\n"); pc.printf("* 1 - imposta ora orologio *\n"); pc.printf("* 2 - imposta ora pastiglia *\n"); pc.printf("* 3 - mostra settaggi *\n"); pc.scanf("%d", &c); switch(c) { case 1: pc.printf("Giorno (0..31)"); pc.scanf("%d", &time.date); pc.printf("Mese (1..12)"); pc.scanf("%d", &time.mon); pc.printf("Anno "); pc.scanf("%d", &time.year); pc.printf("Ore (0..23)"); pc.scanf("%d", &time.hour); pc.printf("Minuti (0..59)"); pc.scanf("%d", &time.min); pc.printf("Secondi (0..59)"); pc.scanf("%d", &time.sec); break; case 2: pc.printf("Orario pastiglia"); pc.scanf("%d", &orario); break; case 3: 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); break; } }