Smart coffee machine with facial recognition and remote control
Dependencies: Camera_LS_Y201 EthernetInterface EthernetNetIf HTTPClient SRF05 TextLCD mbed-rtos mbed-src
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 }
Generated on Wed Jul 13 2022 03:22:24 by 1.7.2