hola a todos, estoy armando un proyecto de una estacion meteorologica inalambrica, resulta que cuando configuro todo los sensores y los trasfiero por RF por el modulo RF 433, en el receptor por el puerto serial veo perfecto todo los datos mandados por el emisor, ahora el problema se me da cuando configuro el display, cuando lo hago solo me muestra los valores resividos de 2 de las 6 variables que trasnfiere el emisor.
si alguno tiene alguna idea de a que se puede deber eso les agradezco.
saludos
Codigo Emisor
// EMISOR
#include <Wire.h>
#include <Adafruit_Sensor.h>
#include <Adafruit_BMP280.h>
Adafruit_BMP280 bmp;
float TEMPERATURA; // variable para almacenar valor de temperatura
float PRESION; // variable para almacenar valor de presion atmosferica
float ALTITUD;
#include <VirtualWire.h>
const int dataPin = 12;
#include "DHT.h"
#define DHTPIN 9 //Conectamos el Sensor al pin digital 9
#define DHTTYPE DHT11
DHT dht(DHTPIN, DHTTYPE);
int SensorPin = A1; //Output from the sensor
int REF = A2; //3.3V power on the Arduino board
void setup()
{
Serial.begin(9600); // inicializa comunicacion serie a 9600 bps
Serial.println("Iniciando:"); // texto de inicio
if ( !bmp.begin() ) { // si falla la comunicacion con el sensor mostrar
Serial.println("BMP280 no encontrado !"); // texto y detener flujo del programa
while (1);
}
vw_setup(2000);
vw_set_tx_pin(dataPin);
pinMode(SensorPin, INPUT);
pinMode(REF, INPUT);
dht.begin();
}
void loop()
{
String str;
char buf[VW_MAX_MESSAGE_LEN];
TEMPERATURA = bmp.readTemperature(); // almacena en variable el valor de temperatura
PRESION = bmp.readPressure()/100; // almacena en variable el valor de presion divido
// por 100 para covertirlo a hectopascales
ALTITUD = bmp.readAltitude(1014.6);
int h = dht.readHumidity(); // Lee la humedad
int t= dht.readTemperature();
int uvLevel = averageAnalogRead(SensorPin);
int refLevel = averageAnalogRead(REF);
//Use the 3.3V power pin as a reference to get a very accurate output value from sensor
float outputVoltage = 3.3 / refLevel * uvLevel;
float uvIntensity = mapfloat(outputVoltage, 0.99, 2.8, 0.0, 15.0); //Convert the voltage to a UV intensity level
// tiempo
int dataInt = millis() / 1000;
str = "i" + String(dataInt); /// Convertir a string
str.toCharArray(buf,sizeof(buf)); // Convertir a char array
vw_send((uint8_t *)buf, strlen(buf)); // Enviar array
vw_wait_tx(); // Esperar envio
// presion
float dataFloat = PRESION;
str = "f" + String(dataFloat); // Convertir a string
str.toCharArray(buf,sizeof(buf)); // Convertir a char array
vw_send((uint8_t *)buf, strlen(buf)); // Enviar array
// vw_wait_tx(); // Esperar envio
// temperatura
float dataFloat1 = TEMPERATURA;
str = "g" + String(dataFloat1); // Convertir a string
str.toCharArray(buf,sizeof(buf)); // Convertir a char array
vw_send((uint8_t *)buf, strlen(buf)); // Enviar array
// vw_wait_tx(); // Esperar envio
// Altitud
float dataFloat2 = ALTITUD;
str = "h" + String(dataFloat1); // Convertir a string
str.toCharArray(buf,sizeof(buf)); // Convertir a char array
vw_send((uint8_t *)buf, strlen(buf)); // Enviar array
//vw_wait_tx(); // Esperar envio
// Humedad
float dataFloat3 = h;
str = "j" + String(dataFloat1); // Convertir a string
str.toCharArray(buf,sizeof(buf)); // Convertir a char array
vw_send((uint8_t *)buf, strlen(buf)); // Enviar array
// vw_wait_tx(); // Esperar envio
// NIvel UV
float dataFloat4 = uvLevel;
str = "k" + String(dataFloat1); // Convertir a string
str.toCharArray(buf,sizeof(buf)); // Convertir a char array
vw_send((uint8_t *)buf, strlen(buf)); // Enviar array
// vw_wait_tx(); // Esperar envio
// Intensidad UV
float dataFloat5 = outputVoltage;
str = "y" + String(dataFloat1); // Convertir a string
str.toCharArray(buf,sizeof(buf)); // Convertir a char array
vw_send((uint8_t *)buf, strlen(buf)); // Enviar array
vw_wait_tx(); // Esperar envio
delay(1000);
Serial.print("Temperatura: "); // muestra texto
Serial.print(TEMPERATURA); // muestra valor de la variable
Serial.print(" C "); // muestra letra C indicando grados centigrados
Serial.print("Presion: "); // muestra texto
Serial.print(PRESION); // muestra valor de la variable
Serial.println(" hPa"); // muestra texto hPa indicando hectopascales
Serial.print("Altitud: "); // muestra texto
Serial.print(ALTITUD); // muestra valor de la variable
Serial.println(" mts ");
Serial.print("Humedad: "); // muestra texto
Serial.print(h); // muestra valor de la variable
Serial.println(" % ");
Serial.print("Temp sensor Humedad: "); // muestra texto
Serial.print(t); // muestra valor de la variable
Serial.println(" ºC");
Serial.print("Output: ");
Serial.println(uvLevel);
Serial.print(" / ML8511 voltage: ");
Serial.println(outputVoltage);
Serial.print(" / UV Intensity (mW/cm^2): ");
Serial.println(uvIntensity);
Serial.println();
delay(5000);
}
//Takes an average of readings on a given pin
//Returns the average
int averageAnalogRead(int pinToRead)
{
byte numberOfReadings = 8;
unsigned int runningValue = 0;
for(int x = 0 ; x < numberOfReadings ; x++)
runningValue += analogRead(pinToRead);
runningValue /= numberOfReadings;
return(runningValue);
}
//The Arduino Map function but for floats
//From: http://forum.arduino.cc/index.php?topic=3922.0
float mapfloat(float x, float in_min, float in_max, float out_min, float out_max)
{
return (x - in_min) * (out_max - out_min) / (in_max - in_min) + out_min;
}