-
Dependencies: DHT DS18B20 Decagon10HS DecagonEC-5 FastIO LightSensorALS-PT19 WaterMark200ss WeatherMeters mbed-src floathex1
Fork of testgeneral by
Revision 2:a13c531579dd, committed 2016-12-15
- Comitter:
- agrosmart
- Date:
- Thu Dec 15 11:58:10 2016 +0000
- Parent:
- 1:7f1e6470cc93
- Commit message:
- test general sensores;
Changed in this revision
floathex.lib | Show annotated file Show diff for this revision Revisions of this file |
main.cpp | Show annotated file Show diff for this revision Revisions of this file |
diff -r 7f1e6470cc93 -r a13c531579dd floathex.lib --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/floathex.lib Thu Dec 15 11:58:10 2016 +0000 @@ -0,0 +1,1 @@ +https://developer.mbed.org/users/agrosmart/code/floathex1/#8638868343e7
diff -r 7f1e6470cc93 -r a13c531579dd main.cpp --- a/main.cpp Wed Dec 14 09:49:17 2016 +0000 +++ b/main.cpp Thu Dec 15 11:58:10 2016 +0000 @@ -8,6 +8,7 @@ #include "WaterMark200ss.h" #include "WeatherMeters.h" #include "Anemometer.h" +#include "floathex.h" //Declaración de Puertos para cada sensor @@ -24,18 +25,32 @@ CWeatherMeters WeatherMeters(D4, D5, A5); //Weather Station Anemómetro D4, Veleta D5, Pluviómetro A5 //Declaración variables para sensores: -float lightLvl = 0; // Sensor LUZ //Rango: 0.0 a 3.3 //2 -float VWC10HS = 0; // Sensor 10HS //Rango: 0.0 a 3.4 //2 -float VWCEC5 = 0; // Sensor EC-5 //Rango: 0.0 a 4 //2 +float lightLvl = 0; // Sensor LUZ //Rango: 0.0 a 3.3 //3 +float VWC10HS = 0; // Sensor 10HS //Rango: 0.0 a 3.4 //3 +float VWCEC5 = 0; // Sensor EC-5 //Rango: 0.0 a 4 //3 float tempdht22 = 0; // Sensor DHT22 //Rango: -40.0 a 80 //4 float humdht22 = 0; // Sensor DHT22 //Rango: 0 a 100% //2 -float tempDS18B20 = 0; // Sensor DS18B20 //Rango: -55.0 a 125.0 //3 -float centibar = 0; // Sensor WaterMark 200ss //Rango: 0 a 240 //2 -float rainfall = 0; // Weather Station //Rango: 0 a 100 //3 -float windSpeed = 0; // Weather Station //Rango: 0 a 2000 //3 +float tempDS18B20 = 0; // Sensor DS18B20 //Rango: -55.0 a 125.0 //4 +float centibar = 0; // Sensor WaterMark 200ss //Rango: 0.0 a 240.0 //2 +float rainfall = 0; // Weather Station //Rango: 0 a 100 //3 +float windSpeed = 0; // Weather Station //Rango: 0 a 2000 //3 float maxWindSpeed = 0; // Weather Station //Rango: 0 a 2000 //3 float windDir = 0; // Weather Station //Rango: 0 a 337.5 //3 float value; +string lightLvlh; +string VWC10HSh; +string VWCEC5h; +string tempdht22h; +string humdht22h; +string tempDS18B20h; +string centibarh; +string rainfallh; +string windSpeedh; +string maxWindSpeedh; +string windDirh; +char buffer1[11]= " "; +char buffer2[11]= " "; +char buffer3[11]= " "; void ReadSensors(); @@ -67,22 +82,29 @@ pc.printf("EC-5 VWC: %2.2f VMC\r\n", VWCEC5); pc.printf("10HS VWC: %2.2f\r\n", VWC10HS); pc.printf("Light: %3.2f \r\n", lightLvl); - ConvT(); // Todos los DS18B20 inician la conversión a temp - wait_ms(750); // Tiempo minimo de conversion a 12-bit - for(int i=1; i<=numROMs; i++) { // Bucle para todos los DS18B20 - tempDS18B20 = Get_Temp(i); - pc.printf("DS18B20 Temp: %08.4f Device: %02X%02X%02X%02X%02X%02X %03d\r\n",tempDS18B20,FoundROM[i][6],FoundROM[i][5],FoundROM[i][4],FoundROM[i][3],FoundROM[i][2],FoundROM[i][1],i); - } - pc.printf("\r\n"); + + //Convierto a Hex + lightLvlh = float2dHex(lightLvl); // 2 - 1 int 1 dec + VWC10HSh = float2dHex(VWC10HS); // 2 - 1 int 1 dec + VWCEC5h = float2dHex(VWCEC5); // 2 - 1 int 1 dec + tempdht22h = float4Hex(tempdht22); // 4 - 1 signo (1 negativo, 0 positivo) 2 enteros 1 dec + tempDS18B20h = float4Hex(tempDS18B20); // 4 - 1 signo (1 negativo, 0 positivo) 2 enteros 1 dec + humdht22h = float2Hex(humdht22); // 2 - 2 enteros + rainfallh = float2Hex(rainfall); // 2 - 2 enteros + centibarh = float3dHex(centibar); // 3 - 2 enteros, 1 dec + windDirh = float3dHex(windDir); // 3 - 2 enteros, 1 dec + windSpeedh = float3Hex(windSpeed); // 3 - 3 enteros + maxWindSpeedh = float3Hex(maxWindSpeed); // 3 - 3 enteros + //Creo las cadenas de Hex + snprintf(buffer1, 12, "%s%s%s%s", rainfallh, windDirh, windSpeedh, maxWindSpeedh); //con %.4s puedo definir cuantos caracteres se pasan + snprintf(buffer2, 12, "%s%s%s%s", centibarh, VWC10HSh, VWCEC5h, lightLvlh); + snprintf(buffer3, 12, "%s,%s,%s", tempDS18B20h, tempdht22h, humdht22h); wait(5.0f); } } /* -Hay que organizar con funciones, una para petición de datos, otra para cambiarlos a HEX todo -Hay que definir los datos en HEX, para que ocupen lo menos posibles, la temperatura x2 y a hex, y cosas así, para ocupar los menores bytes posibles uniendo -todos y generando un buffer de envío Las definiciones de la placa tienen que estar como externas, para poder exportar el ejemplo e integrarlo con otros (algo así como el marlin) hay ejemplos de como se hace @@ -101,41 +123,16 @@ windSpeed = Measurements.WindSpeed; //Weather Station maxWindSpeed = Measurements.MaximumWindSpeed; //Weather Station windDir = Measurements.WindDirectionAngle; //Weather Station -} -char *float2Hex(float value) -{ - int signo; // para las temperaturas - int ent1; - int dec1; - char value2[5]; - - if(value<0) { - signo = 1; // 1 es negativo, 0 es positivo - value = value * -1; - } else { - signo = 0; + ConvT(); // Todos los DS18B20 inician la conversión a temp + wait_ms(750); // Tiempo minimo de conversion a 12-bit + for(int i=1; i<=numROMs; i++) { // Bucle para todos los DS18B20 + tempDS18B20 = Get_Temp(i); + pc.printf("DS18B20 Temp: %08.4f Device: %02X%02X%02X%02X%02X%02X %03d\r\n",tempDS18B20,FoundROM[i][6],FoundROM[i][5],FoundROM[i][4],FoundROM[i][3],FoundROM[i][2],FoundROM[i][1],i); } - ent1 = value; - dec1 = (value - ent1)*16; - sprintf(value2, "%.1X.%.2X.%.1X\n\r", signo, ent1,dec1); //solo queda un decimal. para que queden dos decimales hay que multiplicar decimal por 10 - return value2; + pc.printf("\r\n"); } /* CALL char *temphex = temp2Hex(dht22); -FUNCTION -char * createStr() { - - char char1= 'm'; - char char2= 'y'; - - char *str = (char *) malloc(sizeof(char) * 3); - str[0] = char1; - str[1] = char2; - str[2] = '\0'; - - return str; - -} */ \ No newline at end of file