Smart coffee machine with facial recognition and remote control

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

Committer:
projetmacintel
Date:
Wed Jan 15 11:09:52 2014 +0000
Revision:
0:43669f623d43
dep?t final PAO Macintel

Who changed what in which revision?

UserRevisionLine numberNew contents of line
projetmacintel 0:43669f623d43 1 #include "machine.h"
projetmacintel 0:43669f623d43 2
projetmacintel 0:43669f623d43 3 DigitalOut relaisMachine(p5);
projetmacintel 0:43669f623d43 4 AnalogIn capteurLumiereChauffe(p16);
projetmacintel 0:43669f623d43 5 DigitalOut relaisLectureCapteursMachine(p8);
projetmacintel 0:43669f623d43 6
projetmacintel 0:43669f623d43 7 void attendreFinDePreparation()
projetmacintel 0:43669f623d43 8 {
projetmacintel 0:43669f623d43 9 while(!capteurChauffeClignotant());
projetmacintel 0:43669f623d43 10 while(capteurChauffeClignotant());
projetmacintel 0:43669f623d43 11 }
projetmacintel 0:43669f623d43 12
projetmacintel 0:43669f623d43 13 bool machineEteinte()
projetmacintel 0:43669f623d43 14 {
projetmacintel 0:43669f623d43 15 // La machine est considérée comme éteinte si le capteur de chauffe ne clignote
projetmacintel 0:43669f623d43 16 // pas et si les voyant d'intensité sont éteints
projetmacintel 0:43669f623d43 17 return !capteurChauffeClignotant() && getPreferenceIntensite() == -1;
projetmacintel 0:43669f623d43 18 }
projetmacintel 0:43669f623d43 19
projetmacintel 0:43669f623d43 20 void allumerMachine()
projetmacintel 0:43669f623d43 21 {
projetmacintel 0:43669f623d43 22 relaisMachine = 1;
projetmacintel 0:43669f623d43 23 relaisLectureCapteursMachine = 1;
projetmacintel 0:43669f623d43 24
projetmacintel 0:43669f623d43 25 // On attend la fin de la chauffe
projetmacintel 0:43669f623d43 26 while(capteurChauffeClignotant());
projetmacintel 0:43669f623d43 27
projetmacintel 0:43669f623d43 28 relaisLectureCapteursMachine = 0;
projetmacintel 0:43669f623d43 29
projetmacintel 0:43669f623d43 30 // La machine est prete
projetmacintel 0:43669f623d43 31 relaisMachine = 0;
projetmacintel 0:43669f623d43 32 wait(0.2);
projetmacintel 0:43669f623d43 33 }
projetmacintel 0:43669f623d43 34
projetmacintel 0:43669f623d43 35 bool capteurChauffeClignotant()
projetmacintel 0:43669f623d43 36 {
projetmacintel 0:43669f623d43 37 return capteurChauffeClignotant(0.5, 0.5);
projetmacintel 0:43669f623d43 38 }
projetmacintel 0:43669f623d43 39
projetmacintel 0:43669f623d43 40 bool capteurChauffeClignotant(float seuil_min, float seuil_max)
projetmacintel 0:43669f623d43 41 {
projetmacintel 0:43669f623d43 42 Timer t;
projetmacintel 0:43669f623d43 43 t.start();
projetmacintel 0:43669f623d43 44
projetmacintel 0:43669f623d43 45 int nb = 0;
projetmacintel 0:43669f623d43 46
projetmacintel 0:43669f623d43 47 float valeur_actuelle, valeur_min = 1.0, valeur_max = 0.0;
projetmacintel 0:43669f623d43 48
projetmacintel 0:43669f623d43 49 wait(0.2); // on attend un état stable
projetmacintel 0:43669f623d43 50 while(t.read() < 1.0)
projetmacintel 0:43669f623d43 51 {
projetmacintel 0:43669f623d43 52 nb ++;
projetmacintel 0:43669f623d43 53 valeur_actuelle = capteurLumiereChauffe.read();
projetmacintel 0:43669f623d43 54 wait(0.02);
projetmacintel 0:43669f623d43 55
projetmacintel 0:43669f623d43 56 if(valeur_min > valeur_actuelle)
projetmacintel 0:43669f623d43 57 valeur_min = valeur_actuelle;
projetmacintel 0:43669f623d43 58
projetmacintel 0:43669f623d43 59 if(valeur_max < valeur_actuelle)
projetmacintel 0:43669f623d43 60 valeur_max = valeur_actuelle;
projetmacintel 0:43669f623d43 61 }
projetmacintel 0:43669f623d43 62
projetmacintel 0:43669f623d43 63 printf("Min : %.3f\t\tMax : %.3f\t\t%d\r\n", valeur_min, valeur_max, nb);
projetmacintel 0:43669f623d43 64
projetmacintel 0:43669f623d43 65 t.stop();
projetmacintel 0:43669f623d43 66
projetmacintel 0:43669f623d43 67 return valeur_min < seuil_min && valeur_max > seuil_max;
projetmacintel 0:43669f623d43 68 }
projetmacintel 0:43669f623d43 69
projetmacintel 0:43669f623d43 70 void eteindreMachine()
projetmacintel 0:43669f623d43 71 {
projetmacintel 0:43669f623d43 72 relaisMachine = 1;
projetmacintel 0:43669f623d43 73 wait(1);
projetmacintel 0:43669f623d43 74 relaisLectureCapteursMachine = 1;
projetmacintel 0:43669f623d43 75
projetmacintel 0:43669f623d43 76 // On attend la fin de la chauffe
projetmacintel 0:43669f623d43 77 while(capteurChauffeClignotant());
projetmacintel 0:43669f623d43 78
projetmacintel 0:43669f623d43 79 relaisLectureCapteursMachine = 0;
projetmacintel 0:43669f623d43 80 relaisMachine = 0;
projetmacintel 0:43669f623d43 81 wait(0.2);
projetmacintel 0:43669f623d43 82 }
projetmacintel 0:43669f623d43 83
projetmacintel 0:43669f623d43 84 bool machineOccupee()
projetmacintel 0:43669f623d43 85 {
projetmacintel 0:43669f623d43 86 return getPreferenceIntensite() == -1;
projetmacintel 0:43669f623d43 87 }