Optimizing code on arduino due

CODE from previous message

#include <SPI.h>
#include <Ethernet.h>
#include <PubSubClient.h>
#include "HX711.h"

byte mac[] = {0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED};
IPAddress ip(192, 168, 5, 2);
byte MQTT_SERVER[] = {192,168,5,1};

EthernetClient ethClient;
PubSubClient client;

char send_data_char[128];
char send_data_char_vs[128];
char send_data_char_vd[128];
char send_data_char_gs[128];
char send_data_char_gd[128];
char send_data_char_fs[128];
char send_data_char_fd[128];

volatile int rpmcounts = 0;
volatile int rpmcountd = 0;

float times0, times01, times2=0, rpms=0;
float timed0, timed01, timed2=0, rpmd=0;



unsigned long timehx = 100;
int read_hx = 0;
float gs1, gs2, gs3, gs4, gd1, gd2, gd3, gd4, fs, fd, ps1, ps2, GS, GD;
String send_data;
String send_data_vs; 
String send_data_vd; 
String send_data_gs; 
String send_data_gd; 
String send_data_fs; 
String send_data_fd; 

HX711 s01(22, 23);  // gs1 // (dt, clk)
HX711 s02(24, 25);  // gs2 // (dt, clk)
HX711 s03(26, 27);  // gs3 // (dt, clk)
HX711 s04(28, 29);  // gs4 // (dt, clk)

HX711 s05(30, 31);  // gd1 // (dt, clk)
HX711 s06(32, 33);  // gd2 // (dt, clk)
HX711 s07(34, 35);  // gd3 // (dt, clk)
HX711 s08(36, 37);  // gd4 // (dt, clk)

HX711 s09(38, 39);  // fs // (dt, clk)
HX711 s10(40, 41);  // fd // (dt, clk)

//HX711 s11(42, 43);  // ps1 // (dt, clk)
//HX711 s12(44, 45);  // ps2 // (dt, clk)

int R1 = 46;
int R2 = 47;
int R3 = 48;
int R4 = 49;
int R5 = 5;

const int prezs_pin = 14;
const int prezd_pin = 15;

int prezs = 0, prezd = 0;

void setup() {
 // Serial.begin(9600);
 // Serial.println("START");

  pinMode(R1, OUTPUT);
  digitalWrite(R1, HIGH); // R1 OFF
  pinMode(R2, OUTPUT);
  digitalWrite(R2, HIGH); // R2 OFF
  pinMode(R3, OUTPUT);
  digitalWrite(R3, HIGH); // R3 OFF
  pinMode(R4, OUTPUT);
  digitalWrite(R4, HIGH); // R4 OFF
  pinMode(R5, OUTPUT);
  digitalWrite(R5, HIGH); // R5 OFF
  
  s01.set_scale(2500);       //calib gs2
  s01.tare();             
  s02.set_scale(2500);       //calib gs2
  s02.tare();
  s03.set_scale(2500);       //calib gs3
  s03.tare();
  s04.set_scale(2500);       //calib gs4
  s04.tare();

  s05.set_scale(2500);       //calib gd1
  s05.tare();
  s06.set_scale(2500);       //calib gd2
  s06.tare();
  s07.set_scale(2500);       //calib gd3
  s07.tare();
  s08.set_scale(2500);       //calib gd4
  s08.tare();

  s09.set_scale(2500);       //calib fs
  s09.tare();
  s10.set_scale(2500);       //calib fd
  s10.tare();

//  s11.set_scale(2500);       //calib ps1
//  s11.tare();
//  s12.set_scale(2500);       //calib ps2
//  s12.tare();

  Ethernet.begin(mac, ip);
  client  = PubSubClient(MQTT_SERVER, 1883, callback, ethClient);


//  Serial.print("Network ip : ");
//  Serial.println(Ethernet.localIP());

pinMode(prezs_pin, INPUT);
pinMode(prezd_pin, INPUT);

attachInterrupt(2, hallSensors, RISING);//interrupt 0 is on pin 2.
attachInterrupt(3, hallSensord, RISING);//interrupt 1 is on pin 3.

}

