Módulos MAX485 TTL a RS-485 para sensor NPK de solo

Alguem poderia me ajudar, já li algumas dicas em outros foruns porem ainda nao consegui solucionar meu problema. Estou fazendo uma pesquisa que necessita o sensor npk, porém só tenho 255 como saida para cada nutriente e sempre que altero o codigo só aumenta a quantidade de FFFFFFFF que aparece nas linhas. O meu modelo de sensor é o de 5 hastes (ph, n, p, k, temp. e moisture) e estou usando o arduino leonardo. Segue o codigo usado, a saida e o documento que recebi para ajustar o sensor.

`#include <SoftwareSerial.h>//BIBLIOTECA NECESSARIA

//DEFININDO OS PINOS UTILIZADOS
#define RE 8
#define DE 7

//VARIAVEIS MATRICIAIS COM OS PARAMETROS NECESSARIOS PARA CONVERSAO DA LEITURA DE CADA NUTRIENTE
//const byte nitro[] = {0x01,0x06, 0x00, 0x04, 0x00, 0x20, 0xc9, 0xd3};
//const byte phos[] = {0x01,0x06, 0x00, 0x05, 0x00, 0x58, 0x98, 0x31};
//const byte pota[] = {0x01,0x03, 0x00, 0x06, 0x00, 0x68, 0x68, 0x25};
const byte nitro[] = {0x01,0x03,0x00,0x04,0x00,0x01,0xC5,0xCB};
const byte phos[] = {0x01,0x03,0x00,0x05,0x00,0x01,0x94,0x0B};
const byte pota[] = {0x01,0x03,0x00,0x06,0x00,0x01,0x64,0x0B};

byte values[11];//CRIANDO UMA VARIAVEL MATRICIAL PARA GUARDAR OS VALORES DAS FUNCOES
SoftwareSerial mod(2,3);//CRIANDO UM SERIAL PARA O SOFTWARE

void setup() {
//DEFININDO AS CONFIGURACOES INICIAIS
Serial.begin(9600);
mod.begin(4800);
pinMode(RE, OUTPUT);
pinMode(DE, OUTPUT);

delay(3000);
}

void loop() {
//ATRIBUINDO OS VALORES DAS FUNCOES À VARIAVEIS
byte val1,val2,val3;
val1 = nitrogen();
delay(250);
val2 = phosphorous();
delay(250);
val3 = potassium();
delay(250);

//ESCREVENDO OS VALORES NO MONITOR SERIAL
Serial.print("Nitrogen: ");
Serial.print(val1);
Serial.println(" mg/kg");
Serial.print("Phosphorous: ");
Serial.print(val2);
Serial.println(" mg/kg");
Serial.print("Potassium: ");
Serial.print(val3);
Serial.println(" mg/kg");
delay(4000);

//*****NESSA ETAPA AVALIAR SE ESSES VALORES SERAO MANDADOS PARA PLANILHA, CREIO QUE AQUI SEJA O LOCAL DO CODIGO
}

//FUNCOES RESPONSAVEIS PELA LEITURA E CONVERSAO DOS VALORES CAPTADOS PELO SENSOR
byte nitrogen(){
digitalWrite(DE,HIGH); //ATIVA O PINO DE
digitalWrite(RE,HIGH); //ATIVA O PINO RE
delay(10); //PAUSA DE 0,01 SEGUNDO
if(mod.write(nitro,sizeof(nitro))==8){
digitalWrite(DE,LOW);
digitalWrite(RE,LOW);
for(byte i=0;i<7;i++){
Serial.print(mod.read(),HEX);
values[i] = mod.read();
Serial.print(values[i],HEX);
}
Serial.println();
}
return values[4];
}

byte phosphorous(){
digitalWrite(DE,HIGH);
digitalWrite(RE,HIGH);
delay(10);
if(mod.write(phos,sizeof(phos))==8){
digitalWrite(DE,LOW);
digitalWrite(RE,LOW);
for(byte i=0;i<7;i++){
Serial.print(mod.read(),HEX);
values[i] = mod.read();
Serial.print(values[i],HEX);
}
Serial.println();
}
return values[4];
}

byte potassium(){
digitalWrite(DE,HIGH);
digitalWrite(RE,HIGH);
delay(10);
if(mod.write(pota,sizeof(pota))==8){
digitalWrite(DE,LOW);
digitalWrite(RE,LOW);
for(byte i=0;i<7;i++){
Serial.print(mod.read(),HEX);
values[i] = mod.read();
Serial.print(values[i],HEX);
}
Serial.println();
}
return values[4];
}
`

imagem da saida:

npk

Alterei no if de 8 para 16 e as leituras zeraram para todos os nutrientes. Segue a imagem:

2

https://www.usinainfo.com.br/sensor-de-solo/sensor-npk-ph-condutividade-temperatura-e-umidade-do-solo-npkphcth-s-rs485-8611.html

Creio que no link acima contem um material para ajuda-lo. Consta é um código para testes...
Download Código para Arduino.