Smart coffee machine with facial recognition and remote control
Dependencies: Camera_LS_Y201 EthernetInterface EthernetNetIf HTTPClient SRF05 TextLCD mbed-rtos mbed-src
machine.cpp@0:43669f623d43, 2014-01-15 (annotated)
- 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?
User | Revision | Line number | New 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 | } |