Merhaba arkadaşlar.

Arduino ile ETS2 için araba göstergesi yapmaya çalışıyorum. Bir kaynak buldum tüm bağlantılar doğru kodlar aynı ama çalışmıyor.
Acaba klon kullandığım için olabilir mi?
Kod kısmı aşağıdaki gibi.

#include <Servo.h>
#include <LiquidCrystal.h>
 
const int SPEEDO_PIN      = A0;
const int RPM_PIN         = A1;
const int FUEL_PIN        = A2;
const int TEMP_PIN        = A3;
const int BRAKEAIR_PIN    = A4;
const int CRUSE_PIN       = A5;
 
const int LEFT_INDICATOR  = 6;
const int RIGHT_INDICATOR = 7;
const int PARKING_LIGHT   = 8;
const int PARKING_BREAK   = 9;
const int LOW_BEAM        = 10;
const int HIGH_BEAM       = 13;
 
String FREN_ISISI;
String YAG_BASINC;
String YAG_ISISI;
String VOLTAJ;
String VITES;
String MESAJ;
String CRUSE;
String ARACHIZ;
String VITESIKAZ;
 
String FREN_ISISI_OLD;
String YAG_BASINC_OLD;
String YAG_ISISI_OLD;
String VOLTAJ_OLD;
String VITES_OLD;
String MESAJ_OLD;
String CRUSE_OLD;
String ARACHIZ_OLD;
String VITESIKAZ_OLD;
 
int motor_int = 0;
int eletirik_int = 0;
int gosterim = 0;
 
LiquidCrystal lcd(12, 11, 5, 4, 3, 2);
//LiquidCrystal (RS, E, D4, D5, D6, D7)
 
 
// defines servo names
Servo speedo;
Servo rpm;
Servo fuel;
Servo cruise;
Servo temp;
Servo brakeair;
Servo braketemp;
Servo yagbasinc;
Servo yagisisi;
Servo voltaj;
 
byte customChar[8] = {
  0b00000,
  0b00000,
  0b01010,
  0b11111,
  0b10001,
  0b10001,
  0b11111,
  0b00000
};
 
byte yag1Char[8] = {
  0b00000,
  0b00011,
  0b11111,
  0b10111,
  0b10111,
  0b11110,
  0b00000,
  0b00000
};
 
byte yag2Char[8] = {
  0b00000,
  0b11000,
  0b11110,
  0b11001,
  0b10000,
  0b00001,
  0b00000,
  0b00000
};
 
byte brake1Char[8] = {
  0b00000,
  0b00001,
  0b01011,
  0b10111,
  0b10111,
  0b01011,
  0b00001,
  0b00000
};
 
byte brake2Char[8] = {
  0b00000,
  0b10000,
  0b11010,
  0b11101,
  0b11101,
  0b11010,
  0b10000,
  0b00000
};
 
byte vitesChar[8] = {
  0b00000,
  0b10101,
  0b10101,
  0b11111,
  0b11111,
  0b10100,
  0b10100,
  0b00000
};
 
byte okChar[8] = {
  0b00100,
  0b01110,
  0b10101,
  0b00100,
  0b00100,
  0b00100,
  0b00100,
  0b00100
};
 
 
#define PACKET_SYNC 0xFF
#define PACKET_VER  2
 
#define SERVO_DIR_NORMAL false
#define SERVO_DIR_INVERT true
 
int serial_byte;
 
