Smart coffee machine with facial recognition and remote control
Dependencies: Camera_LS_Y201 EthernetInterface EthernetNetIf HTTPClient SRF05 TextLCD mbed-rtos mbed-src
Diff: machine.cpp
- Revision:
- 0:43669f623d43
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/machine.cpp Wed Jan 15 11:09:52 2014 +0000 @@ -0,0 +1,87 @@ +#include "machine.h" + +DigitalOut relaisMachine(p5); +AnalogIn capteurLumiereChauffe(p16); +DigitalOut relaisLectureCapteursMachine(p8); + +void attendreFinDePreparation() +{ + while(!capteurChauffeClignotant()); + while(capteurChauffeClignotant()); +} + +bool machineEteinte() +{ + // La machine est considérée comme éteinte si le capteur de chauffe ne clignote + // pas et si les voyant d'intensité sont éteints + return !capteurChauffeClignotant() && getPreferenceIntensite() == -1; +} + +void allumerMachine() +{ + relaisMachine = 1; + relaisLectureCapteursMachine = 1; + + // On attend la fin de la chauffe + while(capteurChauffeClignotant()); + + relaisLectureCapteursMachine = 0; + + // La machine est prete + relaisMachine = 0; + wait(0.2); +} + +bool capteurChauffeClignotant() +{ + return capteurChauffeClignotant(0.5, 0.5); +} + +bool capteurChauffeClignotant(float seuil_min, float seuil_max) +{ + Timer t; + t.start(); + + int nb = 0; + + float valeur_actuelle, valeur_min = 1.0, valeur_max = 0.0; + + wait(0.2); // on attend un état stable + while(t.read() < 1.0) + { + nb ++; + valeur_actuelle = capteurLumiereChauffe.read(); + wait(0.02); + + if(valeur_min > valeur_actuelle) + valeur_min = valeur_actuelle; + + if(valeur_max < valeur_actuelle) + valeur_max = valeur_actuelle; + } + + printf("Min : %.3f\t\tMax : %.3f\t\t%d\r\n", valeur_min, valeur_max, nb); + + t.stop(); + + return valeur_min < seuil_min && valeur_max > seuil_max; +} + +void eteindreMachine() +{ + relaisMachine = 1; + wait(1); + relaisLectureCapteursMachine = 1; + + // On attend la fin de la chauffe + while(capteurChauffeClignotant()); + + relaisLectureCapteursMachine = 0; + relaisMachine = 0; + wait(0.2); +} + +bool machineOccupee() +{ + return getPreferenceIntensite() == -1; +}