web server load-drive and reading sensors based on LPC1768
Dependencies: DHT22 EthernetNetIf HTTPServer mbed
Leituras/Leitura.cpp@0:3125f39d20b4, 2015-12-07 (annotated)
- Committer:
- douglasofranco
- Date:
- Mon Dec 07 14:06:24 2015 +0000
- Revision:
- 0:3125f39d20b4
Web server load-drive and reading sensors based on LPC1768
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
douglasofranco | 0:3125f39d20b4 | 1 | #include "Leitura.h" |
douglasofranco | 0:3125f39d20b4 | 2 | #include "mbed.h" |
douglasofranco | 0:3125f39d20b4 | 3 | #include "DHT22.h" |
douglasofranco | 0:3125f39d20b4 | 4 | #include "TextLCD.h" |
douglasofranco | 0:3125f39d20b4 | 5 | #include "SensorHandler.h" |
douglasofranco | 0:3125f39d20b4 | 6 | |
douglasofranco | 0:3125f39d20b4 | 7 | AnalogIn sensCur(p15); |
douglasofranco | 0:3125f39d20b4 | 8 | AnalogIn sensCur2(p16); |
douglasofranco | 0:3125f39d20b4 | 9 | AnalogIn sensCur3(p17); |
douglasofranco | 0:3125f39d20b4 | 10 | AnalogIn sensCC (p18); |
douglasofranco | 0:3125f39d20b4 | 11 | DigitalIn sensAC (p27); |
douglasofranco | 0:3125f39d20b4 | 12 | DHT22 sensor(p11); |
douglasofranco | 0:3125f39d20b4 | 13 | |
douglasofranco | 0:3125f39d20b4 | 14 | DigitalOut dout(LED1); |
douglasofranco | 0:3125f39d20b4 | 15 | DigitalOut myled(LED4); |
douglasofranco | 0:3125f39d20b4 | 16 | |
douglasofranco | 0:3125f39d20b4 | 17 | int AC; |
douglasofranco | 0:3125f39d20b4 | 18 | int err; |
douglasofranco | 0:3125f39d20b4 | 19 | int szTemp; |
douglasofranco | 0:3125f39d20b4 | 20 | int szUmid; |
douglasofranco | 0:3125f39d20b4 | 21 | char szTemp2[10]; //utilizado no sensorhandler |
douglasofranco | 0:3125f39d20b4 | 22 | char szUmid2[10]; //utilizado no sensorhandler |
douglasofranco | 0:3125f39d20b4 | 23 | char Corrente[50]; |
douglasofranco | 0:3125f39d20b4 | 24 | char Corrente2[50]; |
douglasofranco | 0:3125f39d20b4 | 25 | char Corrente3[50]; |
douglasofranco | 0:3125f39d20b4 | 26 | //char Tensao[10]; |
douglasofranco | 0:3125f39d20b4 | 27 | char TensCC[10]; |
douglasofranco | 0:3125f39d20b4 | 28 | unsigned char k = 0; |
douglasofranco | 0:3125f39d20b4 | 29 | unsigned char h = 0; |
douglasofranco | 0:3125f39d20b4 | 30 | |
douglasofranco | 0:3125f39d20b4 | 31 | float sensorValue; |
douglasofranco | 0:3125f39d20b4 | 32 | float sensorValue_aux; |
douglasofranco | 0:3125f39d20b4 | 33 | float sensorValue2; |
douglasofranco | 0:3125f39d20b4 | 34 | float sensorValue_aux2; |
douglasofranco | 0:3125f39d20b4 | 35 | float sensorValue3; |
douglasofranco | 0:3125f39d20b4 | 36 | float sensorValue_aux3; |
douglasofranco | 0:3125f39d20b4 | 37 | float getValor; |
douglasofranco | 0:3125f39d20b4 | 38 | float Tcc; |
douglasofranco | 0:3125f39d20b4 | 39 | float TensAC; |
douglasofranco | 0:3125f39d20b4 | 40 | float media = 0; //para media movel |
douglasofranco | 0:3125f39d20b4 | 41 | float filtro[10]; //para media movel |
douglasofranco | 0:3125f39d20b4 | 42 | float media2 = 0; //para media movel |
douglasofranco | 0:3125f39d20b4 | 43 | float filtro2[10]; //para media movel |
douglasofranco | 0:3125f39d20b4 | 44 | |
douglasofranco | 0:3125f39d20b4 | 45 | float voltsporUnidade = 0.0008056640625; // 3.3/4096 |
douglasofranco | 0:3125f39d20b4 | 46 | float Vref = 3.3; |
douglasofranco | 0:3125f39d20b4 | 47 | float Vref2 = 3.11; |
douglasofranco | 0:3125f39d20b4 | 48 | float Offset = 2.3; //6.7; //Tensão CC |
douglasofranco | 0:3125f39d20b4 | 49 | float salto = 0.01559; //0.01563; |
douglasofranco | 0:3125f39d20b4 | 50 | float DHT = 62; //Taxa de amostragem DHT |
douglasofranco | 0:3125f39d20b4 | 51 | int chute=0; |
douglasofranco | 0:3125f39d20b4 | 52 | |
douglasofranco | 0:3125f39d20b4 | 53 | |
douglasofranco | 0:3125f39d20b4 | 54 | void Leituras::clima() |
douglasofranco | 0:3125f39d20b4 | 55 | { |
douglasofranco | 0:3125f39d20b4 | 56 | |
douglasofranco | 0:3125f39d20b4 | 57 | |
douglasofranco | 0:3125f39d20b4 | 58 | sensor.sample() ; |
douglasofranco | 0:3125f39d20b4 | 59 | |
douglasofranco | 0:3125f39d20b4 | 60 | szTemp = (sensor.getTemperature()/10.0); |
douglasofranco | 0:3125f39d20b4 | 61 | szUmid = (sensor.getHumidity()/10.0); |
douglasofranco | 0:3125f39d20b4 | 62 | |
douglasofranco | 0:3125f39d20b4 | 63 | } |
douglasofranco | 0:3125f39d20b4 | 64 | void Leituras::corrente() |
douglasofranco | 0:3125f39d20b4 | 65 | { |
douglasofranco | 0:3125f39d20b4 | 66 | sensorValue_aux = 0; |
douglasofranco | 0:3125f39d20b4 | 67 | for (int a=0; a<10; a++) { |
douglasofranco | 0:3125f39d20b4 | 68 | sensorValue_aux += sensCur.read(); |
douglasofranco | 0:3125f39d20b4 | 69 | } |
douglasofranco | 0:3125f39d20b4 | 70 | sensorValue_aux = sensorValue_aux / 10; |
douglasofranco | 0:3125f39d20b4 | 71 | sensorValue = ((((sensorValue_aux * Vref2) / voltsporUnidade)-1650)/DHT) - 12.56; |
douglasofranco | 0:3125f39d20b4 | 72 | sprintf( Corrente, "%0.2f", sensorValue); |
douglasofranco | 0:3125f39d20b4 | 73 | } |
douglasofranco | 0:3125f39d20b4 | 74 | |
douglasofranco | 0:3125f39d20b4 | 75 | void Leituras::corrente2() |
douglasofranco | 0:3125f39d20b4 | 76 | { |
douglasofranco | 0:3125f39d20b4 | 77 | sensorValue_aux2 = 0; |
douglasofranco | 0:3125f39d20b4 | 78 | |
douglasofranco | 0:3125f39d20b4 | 79 | for (int b=0; b<10; b++) { |
douglasofranco | 0:3125f39d20b4 | 80 | sensorValue_aux2 += sensCur2.read(); |
douglasofranco | 0:3125f39d20b4 | 81 | } |
douglasofranco | 0:3125f39d20b4 | 82 | sensorValue_aux2 = (sensorValue_aux2 / 10); |
douglasofranco | 0:3125f39d20b4 | 83 | sensorValue2 = ((((sensorValue_aux2 * Vref2) / voltsporUnidade)-1650)/DHT) - 12.36; |
douglasofranco | 0:3125f39d20b4 | 84 | sprintf( Corrente2, "%0.2f", sensorValue2); |
douglasofranco | 0:3125f39d20b4 | 85 | |
douglasofranco | 0:3125f39d20b4 | 86 | } |
douglasofranco | 0:3125f39d20b4 | 87 | |
douglasofranco | 0:3125f39d20b4 | 88 | void Leituras::corrente3() |
douglasofranco | 0:3125f39d20b4 | 89 | { |
douglasofranco | 0:3125f39d20b4 | 90 | sensorValue_aux3 = 0; |
douglasofranco | 0:3125f39d20b4 | 91 | |
douglasofranco | 0:3125f39d20b4 | 92 | for (int c=0; c<10; c++) { |
douglasofranco | 0:3125f39d20b4 | 93 | sensorValue_aux3 += sensCur3.read(); |
douglasofranco | 0:3125f39d20b4 | 94 | } |
douglasofranco | 0:3125f39d20b4 | 95 | sensorValue_aux3 = sensorValue_aux3 / 10; |
douglasofranco | 0:3125f39d20b4 | 96 | sensorValue3 = ((((sensorValue_aux3 * Vref2) / voltsporUnidade)-1650)/DHT) - 12.10; |
douglasofranco | 0:3125f39d20b4 | 97 | sprintf( Corrente3, "%0.2f", sensorValue3); |
douglasofranco | 0:3125f39d20b4 | 98 | } |
douglasofranco | 0:3125f39d20b4 | 99 | |
douglasofranco | 0:3125f39d20b4 | 100 | void Leituras::TensaoCC() |
douglasofranco | 0:3125f39d20b4 | 101 | { |
douglasofranco | 0:3125f39d20b4 | 102 | Tcc = 0; |
douglasofranco | 0:3125f39d20b4 | 103 | if (chute ==0){ |
douglasofranco | 0:3125f39d20b4 | 104 | Tcc= sensCC.read(); |
douglasofranco | 0:3125f39d20b4 | 105 | Tcc = ((Tcc * salto) + Offset); |
douglasofranco | 0:3125f39d20b4 | 106 | chute =1; |
douglasofranco | 0:3125f39d20b4 | 107 | } |
douglasofranco | 0:3125f39d20b4 | 108 | |
douglasofranco | 0:3125f39d20b4 | 109 | //media movel |
douglasofranco | 0:3125f39d20b4 | 110 | |
douglasofranco | 0:3125f39d20b4 | 111 | unsigned char j; |
douglasofranco | 0:3125f39d20b4 | 112 | filtro[k] = sensCC.read(); |
douglasofranco | 0:3125f39d20b4 | 113 | k++; |
douglasofranco | 0:3125f39d20b4 | 114 | if(k==10) { |
douglasofranco | 0:3125f39d20b4 | 115 | k=0; |
douglasofranco | 0:3125f39d20b4 | 116 | } |
douglasofranco | 0:3125f39d20b4 | 117 | |
douglasofranco | 0:3125f39d20b4 | 118 | for(j=0; j<10; j++) { |
douglasofranco | 0:3125f39d20b4 | 119 | getValor += filtro[j]; |
douglasofranco | 0:3125f39d20b4 | 120 | } |
douglasofranco | 0:3125f39d20b4 | 121 | getValor = getValor/10; |
douglasofranco | 0:3125f39d20b4 | 122 | Tcc = ((getValor * 4094) - 2048); |
douglasofranco | 0:3125f39d20b4 | 123 | Tcc = ((Tcc * salto) + Offset); |
douglasofranco | 0:3125f39d20b4 | 124 | if (Tcc < 12.1) { |
douglasofranco | 0:3125f39d20b4 | 125 | Tcc = Tcc + 0.18; |
douglasofranco | 0:3125f39d20b4 | 126 | } |
douglasofranco | 0:3125f39d20b4 | 127 | if (Tcc>= 13) { |
douglasofranco | 0:3125f39d20b4 | 128 | Tcc = Tcc - 0.06; |
douglasofranco | 0:3125f39d20b4 | 129 | } |
douglasofranco | 0:3125f39d20b4 | 130 | if (Tcc < 11.7) { |
douglasofranco | 0:3125f39d20b4 | 131 | Tcc = Tcc + 0.09; |
douglasofranco | 0:3125f39d20b4 | 132 | } |
douglasofranco | 0:3125f39d20b4 | 133 | sprintf(TensCC, "%2.2f", Tcc); |
douglasofranco | 0:3125f39d20b4 | 134 | |
douglasofranco | 0:3125f39d20b4 | 135 | |
douglasofranco | 0:3125f39d20b4 | 136 | } |
douglasofranco | 0:3125f39d20b4 | 137 | |
douglasofranco | 0:3125f39d20b4 | 138 | void Leituras::TensaoAC() |
douglasofranco | 0:3125f39d20b4 | 139 | { |
douglasofranco | 0:3125f39d20b4 | 140 | float TAC = 0.0; |
douglasofranco | 0:3125f39d20b4 | 141 | TensAC = 0; |
douglasofranco | 0:3125f39d20b4 | 142 | unsigned char l; |
douglasofranco | 0:3125f39d20b4 | 143 | |
douglasofranco | 0:3125f39d20b4 | 144 | for (int w=0; w<30; w++) { |
douglasofranco | 0:3125f39d20b4 | 145 | TAC += sensAC.read(); |
douglasofranco | 0:3125f39d20b4 | 146 | } |
douglasofranco | 0:3125f39d20b4 | 147 | TAC = (TAC / 30); |
douglasofranco | 0:3125f39d20b4 | 148 | |
douglasofranco | 0:3125f39d20b4 | 149 | filtro2[h] = TAC; |
douglasofranco | 0:3125f39d20b4 | 150 | h++; |
douglasofranco | 0:3125f39d20b4 | 151 | if(h==10) { |
douglasofranco | 0:3125f39d20b4 | 152 | h=0; |
douglasofranco | 0:3125f39d20b4 | 153 | } |
douglasofranco | 0:3125f39d20b4 | 154 | |
douglasofranco | 0:3125f39d20b4 | 155 | for(l=0; l<=10; l++) { |
douglasofranco | 0:3125f39d20b4 | 156 | TensAC += filtro2[l]; |
douglasofranco | 0:3125f39d20b4 | 157 | } |
douglasofranco | 0:3125f39d20b4 | 158 | |
douglasofranco | 0:3125f39d20b4 | 159 | TensAC = TensAC * Vref; |
douglasofranco | 0:3125f39d20b4 | 160 | // TensAC = (TAC / 100) * Vref; |
douglasofranco | 0:3125f39d20b4 | 161 | if (TensAC != 33.0) { |
douglasofranco | 0:3125f39d20b4 | 162 | AC = 1; |
douglasofranco | 0:3125f39d20b4 | 163 | } else AC = 0 ; |
douglasofranco | 0:3125f39d20b4 | 164 | } |