void setup()
{
  Serial.begin(115200);
 
  lcd.begin(16, 2);
  lcd.clear();
  lcd.setCursor(0, 0);
  lcd.print("> GUVEN KARTAL <");
  lcd.setCursor(0, 1);
  lcd.print("ETS2 DASH PROJEC");
 
  
 
  
  
  speedo.attach(SPEEDO_PIN);
  speedo.write(180);
  rpm.attach(RPM_PIN);
  rpm.write(180);
  fuel.attach(FUEL_PIN);
  fuel.write(40);
  cruise.attach(CRUSE_PIN);
  cruise.write(180);
  temp.attach(TEMP_PIN);
  temp.write(40);
  brakeair.attach(BRAKEAIR_PIN);
  brakeair.write(40);
  braketemp.write(40);
  yagbasinc.write(40);
  yagisisi.write(40);
  voltaj.write(40);
 
  
  
  pinMode(LEFT_INDICATOR, OUTPUT);
  pinMode(RIGHT_INDICATOR, OUTPUT);
  pinMode(PARKING_BREAK, OUTPUT);
  
 
  pinMode(LOW_BEAM, OUTPUT);
  pinMode(HIGH_BEAM, OUTPUT);
  pinMode(PARKING_LIGHT, OUTPUT);
 
 
  
  digitalWrite(LEFT_INDICATOR, 0);
  digitalWrite(RIGHT_INDICATOR, 0);
  digitalWrite(PARKING_BREAK, 0);
  digitalWrite(LOW_BEAM, 0);
  digitalWrite(HIGH_BEAM, 0);
  digitalWrite(PARKING_LIGHT, 0);
 
  
  delay(500);
  
  speedo.write(0);
  rpm.write(0);
  fuel.write(0);
  temp.write(0);
  cruise.write(0);
  brakeair.write(0);
  digitalWrite(LEFT_INDICATOR, 1);
  digitalWrite(RIGHT_INDICATOR, 1);
  digitalWrite(PARKING_BREAK, 1);
  digitalWrite(LOW_BEAM, 1);
  digitalWrite(HIGH_BEAM, 1);
  digitalWrite(PARKING_LIGHT, 1);
 
  
  delay(1500);
 
  for (int i = 0; i <= 180; i++) {
    speedo.write(i);
    //rpm.write(i);
    delay(5);
  }
 
  for (int i = 0; i <= 100; i++) {
  //fuel.write(i);
  temp.write(i);
  //cruise.write(i);
  //brakeair.write(i);
  delay(5);
  }
 
  for (int i = 0; i <= 100; i++) {
  fuel.write(i);
  //temp.write(i);
  //cruise.write(i);
  //brakeair.write(i);
  delay(5);
  }
 
  for (int i = 0; i <= 180; i++) {
    //speedo.write(i);
    rpm.write(i);
    delay(5);
  }
 
  speedo.attach(SPEEDO_PIN);
  speedo.write(180);
  rpm.attach(RPM_PIN);
  rpm.write(180);
  fuel.attach(FUEL_PIN);
  fuel.write(100);
  cruise.attach(CRUSE_PIN);
  cruise.write(180);
  temp.attach(TEMP_PIN);
  temp.write(100);
  brakeair.attach(BRAKEAIR_PIN);
  brakeair.write(100);
  braketemp.write(100);
  yagbasinc.write(100);
  yagisisi.write(100);
  voltaj.write(100);
  
  digitalWrite(LEFT_INDICATOR, 0);
  digitalWrite(RIGHT_INDICATOR, 0);
  digitalWrite(PARKING_BREAK, 0);
  digitalWrite(LOW_BEAM, 0);
  digitalWrite(HIGH_BEAM, 0);
  digitalWrite(PARKING_LIGHT, 0);
  
 
  delay(1000);
 
  lcd.createChar(0, customChar);
  lcd.createChar(1, yag1Char);
  lcd.createChar(2, yag2Char);
  lcd.createChar(3, brake1Char);
  lcd.createChar(4, brake2Char);
  lcd.createChar(5, vitesChar);
  lcd.createChar(6, okChar);
 
 
  lcd.begin(16, 2);
            lcd.clear();
            
            lcd.setCursor(12,0);
            lcd.write((uint8_t)0);
            lcd.setCursor(14,0);
            lcd.print("48");
          
            lcd.setCursor(0,0);
            lcd.write((uint8_t)1);
            lcd.setCursor(1,0);
            lcd.write((uint8_t)2);
            lcd.setCursor(3,0);
            lcd.print("20/80");
          
            lcd.setCursor(0,1);
            lcd.write((uint8_t)3);
            lcd.setCursor(1,1);
            lcd.write((uint8_t)4);
            lcd.setCursor(3,1);
            lcd.print("92");
          
            lcd.setCursor(12,1);
            lcd.write((uint8_t)5);
            
           
            
              lcd.setCursor(14,1);
              lcd.write(uint8_t(6));
            
 
            lcd.setCursor(15,1);
            lcd.print("N");
          
  
}
 