void loop() {

  if (!client.connected())  {
    client.connect("std_vs");
    client.connect("std_vd");
    client.connect("std_gs");
    client.connect("std_gd");
    client.connect("std_fs");
    client.connect("std_fd");
    client.subscribe("stdin");
      }
  
  read_hx++;
  if (read_hx == 1){
      timehx = millis();
  }
  if (millis() - timehx >= 100){
   
    send_data_vs = String(rpms);
    send_data_vs.toCharArray(send_data_char_vs, send_data_vs.length() + 1);
    client.publish("std_vs", send_data_char_vs);
    
    send_data_vd = String(rpmd);
    send_data_vd.toCharArray(send_data_char_vd, send_data_vd.length() + 1);
    client.publish("std_vd", send_data_char_vd);

    send_data_gs = String(GS);
    send_data_gs.toCharArray(send_data_char_gs, send_data_gs.length() + 1);
    client.publish("std_gs", send_data_char_gs);

    send_data_gd = String(GD);
    send_data_gd.toCharArray(send_data_char_gd, send_data_gd.length() + 1);
    client.publish("std_gd", send_data_char_gd);

    send_data_fs = String(fs);
    send_data_fs.toCharArray(send_data_char_fs, send_data_fs.length() + 1);
    client.publish("std_fs", send_data_char_fs);

    send_data_fd = String(fd);
    send_data_fd.toCharArray(send_data_char_fd, send_data_fd.length() + 1);
    client.publish("std_fd", send_data_char_fd);
  
    read_hx = 0;
  }

  readhx();
  
  read_prezs();
  read_prezd();
  
  client.loop();
}

void readhx(){

  gs1 = s01.get_units(3);
  gs2 = s02.get_units(3);
  gs3 = s03.get_units(3);
  gs4 = s04.get_units(3);
  GS = gs1 + gs2 + gs3 + gs4;
  
  
  gd1 = s05.get_units(3);
  gd2 = s06.get_units(3);
  gd3 = s07.get_units(3);
  gd4 = s08.get_units(3);
  GD = gd1 + gd2 + gd3 + gd4;


  fs = s09.get_units(3);
  fd = s10.get_units(3);

//    ps1 = s11.get_units();
//    ps2 = s12.get_units();

}

void startR1() {
  digitalWrite(R1, LOW);
}

void startR2() {
  digitalWrite(R2, LOW);
}

void startR3() {
  digitalWrite(R3, LOW);
}

void startR4() {
  digitalWrite(R4, LOW);
}

void startR5() {
  digitalWrite(R5, LOW);
}

void stopR1() {
  digitalWrite(R1, HIGH);
}

void stopR2() {
  digitalWrite(R2, HIGH);
}

void stopR3() {
  digitalWrite(R3, HIGH);
}

void stopR4() {
  digitalWrite(R4, HIGH);
}

void stopR5() {
  digitalWrite(R5, HIGH);
}

void read_prezs(){
  prezs = digitalRead(prezs_pin);
  if (prezs == HIGH){
    prezs = 1;
  }else{
    prezs = 0;
  }
}

void read_prezd(){
  prezd = digitalRead(prezd_pin);
  if (prezd == HIGH){
    prezd = 1;
  }else{
    prezd = 0;
  }
}

void hallSensors(){

 rpmcounts++;
 if (rpmcounts == 1){
   times01 = millis();
 }
 if (rpmcounts == 2){
   times2 = millis() - times01;
   rpms = (1 / (times2 / 1000) * 60);
   
   rpmcounts=0;  
 }
}

void hallSensord(){
  rpmcountd++;
  if (rpmcountd == 1){
    timed01 = millis();
  }
  if (rpmcountd == 2){
    timed2 = millis() - timed01;
    rpmd = (1 / (timed2 / 1000) * 60);

    rpmcountd=0;  
  }
}

void callback(char* topic, byte* payload, unsigned int length) {
    
  if (String((char)payload[0]) == "R") {
      if ((char)payload[1] == '1') {
          if ((char)payload[2] == '1') {
              startR1();
          }
          else if ((char)payload[2] == '0') { 
              stopR1();
          }
    }
    else if ((char)payload[1] == '2') {
          if ((char)payload[2] == '1') {
              startR2();
          }
          else if ((char)payload[2] == '0') { 
              stopR2();
          }
    }
    else if ((char)payload[1] == '3') {
          if ((char)payload[2] == '1') {
              startR3();
          }
          else if ((char)payload[2] == '0') { 
              stopR3();
          }
    }
    else if ((char)payload[1] == '4') {
          if ((char)payload[2] == '1') {
              startR4();
          }
          else if ((char)payload[2] == '0') { 
              stopR4();
          }
    }
    else if ((char)payload[1] == '5') {
          if ((char)payload[2] == '1') {
              startR5();
          }
          else if ((char)payload[2] == '0') { 
              stopR5();
          }
  
   }
  else if (String((char)payload[0]) == "T") {
      if ((char)payload[1] == '1') {  // tare st
            s01.tare();             
            s02.tare();
            s03.tare();
            s04.tare();
      }
      else if ((char)payload[1] == '2') {  //tare dr 
            s05.tare();
            s06.tare();
            s07.tare();
            s08.tare();
      }
      else if ((char)payload[1] == '3') {  //tare FS / FD 
            s09.tare();
            s10.tare();
      }
//      else if ((char)payload[1] == '4') {  //tare Pres1 
//            s11.tare();
//      }
//      else if ((char)payload[1] == '5') {  //tare Pres2 
//            s12.tare();
//      }
        
  }
  
  }
}