Estoy haciendo un medidor de 1000V DC con Arduino y RS485. El problema es que cuando envío un valor de registro desde Arduino, no obtengo la salida que deseo, la salida es hexadecimal y no puedo averiguar dónde está el voltaje y la corriente. Además, cuando estoy cambiando la entrada de voltaje no obtengo salida de cambio hasta ahora, el código es:
#include <Stdio.h>
#include <SoftwareSerial.h>
#define RX 4
#define TX 5
SoftwareSerial softSerial(RX, TX);
#define dirPin 16
char charArray[6];
uint8_t HeadingData[] = {0x01, 0x04, 0x00, 0x00, 0x00, 0x02, 0x71, 0xCB};
void setup()
{
Serial.begin(9600);
softSerial.begin(9600);
Serial.println("\n\nStart\n");
pinMode(dirPin, OUTPUT);
}
void loop()
{
digitalWrite(dirPin, HIGH); //Trans En
sendMSG(HeadingData, sizeof(HeadingData));
digitalWrite(dirPin, LOW); // Rec En
recieveMSG();
delay(1000);
}
void recieveMSG()
{
int charIndex = 0;
delay(100);
while (softSerial.available())
{
int recieved = softSerial.read();
// Serial.print("recieved byte in DEC = ");
// Serial.println(recieved);
Serial.print("recieved byte in HEX = ");
Serial.println(recieved, HEX);
// delay(50000);
// charArray[charIndex] = recieved; // store everything that was read in charArray byte-by-byte
// charIndex++;
// Serial.println(charArray[0], HEX);
// Serial.println(charArray[1], HEX);
// Serial.println(charArray[2], HEX);
// Serial.println(charArray[3], HEX);
// Serial.println(charArray[4], HEX);
// Serial.println(charArray[5], HEX);
// Serial.println("message recieved\n\n");
}
}
void sendMSG(uint8_t Message[], int len)
{
for (int i = 0; i < len; i++)
{
softSerial.write(Message[i]);
delay(10);
Serial.print(Message[i], HEX);
Serial.print(" ");
}
Serial.println("\n\n");
}
Indique dónde estoy equivocado y qué se debe cambiar. Aquí está el pdf para el direccionamiento del registro, he utilizado el registro de voltios 1 de este ... metering.igmc.ir/static_info/RS485.pdf La salida es 1 4 0 0 0 2 71 CB
byte recibido en HEX = 1 byte recibido en HEX = 4 byte recibido en HEX = 4 byte recibido en HEX = 22 byte recibido en HEX = B8 byte recibido en HEX = 1 byte recibido en HEX = 0 byte recibido en HEX = 70 byte recibido en HEX = 49 1 4 0 0 0 2 71 CB
byte recibido en HEX = 1 byte recibido en HEX = 4 byte recibido en HEX = 4 byte recibido en HEX = 22 byte recibido en HEX = B8 byte recibido en HEX = 1 byte recibido en HEX = 0 byte recibido en HEX = 70 byte recibido en HEX = 49 1 4 0 0 0 2 71 CB
byte recibido en HEX = B8 byte recibido en HEX = 1 byte recibido en HEX = 0 byte recibido en HEX = 70 byte recibido en HEX = 49 1 4 0 0 0 2 71 CB
byte recibido en HEX = 6 byte recibido en HEX = 70 byte recibido en HEX = 49 1 4 0 0 0 2 71 CB
byte recibido en HEX = 40 byte recibido en HEX = 70 byte recibido en HEX = 49 1 4 0 0 0 2 71 CB
byte recibido en HEX = B byte recibido en HEX = 0 byte recibido en HEX = 70 byte recibido en HEX = 49 1 4 0 0 0 2 71 CB
byte recibido en HEX = 10 byte recibido en HEX = 25 byte recibido en HEX = FF 1 4 0 0 0 2 71 CB
1 4 0 0 0 2 71 CB
byte recibido en HEX = 91 byte recibido en HEX = B byte recibido en HEX = 0 byte recibido en HEX = 70 byte recibido en HEX = 49 1 4 0 0 0 2 71 CB
byte recibido en HEX = 25 byte recibido en HEX = FF 1 4 0 0 0 2 71 CB
byte recibido en HEX = 5B byte recibido en HEX = FA 1 4 0 0 0 2 71 CB
byte recibido en HEX = 1 byte recibido en HEX = 4 byte recibido en HEX = 4 byte recibido en HEX = 22 byte recibido en HEX = B8 byte recibido en HEX = 1 byte recibido en HEX = 0 byte recibido en HEX = 70 byte recibido en HEX = 49 y por favor diga cómo obtener la salida como esta V = 51 4 0 0 0 2 71 CB
byte recibido en HEX = 1 byte recibido en HEX = 4 byte recibido en HEX = 4 byte recibido en HEX = 22 byte recibido en HEX = B8 byte recibido en HEX = 1 byte recibido en HEX = 0 byte recibido en HEX = 70 byte recibido en HEX = 49 1 4 0 0 0 2 71 CB
byte recibido en HEX = 1 byte recibido en HEX = 4 byte recibido en HEX = 4 byte recibido en HEX = 22 byte recibido en HEX = B8 byte recibido en HEX = 1 byte recibido en HEX = 0 byte recibido en HEX = 70 byte recibido en HEX = 49 1 4 0 0 0 2 71 CB
byte recibido en HEX = B8 byte recibido en HEX = 1 byte recibido en HEX = 0 byte recibido en HEX = 70 byte recibido en HEX = 49 1 4 0 0 0 2 71 CB
byte recibido en HEX = 6 byte recibido en HEX = 70 byte recibido en HEX = 49 1 4 0 0 0 2 71 CB
byte recibido en HEX = 40 byte recibido en HEX = 70 byte recibido en HEX = 49 1 4 0 0 0 2 71 CB
byte recibido en HEX = B byte recibido en HEX = 0 byte recibido en HEX = 70 byte recibido en HEX = 49 1 4 0 0 0 2 71 CB
byte recibido en HEX = 10 byte recibido en HEX = 25 byte recibido en HEX = FF 1 4 0 0 0 2 71 CB
1 4 0 0 0 2 71 CB
byte recibido en HEX = 91 byte recibido en HEX = B byte recibido en HEX = 0 byte recibido en HEX = 70 byte recibido en HEX = 49 1 4 0 0 0 2 71 CB
byte recibido en HEX = 25 byte recibido en HEX = FF 1 4 0 0 0 2 71 CB
byte recibido en HEX = 5B byte recibido en HEX = FA 1 4 0 0 0 2 71 CB
byte recibido en HEX = 1 byte recibido en HEX = 4 byte recibido en HEX = 4 byte recibido en HEX = 22 byte recibido en HEX = B8 byte recibido en HEX = 1 byte recibido en HEX = 0 byte recibido en HEX = 70 byte recibido en HEX = 49
y diga cómo obtener una salida como V = 5V abd I = 0.02A ???