Connecting real car cluster with pc games (X-sim)2

int rpm;
int Speed;
int fuel;
int turbo;
char kind_of_data;

//******************** calibrate neddles here ********************
int fuel_LOW = 110;
int fuel_HIGH = 255;
int speed_LOW = 17;
int speed_HIGH = 165;
int rpm_LOW = 0;
int rpm_HIGH = 230;
int temp_LOW = 30;
int temp_HIGH = 255;
int leds_LOW = 127;
int leds_HIGH = 230;
//******************** calibrate neddles here ********************

void setup(){

Serial.begin(115200);

pinMode(4, OUTPUT);
pinMode(5, OUTPUT);
pinMode(6, OUTPUT);
pinMode(7, OUTPUT);
pinMode(8, OUTPUT);
pinMode(9, OUTPUT);
pinMode(10, OUTPUT);
pinMode(11, OUTPUT);
pinMode(12, OUTPUT);
pinMode(13, OUTPUT);
pinMode(14, OUTPUT);
pinMode(15, OUTPUT);

//calibration();
}

void loop()
{
//****************************** READ DATA FROM SERIAL ******************************
while(Serial.available() > 0)
{

kind_of_data = Serial.read();
if (kind_of_data == 'R' ) Read_Rpm();
if (kind_of_data == 'S' ) Read_Speed();
if (kind_of_data == 'F' ) Read_Fuel();
if (kind_of_data == 'T' ) Read_Turbo();

}
//****************************** READ DATA FROM SERIAL END ******************************

}

void Read_Rpm(){

delay(2);
int Rpm100 = Serial.read()- '0';
delay(2);
int Rpm10 = Serial.read()- '0';
delay(2);
int Rpm1 = Serial.read()- '0';

int rpm = 100Rpm100 + 10Rpm10 + Rpm1;

setAircore(map(rpm,127,255,rpm_LOW,rpm_HIGH));
Leds(map(rpm,leds_LOW,leds_HIGH,0,9));
}

void Read_Speed(){

delay(2);
int Speed100 = Serial.read()- '0';
delay(2);
int Speed10 = Serial.read()- '0';
delay(2);
int Speed1 = Serial.read()- '0';

Speed = 100Speed100 + 10Speed10 + Speed1;
analogWrite(9,map(Speed,127,255,speed_LOW,speed_HIGH));
}

void Read_Fuel(){
delay(2);
int Fuel100 = Serial.read()- '0';
delay(2);
int Fuel10 = Serial.read()- '0';
delay(2);
int Fuel1 = Serial.read()- '0';

fuel = 100Fuel100 + 10Fuel10 + Fuel1;
analogWrite(10,map(fuel,127,255,fuel_LOW,fuel_HIGH));
}

void Read_Turbo(){
delay(2);
int Turbo100 = Serial.read()- '0';
delay(2);
int Turbo10 = Serial.read()- '0';
delay(2);
int Turbo1 = Serial.read()- '0';

turbo = 100Turbo100 + 10Turbo10 + Turbo1;
analogWrite(11,map(turbo,0,255,temp_LOW,temp_HIGH));
}

void setAircore(float pos){

float sinCoilValue = 255sin(pos/40.58);
float cosCoilValue = 255
cos(pos/40.58);

if (sinCoilValue<=0) {
digitalWrite(14, LOW);
digitalWrite(15, HIGH);
}
else {
digitalWrite(14, HIGH);
digitalWrite(15, LOW);
}
if (cosCoilValue<=0) {
digitalWrite(8, LOW);
digitalWrite(4, HIGH);
}
else {
digitalWrite(8, HIGH);
digitalWrite(4, LOW);
}

sinCoilValue = abs(sinCoilValue);
cosCoilValue = abs(cosCoilValue);

analogWrite(6, sinCoilValue);
analogWrite(5, cosCoilValue);
}

void Leds(int leds){

digitalWrite(12, LOW);
if ( leds == 0 ) shiftOut(7, 13, MSBFIRST, B00000000);
if ( leds == 1 ) shiftOut(7, 13, MSBFIRST, B00000001);
if ( leds == 2 ) shiftOut(7, 13, MSBFIRST, B00000011);
if ( leds == 3 ) shiftOut(7, 13, MSBFIRST, B00000111);
if ( leds == 4 ) shiftOut(7, 13, MSBFIRST, B00001111);
if ( leds == 5 ) shiftOut(7, 13, MSBFIRST, B00011111);
if ( leds == 6 ) shiftOut(7, 13, MSBFIRST, B00111111);
if ( leds == 7 ) shiftOut(7, 13, MSBFIRST, B01111111);
if ( leds == 8 ) shiftOut(7, 13, MSBFIRST, B11111111);
digitalWrite(12, HIGH);
}