Smart coffee machine with facial recognition and remote control

Dependencies:   Camera_LS_Y201 EthernetInterface EthernetNetIf HTTPClient SRF05 TextLCD mbed-rtos mbed-src

Embed: (wiki syntax)

« Back to documentation index

Show/hide line numbers machine.cpp Source File

machine.cpp

00001 #include "machine.h"
00002 
00003 DigitalOut relaisMachine(p5);
00004 AnalogIn capteurLumiereChauffe(p16);
00005 DigitalOut relaisLectureCapteursMachine(p8);
00006 
00007 void attendreFinDePreparation()
00008 {
00009     while(!capteurChauffeClignotant());
00010     while(capteurChauffeClignotant());
00011 }
00012 
00013 bool machineEteinte()
00014 {
00015     // La machine est considérée comme éteinte si le capteur de chauffe ne clignote
00016     // pas et si les voyant d'intensité sont éteints
00017     return !capteurChauffeClignotant() && getPreferenceIntensite() == -1;
00018 }
00019 
00020 void allumerMachine()
00021 {
00022     relaisMachine = 1;
00023     relaisLectureCapteursMachine = 1;
00024     
00025     // On attend la fin de la chauffe
00026     while(capteurChauffeClignotant());
00027     
00028     relaisLectureCapteursMachine = 0;
00029     
00030     // La machine est prete
00031     relaisMachine = 0;
00032     wait(0.2);
00033 }
00034 
00035 bool capteurChauffeClignotant()
00036 {
00037     return capteurChauffeClignotant(0.5, 0.5);
00038 }
00039 
00040 bool capteurChauffeClignotant(float seuil_min, float seuil_max)
00041 {
00042     Timer t;
00043     t.start();
00044     
00045     int nb = 0;
00046     
00047     float valeur_actuelle, valeur_min = 1.0, valeur_max = 0.0;
00048     
00049     wait(0.2); // on attend un état stable
00050     while(t.read() < 1.0)
00051     {
00052         nb ++;
00053         valeur_actuelle = capteurLumiereChauffe.read();
00054         wait(0.02);
00055         
00056         if(valeur_min > valeur_actuelle)
00057             valeur_min = valeur_actuelle;
00058         
00059         if(valeur_max < valeur_actuelle)
00060             valeur_max = valeur_actuelle;
00061     }
00062         
00063     printf("Min : %.3f\t\tMax : %.3f\t\t%d\r\n", valeur_min, valeur_max, nb);
00064         
00065     t.stop();
00066     
00067     return valeur_min < seuil_min && valeur_max > seuil_max;
00068 }
00069 
00070 void eteindreMachine()
00071 {
00072     relaisMachine = 1;
00073     wait(1);
00074     relaisLectureCapteursMachine = 1;
00075     
00076     // On attend la fin de la chauffe
00077     while(capteurChauffeClignotant());
00078     
00079     relaisLectureCapteursMachine = 0;
00080     relaisMachine = 0;
00081     wait(0.2);
00082 }
00083 
00084 bool machineOccupee()
00085 {
00086     return getPreferenceIntensite() == -1;
00087 }