yoo
Dependencies: 7SegSRDriver_youcef C12832_lcd EthernetInterface_youcef NetworkAPI TimeZone mbed-rtos mbed
main.cpp
- Committer:
- sefyou
- Date:
- 2017-06-06
- Revision:
- 0:3bc2fc472428
File content as of revision 0:3bc2fc472428:
#include "mbed.h" #include "7SegSRDriver.h" #include "EthernetInterface.h" #include "Time.h" #include "C12832_lcd.h" //#include "C12832.h" #include "NetworkAPI/buffer.hpp" #include "NetworkAPI/ip/address.hpp" #include "NetworkAPI/udp/socket.hpp" DigitalOut Buzzer(p6); const char* MCAST_GRP = "224.1.1.1"; const int MCAST_PORT = 8888; const char* ip= "172.16.202.4"; const char* masque= "255.255.0.0"; const char* gateway= "172.16.0.5"; Timer t; SSegSRDriver_chronometre display(p26,p7,p25, SSegSRDriver_COMN_CATHODE); //data , clock, latch // Chrono SSegSRDriver_domicile display2(p23,p7,p24, SSegSRDriver_COMN_CATHODE); //data , clock, latch // Visiteur SSegSRDriver_visiteur display3(p21,p7,p22, SSegSRDriver_COMN_CATHODE); //data , clock, latch // domicile //C12832 lcd(p5, p7, p6, p8, p11); //le mod d'affichage /*************************AFFICHE DOMICILE*************************************/ void afficherDOM(SSegSRDriver_domicile display2, int centaine, int dizaine, int unite) { display2.write_domicile(centaine,0);//C display2.write_domicile_2(dizaine,0);//D display2.write_domicile_3(unite,0);//U } /*************************AFFICHE VISITEUR*************************************/ void afficherVIS(SSegSRDriver_visiteur display3, int centaine, int dizaine, int unite) { display3.write_visiteur(centaine,0);//C display3.write_visiteur_2(dizaine,0);//D display3.write_visiteur_3(unite,0);//U } /*************************AFFICHE CHRONOMETRE**********************************/ void affiche_chrono(SSegSRDriver_chronometre display,int unite, int dizaine, int centaine,int millier) { display.write_chronometre_4(millier,0); display.write_chronometre_3(centaine,0); display.write_chronometre_2(dizaine,0); display.write_chronometre(unite,0); // le 0 c'est le dp il es tjf off } /*************************CALCULE INCREMENTE***********************************/ void calculIncremente(int* centaine, int* dizaine, int* unite) { if((*unite) >=10) { (*unite)=(*unite)-10; ((*dizaine))++; } if(((*dizaine)) >=10) { ((*dizaine))-=10; ((*centaine))++; } } /*************************CALCULE DECREMENTE***********************************/ void calculDecremente(int* centaine, int* dizaine, int* unite) { if((*unite)<0) //si l'unité est inférieur a 0 { (*unite) +=10; // unité sera égale a 10 if((*dizaine) == 0) // si la dizaine est égale a 0 { if((*centaine) > 0)// et la centaine est suppérieur a 0 { (*centaine) -= 1; //centaine sera égale a centaine -1 (*dizaine) = 9; // dizaine sera égale a 9 } } else //si la dizaine ne sera pas égale a 0 { (*dizaine) -=1; //dizaine sera égale a dizaine -1 } } } /*************************PLAY CHRONOMETRE*************************************/ void playchrono(SSegSRDriver_chronometre display, int* unite, int* dizaine, int* centaine,int* millier) { t.start(); if (t.read_ms() >= 1000) { if ((*unite) >= 10) //si unité seconde suppérieur ou égale a 9 { (*dizaine)++; //dizaine seconde sera égale a dizaine seconde +1 (*unite) =0; //unité seconde sera égale a 0 } if ((*dizaine) >= 6) //si dizaine seconde suppérieur ou égale a 6 (60secondes) { (*dizaine) =0; //dizaine seconde sera égale a 0 (*unite) =0; //unité seconde sera égale a 0 (*centaine) ++; //unité minute sera égale a unité minute +1 } if ((*centaine) >= 10) { (*centaine)=0; (*millier)++; } display.write_chronometre_4(*millier,0); display.write_chronometre_3(*centaine,0); display.write_chronometre_2(*dizaine,0); display.write_chronometre(*unite,0); // le 0 c'est le dp il es tjf off // wait(1); (*unite)++; t.reset(); } } void resetchrono(SSegSRDriver_chronometre display, int* u_second, int* d_second, int* u_minute, int* d_minute) { *u_second = 0; *d_second = 0; *u_minute = 0; *d_minute = 0; /* stockd_minute = 0; stocku_minute = 0; stockd_second = 0; stocku_second = 0;*/ display.write_chronometre_4(*d_minute,0); display.write_chronometre_3(*u_minute,0); display.write_chronometre_2(*d_second,0); display.write_chronometre(*u_second,0); // le 0 c'est le dp il es tjf off } void pausechrono(SSegSRDriver_chronometre display, int* u_second, int* d_second, int* u_minute, int* d_minute) { /* stockd_minute = *d_minute; stocku_minute = *u_minute; stockd_second = *d_second; stocku_second = *u_second;*/ /* display.write_chronometre_4(stockd_minute,0); display.write_chronometre_3(stocku_minute,0); display.write_chronometre_2(stockd_second,0); display.write_chronometre(stocku_second,0); // le 0 c'est le dp il es tjf off */ } /*************************RESET DOMICILE***************************************/ void DOM_reset(SSegSRDriver_domicile display2, int u ,int d,int c) { display2.write_domicile(c,0);//C display2.write_domicile_2(d,0);//D display2.write_domicile_3(u,0);//U } /*************************RESET VISITEUR***************************************/ void VIS_reset(SSegSRDriver_visiteur display3) { } /*************************RESET CHRONOMETRE************************************/ void CHRONO_reset(SSegSRDriver_chronometre display) { } int main() { C12832_LCD lcd; //Graphics LCD EthernetInterface interface; interface.init(ip,masque,gateway); interface.connect(); UDPSocket server; server.bind(MCAST_PORT); server.init(); //Endpoint client; //Heure Timer heure; Endpoint nist; nist.set_address("utcnist.colorado.edu", 37); char out_buffer[] = ""; // Does not matter server.sendTo(nist, out_buffer, sizeof(out_buffer)); char data[255]; int n = server.receiveFrom(nist, data, sizeof(data)); unsigned int timeRes = ntohl( *((unsigned int*)data)); heure.start(); int heure01; int heure02; int minute01; int minute02; //char data[256]; //CHRONO int u_second = 0; //unité seconde int d_second = 0; //dizaine seconde int u_minute = 0; //unité minute int d_minute = 0; //dizaine minute //SCORE DOMICILE int uniteDOM = 0; int dizaineDOM = 0; int centaineDOM = 0; //SCORE VISITEUR int uniteVIS =0; int dizaineVIS =0; int centaineVIS = 0; //VERIFICATIONS DES CHANGEMENT 1 = CHANGEMENT EFFECTUER 0 = AUCUN CHANGEMENT EFFECTUER bool incrementeDOM; bool decrementeDOM; bool incrementeVIS; bool decrementeVIS; //STOCKAGE int stockUNITEDOM; int stockDIZAINEDOM; int stockCENTAINEDOM; int stockUNITEVIS; int stockDIZAINEVIS; int stockCENTAINEVIS; int chrono; /*int stocku_second; int stockd_second; int stocku_minute; int stockd_minute;*/ if(heure.read_ms() >= 1000) { set_time(timeRes); time_t unixTime= time(NULL); TimeStamp timeStamp(unixTime); heure01= ((timeStamp.getHour()+2) /10); heure02= ((timeStamp.getHour()+2) %10); minute01= ((timeStamp.getMinute()) /10); minute02= ((timeStamp.getMinute()) %10); display.write_chronometre_4(heure01,0); display.write_chronometre_3(heure02,0); display.write_chronometre_2(minute01,0); display.write_chronometre(minute02,0); // le 0 c'est le dp il es tjf off lcd.cls(); lcd.printf("%d",timeStamp.getHour()+2); lcd.printf("\n"); lcd.printf("%d",timeStamp.getMinute()); lcd.printf("\n"); lcd.printf("%d", timeStamp.getSecond()); timeRes+=1; heure.reset(); } //char buffer[32]; // test buffer hour //lcd.printf("%d", timeRes); while(1) { //INITIALISATION DES CHANGEMENT A 0 incrementeDOM = false; decrementeDOM = false; incrementeVIS = false; decrementeVIS = false; data[1] =0; //changer la data. serveur non blokant server.receiveFrom(nist, data, sizeof(data)); /***********************************BUZZER*************************************/ if(data[0]=='B' && data[1]=='U' && data[2] =='Z' && data[3] == 'Z') { Buzzer = 1; wait(1); Buzzer = 0; } /********************************RESET DOMICILE********************************/ if (data[0]=='R' && data[1]=='D' && data[2] =='O' && data[3] == 'M') { uniteDOM = 0; dizaineDOM = 0; centaineDOM = 0; //DOM_reset(display2,0,0,0); afficherDOM(display2, centaineDOM, dizaineDOM, uniteDOM); } /********************************RESET VISITEUR********************************/ if (data[0]=='R' && data[1]=='V' && data[2] =='I' && data[3] == 'S') { uniteVIS = 0; dizaineVIS = 0; centaineVIS = 0; afficherVIS(display3, centaineVIS, dizaineVIS, uniteVIS); } /***********************************LE RETOUR**********************************/ if (data[0]=='B' && data[1]=='A' && data[2] =='C' && data[3] == 'K') { /*uniteDOM = 11; dizaineDOM = 11; centaineDOM = 11; afficherDOM(display2, centaineDOM, dizaineDOM, uniteDOM); uniteVIS = 11; dizaineVIS = 11; centaineVIS = 11; afficherVIS(display3, centaineVIS, dizaineVIS, uniteVIS); u_second = 11; d_second = 11; u_minute = 11; d_minute = 11; affiche_chrono(display, u_second, d_second, u_minute, d_minute); */ /*AFFICHER HEURE */ /* time_t seconds = time(NULL); strftime(buffer, 32, "%I:%M %p", localtime(&seconds));*/ //displayHeure(heure, timeRes, heure01, heure02, minute01, minute02); } /***********CONFIGURATION CHRONO & SCORE LORS DU CHOIX DU SPORT****************/ if (//data[0]=='C' && data[1]=='T' && data[2] =='*' && data[3] == '*' || //tenis //data[0]=='C' && data[1]=='R' && data[2] =='U' && data[3] == 'G' || //rugby data[0]=='C' && data[1]=='B' && data[2] =='B' && data[3] == '*' || //basket data[0]=='C' && data[1]=='H' && data[2] =='*' && data[3] == '*' || //handball data[0]=='C' && data[1]=='F' && data[2] =='U' && data[3] == 'T' || //futsal //data[0]=='C' && data[1]=='V' && data[2] =='B' && data[3] == '*' || //volley-ball //data[0]=='C' && data[1]=='B' && data[2] =='A' && data[3] == 'D' || //badminton //data[0]=='C' && data[1]=='T' && data[2] =='D' && data[3] == 'T' || //tenis de table data[0]=='C' && data[1]=='B' && data[2] =='O' && data[3] == 'X' || //box data[0]=='C' && data[1]=='F' && data[2] =='L' && data[3] == 'A' //flag ) { uniteDOM = 0; dizaineDOM = 0; centaineDOM = 0; afficherDOM(display2, centaineDOM, dizaineDOM, uniteDOM); uniteVIS = 0; dizaineVIS = 0; centaineVIS = 0; afficherVIS(display3, centaineVIS, dizaineVIS, uniteVIS); u_second = 0; d_second = 0; u_minute = 0; d_minute = 0; affiche_chrono(display, u_second, d_second, u_minute, d_minute); } /***********************CONFIGURATION CHRONOMETRE******************************/ if (data[0]=='C' && data[1]=='H' && data[2] =='R' && data[3] == 'O') // configuration chronometre { u_second = 0; d_second = 0; u_minute = 0; d_minute = 0; affiche_chrono(display, u_second, d_second, u_minute, d_minute); uniteVIS = 11; dizaineVIS = 11; centaineVIS = 11; afficherVIS(display3, centaineVIS, dizaineVIS, uniteVIS); uniteDOM = 11; dizaineDOM = 11; centaineDOM = 11; afficherDOM(display2, centaineDOM, dizaineDOM, uniteDOM); } /******************CONFIGURATION SCORE LORS DU CHOIX DU SPORT******************/ if (data[0]=='C' && data[1]=='V' && data[2] =='B' && data[3] == '*' || //volley-ball data[0]=='C' && data[1]=='B' && data[2] =='A' && data[3] == 'D' || //badminton data[0]=='C' && data[1]=='T' && data[2] =='D' && data[3] == 'T' //tenis de table ) { uniteDOM = 0; dizaineDOM = 0; centaineDOM = 0; afficherDOM(display2, centaineDOM, dizaineDOM, uniteDOM); uniteVIS = 0; dizaineVIS = 0; centaineVIS = 0; afficherVIS(display3, centaineVIS, dizaineVIS, uniteVIS); } /***********************************SET DOMICILE*******************************/ if (data[0]=='S' && data[1]=='E' && data[2] =='T' && data[3] == 'D') { stockUNITEDOM= uniteDOM; stockDIZAINEDOM= dizaineDOM; stockCENTAINEDOM= centaineDOM; stockUNITEVIS= uniteVIS; stockDIZAINEVIS= dizaineVIS; stockCENTAINEVIS= centaineVIS; uniteDOM = 0; dizaineDOM = 0; centaineDOM = 0; afficherDOM(display2, centaineDOM, dizaineDOM, uniteDOM); uniteVIS = 0; dizaineVIS = 0; centaineVIS = 0; afficherVIS(display3, centaineVIS, dizaineVIS, uniteVIS); // INCREMENTER MATRICE DE LED } /***********************************SET VISITEUR*******************************/ if (data[0]=='S' && data[1]=='E' && data[2] =='T' && data[3] == 'V') { stockUNITEDOM= uniteDOM; stockDIZAINEDOM= dizaineDOM; stockCENTAINEDOM= centaineDOM; stockUNITEVIS= uniteVIS; stockDIZAINEVIS= dizaineVIS; stockCENTAINEVIS= centaineVIS; uniteDOM = 0; dizaineDOM = 0; centaineDOM = 0; afficherDOM(display2, centaineDOM, dizaineDOM, uniteDOM); uniteVIS = 0; dizaineVIS = 0; centaineVIS = 0; afficherVIS(display3, centaineVIS, dizaineVIS, uniteVIS); // INCREMENTER MATRICE DE LED } /***********************************SET ****************************** if (data[0]=='S' && data[1]=='E' && data[2] =='T' && data[3] == 'V') { }*/ /***********************************FIN DU MATCH*******************************/ if (data[0]=='F' && data[1]=='G' && data[2] =='A' && data[3] == 'M') { /* stockUNITEDOM= uniteDOM; stockDIZAINEDOM= dizaineDOM; stockCENTAINEDOM= centaineDOM; stockUNITEVIS= uniteVIS; stockDIZAINEVIS= dizaineVIS; stockCENTAINEVIS= centaineVIS;*/ Buzzer = 1; wait(1); Buzzer = 0; afficherDOM(display2, stockCENTAINEDOM, stockDIZAINEDOM, stockUNITEDOM); afficherVIS(display3, stockCENTAINEVIS, stockDIZAINEVIS, stockUNITEVIS); //FIN DU MATCH MATRICE A LED } /************************SCORE DOMICILE****************************************/ /*************************INCREMENTATION DOMICILE******************************/ if (data[0]=='S' && data[1]=='D' && data[2] =='+' && data[3] == '*') { uniteDOM++; incrementeDOM = true; } if (data[0]=='S' && data[1]=='D' && data[2] =='+' && data[3] == '2') { uniteDOM+=2; incrementeDOM = true; } if (data[0]=='S' && data[1]=='D' && data[2] =='+' && data[3] == '3') { uniteDOM+=3; incrementeDOM = true; } if (data[0]=='S' && data[1]=='D' && data[2] =='+' && data[3] == '5') { uniteDOM+=5; incrementeDOM = true; } if (data[0]=='S' && data[1]=='D' && data[2] =='+' && data[3] == '6') { uniteDOM+=6; incrementeDOM = true; } if (data[0]=='S' && data[1]=='D' && data[2] =='1' && data[3] == '0') { dizaineDOM+=1; incrementeDOM = true; } if (data[0]=='S' && data[1]=='D' && data[2] =='1' && data[3] == '5') { dizaineDOM+=1; uniteDOM+=5; incrementeDOM = true; } if(incrementeDOM)//SI UNE MODIFICATIONS EST FAITE FALSE DEVIENT TRUE ET RENTRE DANS LA FONCTION { calculIncremente(¢aineDOM, &dizaineDOM, &uniteDOM); afficherDOM(display2, centaineDOM, dizaineDOM, uniteDOM); } /************************SCORE DOMICILE****************************************/ /*************************DECREMENTATION DOMICILE******************************/ if (data[0]=='S' && data[1]=='D' && data[2] =='-' && data[3] == '*') { uniteDOM -= 1; decrementeDOM = true; } if (data[0]=='S' && data[1]=='D' && data[2] =='-' && data[3] == '2') { uniteDOM -= 2; decrementeDOM = true; } if (data[0]=='S' && data[1]=='D' && data[2] =='-' && data[3] == '3') { uniteDOM -= 3; decrementeDOM = true; } if (data[0]=='S' && data[1]=='D' && data[2] =='-' && data[3] == '5') { uniteDOM -= 5; decrementeDOM = true; } if (data[0]=='S' && data[1]=='D' && data[2] =='-' && data[3] == '6') { uniteDOM -= 6; decrementeDOM = true; } if (data[0]=='S' && data[1]=='D' && data[2] =='1' && data[3] == '0') { dizaineDOM -= 1; decrementeDOM = true; } if (data[0]=='S' && data[1]=='D' && data[2] =='1' && data[3] == '5') { dizaineDOM -= 1; uniteDOM -=5; decrementeDOM = true; } if(decrementeDOM)//SI UNE MODIFICATIONS EST FAITE FALSE DEVIENT TRUE ET RENTRE DANS LA FONCTION { calculDecremente(¢aineDOM, &dizaineDOM, &uniteDOM); afficherDOM(display2, centaineDOM, dizaineDOM, uniteDOM); } /************************SCORE VIVITEUR****************************************/ /*************************INCREMENTATION VISITEUR******************************/ if (data[0]=='S' && data[1]=='V' && data[2] =='+' && data[3] == '*') { uniteVIS++; incrementeVIS = true; } if (data[0]=='S' && data[1]=='V' && data[2] =='+' && data[3] == '2') { uniteVIS+=2; incrementeVIS = true; } if (data[0]=='S' && data[1]=='V' && data[2] =='+' && data[3] == '3') { uniteVIS+=3; incrementeVIS = true; } if (data[0]=='S' && data[1]=='V' && data[2] =='+' && data[3] == '5') { uniteVIS+=5; incrementeVIS = true; } if (data[0]=='S' && data[1]=='V' && data[2] =='+' && data[3] == '6') { uniteVIS+=6; incrementeVIS = true; } if (data[0]=='S' && data[1]=='V' && data[2] =='1' && data[3] == '0') { dizaineVIS+=1; incrementeVIS = true; } if (data[0]=='S' && data[1]=='V' && data[2] =='1' && data[3] == '5') { dizaineVIS+=1; uniteVIS+=5; incrementeVIS = true; } if(incrementeVIS) { calculIncremente(¢aineVIS, &dizaineVIS, &uniteVIS); afficherVIS(display3, centaineVIS, dizaineVIS, uniteVIS); } /*************************DECREMENTATION VISITEUR******************************/ if (data[0]=='S' && data[1]=='V' && data[2] =='-' && data[3] == '*') { uniteVIS -= 1; decrementeVIS = true; } if (data[0]=='S' && data[1]=='V' && data[2] =='-' && data[3] == '2') { uniteVIS -= 2; decrementeVIS = true; } if (data[0]=='S' && data[1]=='V' && data[2] =='-' && data[3] == '3') { uniteVIS -= 3; decrementeVIS = true; } if (data[0]=='S' && data[1]=='V' && data[2] =='-' && data[3] == '5') { uniteVIS -= 5; decrementeVIS = true; } if (data[0]=='S' && data[1]=='V' && data[2] =='-' && data[3] == '6') { uniteVIS -= 6; decrementeVIS = true; } if (data[0]=='S' && data[1]=='V' && data[2] =='1' && data[3] == '0') { dizaineVIS -= 1; decrementeVIS = true; } if (data[0]=='S' && data[1]=='V' && data[2] =='1' && data[3] == '5') { dizaineVIS -= 1; uniteVIS -= 5; decrementeVIS = true; } if(decrementeVIS) { calculDecremente(¢aineVIS, &dizaineVIS, &uniteVIS); afficherVIS(display3,centaineVIS, dizaineVIS, uniteVIS); } /****************************PLAY CHRONOMETRE**********************************/ /*if (data[0]=='P' && data[1]=='L' && data[2] =='C' && data[3] == 'H') { //play_chrono(display,&u_second,&d_second,&u_minute,&d_minute); //affiche_chrono(display,u_second,d_second,u_minute,d_minute); }*/ /****************************PLAY CHRONOMETRE**********************************/ if (data[0]=='P' && data[1]=='L' && data[2] =='C' && data[3] == 'H') //play { /*Buzzer = 1; wait(1); Buzzer = 0;*/ //server.receiveFrom(client, data, sizeof(data)); chrono=1; /*stockd_minute = d_minute; stocku_minute = u_minute; stockd_second = d_second; stocku_second = u_second;*/ /* if (u_second >= 10) //si unité seconde suppérieur ou égale a 9 { d_second++; //dizaine seconde sera égale a dizaine seconde +1 u_second =0; //unité seconde sera égale a 0 } if (d_second >= 6) //si dizaine seconde suppérieur ou égale a 6 (60secondes) { d_second =0; //dizaine seconde sera égale a 0 u_second =0; //unité seconde sera égale a 0 u_minute ++; //unité minute sera égale a unité minute +1 } if (u_minute >= 10) { u_minute=0; d_minute++; } display.write_chronometre_4(d_minute,0); display.write_chronometre_3(u_minute,0); display.write_chronometre_2(d_second,0); display.write_chronometre(u_second,0); // le 0 c'est le dp il es tjf off wait(1); u_second++; server.receiveFrom(client, data, sizeof(data)); */ } /****************************RESET CHRONOMETRE*********************************/ if (data[0]=='R' && data[1]=='C' && data[2] =='H' && data[3] == '*') //reset { chrono=3; /*u_second = 0; d_second = 0; u_minute = 0; d_minute = 0; stockd_minute = 0; stocku_minute = 0; stockd_second = 0; stocku_second = 0; display.write_chronometre_4(d_minute,0); display.write_chronometre_3(u_minute,0); display.write_chronometre_2(d_second,0); display.write_chronometre(u_second,0); // le 0 c'est le dp il es tjf off */ } /****************************PAUSE CHRONOMETRE**********************************/ if (data[0]=='P' && data[1]=='C' && data[2] =='H' && data[3] == '*') //pause { chrono=2; /*stockd_minute = d_minute; stocku_minute = u_minute; stockd_second = d_second; stocku_second = u_second; display.write_chronometre_4(stockd_minute,0); display.write_chronometre_3(stocku_minute,0); display.write_chronometre_2(stockd_second,0); display.write_chronometre(stocku_second,0); // le 0 c'est le dp il es tjf off */ } if (data[0]=='F' && data[1]=='P' && data[2] =='E' && data[3] == 'R') //FPERIODE { chrono=2; Buzzer = 1; wait(1); Buzzer = 0; } switch(chrono) { case 1: playchrono(display,&u_second,&d_second,&u_minute,&d_minute); /* data[1] =0; //changer la data. serveur non blokant */ break; case 2: pausechrono(display,&u_second,&d_second,&u_minute,&d_minute); break; case 3: resetchrono(display,&u_second,&d_second,&u_minute,&d_minute); break; default: pausechrono(display,&u_second,&d_second,&u_minute,&d_minute); } } // ferme le whimle } // ferme le int