Buenos días a todos.
Estoy liado con un proyecto de regulación automática. Para ello, necesito leer dos señales analógicas a la vez (mediante transformadores de corriente), hacer una resta y subirla a internet posteriormente.
He dispuesto un dispositivo Master con un ESP8266 (Wemos), pero sólo tiene una entrada analógica. Como necesito otra, utilizo otro ESP8266 como esclavo y que le esté enviando información al primero POR CABLE (están uno al lado del otro).
He pensado en utilizar un protocolo serial, pero simplificando mucho, me ocurre algo muy extraño:
CODIGO EMISOR----------------
#include <SoftwareSerial.h>
#define TXD2 12 // TX (D6)
#define RXD2 13 // RX (D7)
SoftwareSerial transmisorserie(RXD2, TXD2); // RX, TX
int datos;
void setup()
{
Serial.begin(115200);
transmisorserie.begin(9600);
pinMode(LED_BUILTIN, OUTPUT);
}
void loop()
{
datos=888;
transmisorserie.write(datos);
digitalWrite(LED_BUILTIN, LOW); // Turn the LED on (Note that LOW is the voltage level
delay(100);
digitalWrite(LED_BUILTIN, HIGH); // Turn the LED off by making the voltage HIGH
Serial.println(datos);
delay(1000);
}
CODIGO RECEPTOR -------
/*
OJO: LOS GND DE AMBOS DISPOSITIVOS SON COMUNES
*/
#include <SoftwareSerial.h>
#define TXD2 12 // TX (D6)
#define RXD2 13 // RX (D7)
SoftwareSerial mySerial(RXD2, TXD2); // RX, TX
int datos;
void setup() {
pinMode(LED_BUILTIN, OUTPUT);
Serial.begin(115200);
mySerial.begin(9600);
}
void loop()
{
if (mySerial.available() > 0) {
digitalWrite(LED_BUILTIN, LOW); // Turn the LED on (Note that LOW is the voltage level
delay(100);
digitalWrite(LED_BUILTIN, HIGH); // Turn the LED off by making the voltage HIGH
datos = mySerial.read();
Serial.println(datos);
}
}
Hago pruebas simplificando al máximo para evitar otros errores.
El sistema transmite datos y son recibidos sin problemas. Pero cuando envío el entero "888", me recibe siempre "212" ¿¿??
Podría pasar a un protocolo I2C o Modbus, pero si no soy capaz de manejar ni éste serial, me preocupa seguir complicándolo.....
¿Alguna amable sugerencia? ![]()