void read_serial_byte_set_servo(Servo& servo, bool invert)
{
  serial_byte = Serial.read();
  serial_byte = (serial_byte < 0) ? 0 : ((serial_byte > 180) ? 180 : serial_byte);
  if (invert)
    servo.write(180 - serial_byte);
  else
    servo.write(serial_byte);
}
 
void read_serial_byte_set_servo_fuel(Servo& servo, bool invert)
{
  serial_byte = Serial.read();
  serial_byte = (serial_byte < 0) ? 0 : ((serial_byte > 180) ? 180 : serial_byte);
  if (invert)
    servo.write(100 - serial_byte); //set lower than the tach and speedo to limit movement.
  else
    servo.write(serial_byte);
}
 
void read_serial_byte_set_servo_cruise(Servo& servo, bool invert)
{
  serial_byte = Serial.read();
  serial_byte = (serial_byte < 0) ? 0 : ((serial_byte > 180) ? 180 : serial_byte);
  if (invert)
    servo.write(100 - serial_byte); //set lower than the tach and speedo to limit movement.
  else
    servo.write(serial_byte);
}
 
void read_serial_byte_set_servo_temp(Servo& servo, bool invert)
{
  serial_byte = Serial.read();
  serial_byte = (serial_byte < 0) ? 0 : ((serial_byte > 180) ? 180 : serial_byte);
  if (invert)
    servo.write(100 - serial_byte); //set lower than the tach and speedo to limit movement.
  else
    servo.write(serial_byte);
}
 
void read_serial_byte_set_servo_brakeair(Servo& servo, bool invert)
{
  serial_byte = Serial.read();
  serial_byte = (serial_byte < 0) ? 0 : ((serial_byte > 180) ? 180 : serial_byte);
  if (invert)
    servo.write(100 - serial_byte); //set lower than the tach and speedo to limit movement.
  else
    servo.write(serial_byte);
}
 
void skip_serial_byte()
{
  (void)Serial.read();
}
 
void digitalWriteFromBit(int port, int value, int shift)
{
  digitalWrite(port, (value >> shift) & 0x01);
}
 
void digitalWriteFromMotor(int value, int shift)
{
  if((value >> shift) & 0x01)
  {
    motor_int = 1;
  }
  else
  {
    motor_int = 0;
  }
}
 
void digitalWriteFromElektrik(int value, int shift)
{
  if((value >> shift) & 0x01)
  {
    eletirik_int = 1;
  }
  else
  {
    eletirik_int = 0;
  }
}
 
void digitalWriteFromLCD(int value, int shift, String message)
{
  if((value >> shift) & 0x01)
  {
    MESAJ = message;
    }
  else
  {
    MESAJ = "";
    }
  
}
 
