Hola que tal?
Estoy trabajando en un proyecto en el cualto tengo un atmega328p (transmisor) que obtiene datos, mediante 5 sensores de humedad (analogicos), de 5 macetas con tierra. Enviar esos datos por I2C a un nodemcu8266(receptor) para luego poder tener un monitoreo remoto.
Tengo un problema a la hora de transmitir datos desde atmega328p al nodemcu8266, la idea es transmitir 5 datos de los cuales los obtengo leyendo entradas analógicas.
Cuando yo envió números enteros, el receptor lo recibe correctamente, el problema surge cuando quiero enviar los datos analógicos, el receptor imprime otros datos.
Código del emisor:
#include <Wire.h>
const int sensorP1Cod = 9;
const int sensorP2Cod = 10;
const int sensorP3Cod = A0;
const int sensorP4Cod = A1;
const int sensorP5Cod = A2;
void setup()
{
Serial.begin(9600);
Wire.begin(1);
Wire.onRequest(peticion);
}
void loop()
{
}
void peticion(){
Serial.println("Enviado");
int valorHumedadP1 = map(analogRead(sensorP1Cod), 0, 1023, 100, 0);
int valorHumedadP2 = map(analogRead(sensorP2Cod), 0, 1023, 100, 0);
int valorHumedadP3 = map(analogRead(sensorP3Cod), 0, 1023, 100, 0);
int valorHumedadP4 = map(analogRead(sensorP4Cod), 0, 1023, 100, 0);
int valorHumedadP5 = map(analogRead(sensorP5Cod), 0, 1023, 100, 0);
int valorHumedadP1 = map(analogRead(sensorP1Cod), 0, 1023, 100, 0);
Wire.write(valorHumedadP1);
Wire.write(valorHumedadP2);
Wire.write(valorHumedadP2);
Wire.write(valorHumedadP4);
Wire.write(valorHumedadP5);
}
Función que solicita los datos (receptor);
void wireRequest(){
Wire.requestFrom(1,5);
Serial.println("################");//IMPRIMIMOS EL MENSAJE
int a = 0;
while(Wire.available()) {
dato = Wire.read();//GUARDAMOS EL MENSAJE EN LA CADENA MESAJE 1
cadena[a] =dato;
Serial.println(cadena[a]);//IMPRIMIMOS EL MENSAJE
a++;
}
Estos son los datos que llegan:
################
16
127
255
255
255
Como puedo resolver este problema con los datos?
Muchas gracias.