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 "preferences.h"
projetmacintel 0:43669f623d43 2
projetmacintel 0:43669f623d43 3 DigitalOut relaisSelectionRotation1(p21);
projetmacintel 0:43669f623d43 4 DigitalOut relaisSelectionRotation2(p22);
projetmacintel 0:43669f623d43 5 DigitalOut relaisSelectionPression(p24);
projetmacintel 0:43669f623d43 6 DigitalOut relaisLectureCapteurs(p8);
projetmacintel 0:43669f623d43 7
projetmacintel 0:43669f623d43 8 AnalogIn capteurLumiereHaut(p15);
projetmacintel 0:43669f623d43 9 AnalogIn capteurLumiereBas(p20);
projetmacintel 0:43669f623d43 10
projetmacintel 0:43669f623d43 11 float largeur_impulsion_relais = 0.08;
projetmacintel 0:43669f623d43 12 float seuil_capteurs_lumiere = 0.5;
projetmacintel 0:43669f623d43 13
projetmacintel 0:43669f623d43 14 void thread_checkCapteurs()
projetmacintel 0:43669f623d43 15 {
projetmacintel 0:43669f623d43 16 AnalogIn capteurLumiere1(p15); // - longueur 3
projetmacintel 0:43669f623d43 17 AnalogIn capteurLumiere2(p16); // - signal chauffe
projetmacintel 0:43669f623d43 18 AnalogIn capteurLumiere3(p17); // défaut grain
projetmacintel 0:43669f623d43 19 AnalogIn capteurLumiere4(p18); // symbole bas gauche
projetmacintel 0:43669f623d43 20 AnalogIn capteurLumiere5(p19); // longueur 3 ---> BUG (valeur divisée par deux ?)
projetmacintel 0:43669f623d43 21 AnalogIn capteurLumiere6(p20); // - intensité 3
projetmacintel 0:43669f623d43 22 DigitalOut relaisUtilisationCapteurs(p8);
projetmacintel 0:43669f623d43 23 DigitalIn capteurEau(p11);
projetmacintel 0:43669f623d43 24 capteurEau.mode(PullUp);
projetmacintel 0:43669f623d43 25
projetmacintel 0:43669f623d43 26 relaisUtilisationCapteurs = 1;
projetmacintel 0:43669f623d43 27
projetmacintel 0:43669f623d43 28 while(1)
projetmacintel 0:43669f623d43 29 {
projetmacintel 0:43669f623d43 30 printf("1:%.3f\t 2:%.3f 3:%.3f\t 4:%.3f\t 5:%.3f\t 6:%.3f\t EAU:%d\n\r", capteurLumiere1.read(), capteurLumiere2.read(), capteurLumiere3.read(), capteurLumiere4.read(), capteurLumiere5.read(), capteurLumiere6.read(), capteurEau.read());
projetmacintel 0:43669f623d43 31 }
projetmacintel 0:43669f623d43 32 }
projetmacintel 0:43669f623d43 33
projetmacintel 0:43669f623d43 34 int getPreferenceLongueur()
projetmacintel 0:43669f623d43 35 {
projetmacintel 0:43669f623d43 36 float val;
projetmacintel 0:43669f623d43 37 int nombre_incrementations = 0;
projetmacintel 0:43669f623d43 38
projetmacintel 0:43669f623d43 39 do // on se positionne sur le capteur de lumière
projetmacintel 0:43669f623d43 40 {
projetmacintel 0:43669f623d43 41 val = getValeurCapteurLumiere(capteurLumiereHaut);
projetmacintel 0:43669f623d43 42 if(val > seuil_capteurs_lumiere)
projetmacintel 0:43669f623d43 43 {
projetmacintel 0:43669f623d43 44 simulerSelectionLongueur();
projetmacintel 0:43669f623d43 45 nombre_incrementations ++;
projetmacintel 0:43669f623d43 46
projetmacintel 0:43669f623d43 47 if(nombre_incrementations == 5)
projetmacintel 0:43669f623d43 48 return -1; // aucun voyant n'est allumé
projetmacintel 0:43669f623d43 49 }
projetmacintel 0:43669f623d43 50 } while(val > seuil_capteurs_lumiere);
projetmacintel 0:43669f623d43 51
projetmacintel 0:43669f623d43 52 switch(nombre_incrementations) // on retourne sur la position initiale
projetmacintel 0:43669f623d43 53 {
projetmacintel 0:43669f623d43 54 case 0:
projetmacintel 0:43669f623d43 55 // cas où l'on se trouve déjà sur le capteur de lumière
projetmacintel 0:43669f623d43 56 break;
projetmacintel 0:43669f623d43 57
projetmacintel 0:43669f623d43 58 case 1:
projetmacintel 0:43669f623d43 59 simulerSelectionPrecedenteLongueur();
projetmacintel 0:43669f623d43 60 break;
projetmacintel 0:43669f623d43 61
projetmacintel 0:43669f623d43 62 case 2:
projetmacintel 0:43669f623d43 63 simulerSelectionPrecedenteLongueur();
projetmacintel 0:43669f623d43 64 simulerSelectionPrecedenteLongueur();
projetmacintel 0:43669f623d43 65 break;
projetmacintel 0:43669f623d43 66
projetmacintel 0:43669f623d43 67 case 3:
projetmacintel 0:43669f623d43 68 simulerSelectionLongueur();
projetmacintel 0:43669f623d43 69 simulerSelectionLongueur();
projetmacintel 0:43669f623d43 70 break;
projetmacintel 0:43669f623d43 71
projetmacintel 0:43669f623d43 72 case 4:
projetmacintel 0:43669f623d43 73 simulerSelectionLongueur();
projetmacintel 0:43669f623d43 74 break;
projetmacintel 0:43669f623d43 75 }
projetmacintel 0:43669f623d43 76
projetmacintel 0:43669f623d43 77 int selection = (3 + 5 - nombre_incrementations) % 5;
projetmacintel 0:43669f623d43 78 if(selection == 0)
projetmacintel 0:43669f623d43 79 return 5;
projetmacintel 0:43669f623d43 80
projetmacintel 0:43669f623d43 81 else
projetmacintel 0:43669f623d43 82 return selection;
projetmacintel 0:43669f623d43 83 }
projetmacintel 0:43669f623d43 84
projetmacintel 0:43669f623d43 85 int getPreferenceIntensite()
projetmacintel 0:43669f623d43 86 {
projetmacintel 0:43669f623d43 87 float val;
projetmacintel 0:43669f623d43 88 int rang = -1, selection;
projetmacintel 0:43669f623d43 89
projetmacintel 0:43669f623d43 90 for(int i = 0 ; i < 6 ; i ++)
projetmacintel 0:43669f623d43 91 {
projetmacintel 0:43669f623d43 92 val = getValeurCapteurLumiere(capteurLumiereBas);
projetmacintel 0:43669f623d43 93 if(val < seuil_capteurs_lumiere)
projetmacintel 0:43669f623d43 94 {
projetmacintel 0:43669f623d43 95 rang = i;
projetmacintel 0:43669f623d43 96
projetmacintel 0:43669f623d43 97 if(i == 0)
projetmacintel 0:43669f623d43 98 break;
projetmacintel 0:43669f623d43 99 }
projetmacintel 0:43669f623d43 100
projetmacintel 0:43669f623d43 101 simulerSelectionIntensite();
projetmacintel 0:43669f623d43 102 }
projetmacintel 0:43669f623d43 103
projetmacintel 0:43669f623d43 104 if(rang == -1)
projetmacintel 0:43669f623d43 105 return -1;
projetmacintel 0:43669f623d43 106
projetmacintel 0:43669f623d43 107 selection = (6 - rang + 3) % 6;
projetmacintel 0:43669f623d43 108 if(selection == 0)
projetmacintel 0:43669f623d43 109 return 6;
projetmacintel 0:43669f623d43 110
projetmacintel 0:43669f623d43 111 else
projetmacintel 0:43669f623d43 112 return selection;
projetmacintel 0:43669f623d43 113 }
projetmacintel 0:43669f623d43 114
projetmacintel 0:43669f623d43 115 int setPreferenceLongueur(int preference)
projetmacintel 0:43669f623d43 116 {
projetmacintel 0:43669f623d43 117 float val;
projetmacintel 0:43669f623d43 118
projetmacintel 0:43669f623d43 119 do // on se positionne sur le capteur de lumière
projetmacintel 0:43669f623d43 120 {
projetmacintel 0:43669f623d43 121 val = getValeurCapteurLumiere(capteurLumiereHaut);
projetmacintel 0:43669f623d43 122 if(val > seuil_capteurs_lumiere)
projetmacintel 0:43669f623d43 123 simulerSelectionLongueur();
projetmacintel 0:43669f623d43 124 } while(val > seuil_capteurs_lumiere);
projetmacintel 0:43669f623d43 125
projetmacintel 0:43669f623d43 126 switch(preference) // puis on atteind la sélection souhaitée, au plus tot
projetmacintel 0:43669f623d43 127 {
projetmacintel 0:43669f623d43 128 case 1:
projetmacintel 0:43669f623d43 129 simulerSelectionPrecedenteLongueur();
projetmacintel 0:43669f623d43 130 simulerSelectionPrecedenteLongueur();
projetmacintel 0:43669f623d43 131 break;
projetmacintel 0:43669f623d43 132
projetmacintel 0:43669f623d43 133 case 2:
projetmacintel 0:43669f623d43 134 simulerSelectionPrecedenteLongueur();
projetmacintel 0:43669f623d43 135 break;
projetmacintel 0:43669f623d43 136
projetmacintel 0:43669f623d43 137 case 3:
projetmacintel 0:43669f623d43 138 // On y est déjà
projetmacintel 0:43669f623d43 139 break;
projetmacintel 0:43669f623d43 140
projetmacintel 0:43669f623d43 141 case 4:
projetmacintel 0:43669f623d43 142 simulerSelectionLongueur();
projetmacintel 0:43669f623d43 143 break;
projetmacintel 0:43669f623d43 144
projetmacintel 0:43669f623d43 145 case 5:
projetmacintel 0:43669f623d43 146 simulerSelectionLongueur();
projetmacintel 0:43669f623d43 147 simulerSelectionLongueur();
projetmacintel 0:43669f623d43 148 break;
projetmacintel 0:43669f623d43 149 }
projetmacintel 0:43669f623d43 150
projetmacintel 0:43669f623d43 151 return 0;
projetmacintel 0:43669f623d43 152 }
projetmacintel 0:43669f623d43 153
projetmacintel 0:43669f623d43 154 int setPreferenceIntensite(int preference)
projetmacintel 0:43669f623d43 155 {
projetmacintel 0:43669f623d43 156 float val;
projetmacintel 0:43669f623d43 157
projetmacintel 0:43669f623d43 158 do
projetmacintel 0:43669f623d43 159 {
projetmacintel 0:43669f623d43 160 val = getValeurCapteurLumiere(capteurLumiereBas);
projetmacintel 0:43669f623d43 161 if(val > seuil_capteurs_lumiere)
projetmacintel 0:43669f623d43 162 simulerSelectionIntensite();
projetmacintel 0:43669f623d43 163 } while(val > seuil_capteurs_lumiere);
projetmacintel 0:43669f623d43 164
projetmacintel 0:43669f623d43 165 for(int i = 0 ; i < (3 + preference) % 6 ; i ++)
projetmacintel 0:43669f623d43 166 simulerSelectionIntensite();
projetmacintel 0:43669f623d43 167
projetmacintel 0:43669f623d43 168 return 0;
projetmacintel 0:43669f623d43 169 }
projetmacintel 0:43669f623d43 170
projetmacintel 0:43669f623d43 171 float getValeurCapteurLumiere(AnalogIn capteurLumiere)
projetmacintel 0:43669f623d43 172 {
projetmacintel 0:43669f623d43 173 relaisLectureCapteurs = 1;
projetmacintel 0:43669f623d43 174 wait(0.01);
projetmacintel 0:43669f623d43 175 float valeur_capteur = capteurLumiere.read();
projetmacintel 0:43669f623d43 176 relaisLectureCapteurs = 0;
projetmacintel 0:43669f623d43 177 wait(0.01);
projetmacintel 0:43669f623d43 178 return valeur_capteur;
projetmacintel 0:43669f623d43 179 }
projetmacintel 0:43669f623d43 180
projetmacintel 0:43669f623d43 181 void simulerSelectionLongueur()
projetmacintel 0:43669f623d43 182 {
projetmacintel 0:43669f623d43 183 relaisSelectionRotation1 = 1;
projetmacintel 0:43669f623d43 184 wait(largeur_impulsion_relais / 2);
projetmacintel 0:43669f623d43 185 relaisSelectionRotation2 = 1;
projetmacintel 0:43669f623d43 186 wait(largeur_impulsion_relais / 2);
projetmacintel 0:43669f623d43 187 relaisSelectionRotation1 = 0;
projetmacintel 0:43669f623d43 188 wait(largeur_impulsion_relais / 2);
projetmacintel 0:43669f623d43 189 relaisSelectionRotation2 = 0;
projetmacintel 0:43669f623d43 190 wait(1.5*largeur_impulsion_relais);
projetmacintel 0:43669f623d43 191 }
projetmacintel 0:43669f623d43 192
projetmacintel 0:43669f623d43 193 void simulerSelectionPrecedenteLongueur()
projetmacintel 0:43669f623d43 194 {
projetmacintel 0:43669f623d43 195 relaisSelectionRotation2 = 1;
projetmacintel 0:43669f623d43 196 wait(largeur_impulsion_relais / 2);
projetmacintel 0:43669f623d43 197 relaisSelectionRotation1 = 1;
projetmacintel 0:43669f623d43 198 wait(largeur_impulsion_relais / 2);
projetmacintel 0:43669f623d43 199 relaisSelectionRotation2 = 0;
projetmacintel 0:43669f623d43 200 wait(largeur_impulsion_relais / 2);
projetmacintel 0:43669f623d43 201 relaisSelectionRotation1 = 0;
projetmacintel 0:43669f623d43 202 wait(1.5*largeur_impulsion_relais);
projetmacintel 0:43669f623d43 203 }
projetmacintel 0:43669f623d43 204
projetmacintel 0:43669f623d43 205 void simulerSelectionIntensite()
projetmacintel 0:43669f623d43 206 {
projetmacintel 0:43669f623d43 207 relaisSelectionPression = 1;
projetmacintel 0:43669f623d43 208 wait(largeur_impulsion_relais);
projetmacintel 0:43669f623d43 209 relaisSelectionPression = 0;
projetmacintel 0:43669f623d43 210 wait(largeur_impulsion_relais);
projetmacintel 0:43669f623d43 211 }