void loop()
{
  if (Serial.available() < 16)
    return;
  
  serial_byte = Serial.read();
  if (serial_byte != PACKET_SYNC)
    return;
    
  serial_byte = Serial.read();
  if (serial_byte != PACKET_VER)
  {
//    lcd.clear();
 //   lcd.print("PROTOCOL VERSION ERROR");
    return;
  }
  
  read_serial_byte_set_servo(speedo, SERVO_DIR_INVERT); // Speed  
  read_serial_byte_set_servo(rpm, SERVO_DIR_INVERT); // RPM
  
  read_serial_byte_set_servo_fuel(brakeair, SERVO_DIR_INVERT); // Brake air pressure
  read_serial_byte_set_servo(braketemp, SERVO_DIR_INVERT); // Brake temperature
  read_serial_byte_set_servo_fuel(fuel, SERVO_DIR_INVERT); // Fuel ratio
  read_serial_byte_set_servo_fuel(yagbasinc, SERVO_DIR_INVERT); // Oil pressure
  read_serial_byte_set_servo(yagisisi, SERVO_DIR_INVERT); // Oil temperature
  read_serial_byte_set_servo_temp(temp, SERVO_DIR_INVERT); // Water temperature
  read_serial_byte_set_servo(voltaj, SERVO_DIR_INVERT); // Battery voltage
  read_serial_byte_set_servo_cruise(cruise, SERVO_DIR_INVERT); // cruise speed, set to trip a light  
 
  if (rpm.read() < 180 && rpm.read() > 90)
  {
    VITESIKAZ = "";
  }
  else
  {
    VITESIKAZ = "A";
  }
  
 
  if (cruise.read() < 180)
  {
 
    if(cruise.read() == 172) {CRUSE = "30";}
    if(cruise.read() == 171) {CRUSE = "35";}
    if(cruise.read() == 169) {CRUSE = "40";}
    if(cruise.read() == 168) {CRUSE = "45";}
    if(cruise.read() == 167) {CRUSE = "50";}
    if(cruise.read() == 165) {CRUSE = "55";}
    if(cruise.read() == 164) {CRUSE = "60";}
    if(cruise.read() == 162) {CRUSE = "65";}
    if(cruise.read() == 161) {CRUSE = "70";}
    if(cruise.read() == 160) {CRUSE = "75";}
    if(cruise.read() == 158) {CRUSE = "80";}
    if(cruise.read() == 157) {CRUSE = "85";}
    if(cruise.read() == 155) {CRUSE = "90";}
    if(cruise.read() == 154) {CRUSE = "95";}
    if(cruise.read() == 153) {CRUSE = "100";}
    if(cruise.read() == 151) {CRUSE = "105";}
    if(cruise.read() == 150) {CRUSE = "110";}
    if(cruise.read() == 149) {CRUSE = "115";}
    if(cruise.read() == 147) {CRUSE = "120";}
    if(cruise.read() == 146) {CRUSE = "125";}
    if(cruise.read() == 144) {CRUSE = "130";}
    if(cruise.read() == 143) {CRUSE = "135";}
    if(cruise.read() == 142) {CRUSE = "140";}
    if(cruise.read() == 140) {CRUSE = "145";}
    if(cruise.read() == 139) {CRUSE = "150";}
    if(cruise.read() == 137) {CRUSE = "155";}
    if(cruise.read() == 136) {CRUSE = "160";}
    if(cruise.read() == 135) {CRUSE = "165";}
    if(cruise.read() == 133) {CRUSE = "170";}
    if(cruise.read() == 132) {CRUSE = "175";}
    if(cruise.read() == 130) {CRUSE = "180";}
    if(cruise.read() == 129) {CRUSE = "185";}
    if(cruise.read() == 128) {CRUSE = "190";}
    if(cruise.read() == 127) {CRUSE = "195";}
    if(cruise.read() == 126) {CRUSE = "200";}
  }
  else
  {
    CRUSE = "";
  }
 
  if (braketemp.read() < 180)
  {
    FREN_ISISI = 180 - braketemp.read();
  }
 
  if (yagbasinc.read() < 180)
  {
    YAG_BASINC = 180 - yagbasinc.read();
  }
 
  if (yagisisi.read() < 180)
  {
    YAG_ISISI = 180 - yagisisi.read();
  }
  
  if (voltaj.read() < 180)
  {
    VOLTAJ = voltaj.read();
  }
 
  if (speedo.read() < 180)
  {
    ARACHIZ = round((180 - speedo.read()) * 1.1);
  }
  
  
  // Truck lights byte
  serial_byte = Serial.read();
  digitalWriteFromBit(PARKING_LIGHT, serial_byte, 6);
  digitalWriteFromBit(LEFT_INDICATOR,  serial_byte, 5);  
  digitalWriteFromBit(RIGHT_INDICATOR, serial_byte, 4);
  digitalWriteFromBit(LOW_BEAM,  serial_byte, 3);  
  digitalWriteFromBit(HIGH_BEAM, serial_byte, 2);
  
  
  // Warning lights bytes
 
  MESAJ = "";
  serial_byte = Serial.read();  
  digitalWriteFromBit(PARKING_BREAK, serial_byte, 7);
  digitalWriteFromLCD(serial_byte, 0,"MOTOR  COK SICAK");
  digitalWriteFromLCD(serial_byte, 1,"YAG BASNC AZALDI");
  digitalWriteFromLCD(serial_byte, 2,"AKU VOLTAJ DUSUK");
  digitalWriteFromLCD(serial_byte, 3,"  ! YAKIT AZ !  ");
  digitalWriteFromLCD(serial_byte, 4," DİKKAT HAVA AZ ");
  digitalWriteFromLCD(serial_byte, 5,"FREN HAVA  DUSUK");
  digitalWriteFromLCD(serial_byte, 6,"  MOTOR FRENI ! ");
  digitalWriteFromLCD(serial_byte, 7,"EL  FRENI CEKILI");
 
 
  // Enabled flags
  serial_byte = Serial.read();
 
  digitalWriteFromMotor(serial_byte,0);
  digitalWriteFromElektrik(serial_byte,1);
 
    if(motor_int == 1 && gosterim == 0)//motor çalışıyor ise
    {
               
        lcd.setCursor(0, 0);
        lcd.print("  HOS GELDINIZ  ");
        lcd.setCursor(0, 1);
        lcd.print("MOTOR  CALISIYOR");
        delay(3000);
        gosterim += 1;
    }
    
    if(eletirik_int == 1 && gosterim <= 1)//elektirik açıkise
    {
      lcd.setCursor(0, 0);
        lcd.print("       <>       ");
        lcd.setCursor(0, 1);
        lcd.print("                ");
        delay(200);
 
        lcd.setCursor(0, 0);
        lcd.print("      <<>>      ");
        lcd.setCursor(0, 1);
        lcd.print("       <>       ");
        delay(200);
 
        lcd.setCursor(0, 0);
        lcd.print("     <<<>>>     ");
        lcd.setCursor(0, 1);
        lcd.print("      <<>>      ");
        delay(200);
 
        lcd.setCursor(0, 0);
        lcd.print("    <<<<>>>>    ");
        lcd.setCursor(0, 1);
        lcd.print("     <<<>>>     ");
        delay(200);
 
        lcd.setCursor(0, 0);
        lcd.print("   <<<<  >>>>   ");
        lcd.setCursor(0, 1);
        lcd.print("    <<<<>>>>    ");
        delay(200);
 
        lcd.setCursor(0, 0);
        lcd.print("  <<<<    >>>>   ");
        lcd.setCursor(0, 1);
        lcd.print("   <<<<  >>>>    ");
        delay(200);
 
        lcd.setCursor(0, 0);
        lcd.print(" <<<<     >>>> ");
        lcd.setCursor(0, 1);
        lcd.print("  <<<<   >>>>  ");
        delay(200);
 
        lcd.setCursor(0, 0);
        lcd.print("<<<<        >>>>");
        lcd.setCursor(0, 1);
        lcd.print(" <<<<      >>>> ");
        delay(200);
 
        lcd.setCursor(0, 0);
        lcd.print("<<<          >>>");
        lcd.setCursor(0, 1);
        lcd.print("<<<<        >>>>");
        delay(200);
 
        lcd.setCursor(0, 0);
        lcd.print("<<            >>");
        lcd.setCursor(0, 1);
        lcd.print("<<<          >>>");
        delay(200);
 
        lcd.setCursor(0, 0);
        lcd.print("<              >");
        lcd.setCursor(0, 1);
        lcd.print("<<            >>");
        delay(200);
 
        lcd.setCursor(0, 0);
        lcd.print("                ");
        lcd.setCursor(0, 1);
        lcd.print("<              >");
        delay(200);
 
        lcd.setCursor(0, 0);
        lcd.print("----------------");
        lcd.setCursor(0, 1);
        lcd.print("----------------");
        delay(200);
        
        lcd.setCursor(0, 0);
        lcd.print("  HOS GELDINIZ  ");
        lcd.setCursor(0, 1);
        lcd.print("! KEMERINI TAK !");
        
        lcd.setCursor(0, 0);
        lcd.print("  HOS GELDINIZ  ");
        lcd.setCursor(0, 1);
        lcd.print(" ELEKTIRIK ACIK ");
        delay(3000);
        gosterim += 1;
    }
 
    
     
  
  // Text length
  int text_len = Serial.read();
  
// Followed by text
  if (0 < text_len && text_len < 127)
  {
    for (int i = 0; i < text_len; ++i)
    {
      
      while (Serial.available() == 0) // Wait for data if slow
      {
        delay(2);
      }
      serial_byte = Serial.read();
   
      if (serial_byte == 'a')
      {
          VITES = "1";
      }
      else  if (serial_byte == 'b')
      {
        VITES = "2";
      }
      else  if (serial_byte == 'c')
      {
        VITES = "3";
      }
      else  if (serial_byte == 'd')
      {
        VITES = "4";
      }
      else  if (serial_byte == 'e')
      {
        VITES = "5";
      }
      else  if (serial_byte == 'f')
      {
        VITES = "6";
      }
      else  if (serial_byte == 'g')
      {
        VITES = "7";
      }
      else  if (serial_byte == 'h')
      {
        VITES = "8";
      }
      else  if (serial_byte == 'i')
      {
        VITES = "9";
      }
      else  if (serial_byte == 'j')
      {
        VITES = "10";
      }
      else  if (serial_byte == 'k')
      {
        VITES = "11";
      }
      else  if (serial_byte == 'l')
      {
        VITES = "12";
      }
      else  if (serial_byte == 'm')
      {
        VITES = "13";
      }
      else  if (serial_byte == 'n')
      {
        VITES = "14";
      }
      else  if (serial_byte == 'o')
      {
        VITES = "15";
      }
      else  if (serial_byte == 'p')
      {
        VITES = "16";
      }
      else  if (serial_byte == 'q')
      {
        VITES = "17";
      }
      else  if (serial_byte == 'r')
      {
        VITES = "18";
      }
      else  if (serial_byte == 's')
      {
        VITES = "R1";
      }
      else  if (serial_byte == 't')
      {
        VITES = "R2";
      }
      else  if (serial_byte == 'u')
      {
        VITES = "R3";
      }
      else  if (serial_byte == 'v')
      {
        VITES = "R4";
      }
      else  if (serial_byte == 'w')
      {
        VITES = "N";
      }
 
    }
  }
 
            
 
      if(FREN_ISISI_OLD != FREN_ISISI || YAG_BASINC_OLD != YAG_BASINC || YAG_ISISI_OLD != YAG_ISISI || VOLTAJ_OLD != VOLTAJ || VITES_OLD != VITES || MESAJ_OLD != MESAJ || CRUSE_OLD != CRUSE || ARACHIZ_OLD != ARACHIZ || VITESIKAZ_OLD != VITESIKAZ)
      {
        lcd.clear();
 
        if(MESAJ == "")
        {
          if (CRUSE != "")
          {
            lcd.setCursor(0, 0);
            lcd.print("HIZ  SABITLEYICI");
    
            lcd.setCursor(0, 1);
            lcd.print("Sec:" + CRUSE +  " Hiz" + ARACHIZ);
 
            if(VITESIKAZ == "A")
            {
              lcd.setCursor(14,1);
              lcd.write(byte(5));
            }
 
            lcd.setCursor(15,1);
            lcd.print(VITES);
          }
          else
          {                      
            lcd.begin(16, 2);
            lcd.clear();
            
            lcd.setCursor(12,0);
            lcd.write((uint8_t)0);
            lcd.setCursor(14,0);
            lcd.print(VOLTAJ);
          
            lcd.setCursor(0,0);
            lcd.write((uint8_t)1);
            lcd.setCursor(1,0);
            lcd.write((uint8_t)2);
            lcd.setCursor(3,0);
            lcd.print(YAG_BASINC + "/" + YAG_ISISI);
          
            lcd.setCursor(0,1);
            lcd.write((uint8_t)3);
            lcd.setCursor(1,1);
            lcd.write((uint8_t)4);
            lcd.setCursor(3,1);
            lcd.print(FREN_ISISI);
          
            lcd.setCursor(12,1);
            lcd.write((uint8_t)5);
            
            if(VITESIKAZ == "A")
            {
              lcd.setCursor(14,1);
              lcd.write(uint8_t(6));
            }
 
            lcd.setCursor(15,1);
            lcd.print(VITES);
          }
        }
        else
        {
          lcd.setCursor(0, 0);
          lcd.print("! ONEMLI UYARI !");
        
          lcd.setCursor(0, 1);
          lcd.print(MESAJ);
        }
        
        FREN_ISISI_OLD = FREN_ISISI;
        YAG_BASINC_OLD = YAG_BASINC;
        YAG_ISISI_OLD = YAG_ISISI;
        VOLTAJ_OLD = VOLTAJ;
        VITES_OLD = VITES;
        MESAJ_OLD = MESAJ;
        CRUSE_OLD = CRUSE;
        ARACHIZ_OLD = ARACHIZ;
        VITESIKAZ_OLD = VITESIKAZ;
      }
 
            
 
  
}