Buongiorno a tutti,
il progetto è concluso e funziona perfettamente.
Pubblico il codice definitivo per chi è interessato:
// CODICE RILEVAZIONE EVENTI SU LINBUS LEXUS e COMANDO VENTOLE PWM
#define PIN_CS 2
#define PIN_FAULT 9
#define V_SX 6
#define V_DX 7
int V0 = 255;
int V1 = 170;
int V2 = 85;
int V3 = 0;
byte stato = 0;
byte comando;
void setup()
{
pinMode(PIN_CS, OUTPUT);
pinMode(PIN_FAULT, OUTPUT);
pinMode(V_SX, OUTPUT);
pinMode(V_DX, OUTPUT);
digitalWrite(PIN_FAULT, HIGH);
analogWrite( V_SX , V0 ); //VENTOLA Sx FERMA
analogWrite( V_DX , V0 ); //VENTOLA Dx FERMA
//Serial.begin(57600); //debug serial
//Serial.println("Due debug Comms");
Serial3.begin(9600); //LIN Serial Rx
digitalWrite(PIN_CS, HIGH);
}
void loop()
{
while (Serial3.available())
{
byte rx = Serial3.read();
//Serial.println (rx , HEX);
switch (stato)
{
case 0:
if (rx == 0x55) stato = 1;
else stato = 0;
break;
case 1:
if (rx == 0x78) stato = 2;
else if (rx == 0x55) stato = 1;
else stato = 0;
break;
case 2:
if (rx == 0x00) stato = 3;
else if (rx == 0x55) stato = 1;
else stato = 0;
break;
case 3:
if (rx == 0x55) stato = 1;
else {
switch (rx)
{
case 0x0 : // 0x0 TUTTO SPENTO
analogWrite( 6, V0 );
analogWrite( 7, V0 );
break;
case 0xB : // 0xB VENTOLA SX_3 DX_0
analogWrite( 6, V3 );
analogWrite( 7, V0 );
break;
case 0x7B : // 0x7B VENTOLA SX_3 DX_0 RISC Dx_3
analogWrite( 6, V3 );
analogWrite( 7, V0 );
break;
case 0x6B : // 0x6B VENTOLA SX_3 DX_0 RISC Dx_2
analogWrite( 6, V3 );
analogWrite( 7, V0 );
break;
case 0x5B : // 0x5B VENTOLA SX_3 DX_0 RISC Dx_1
analogWrite( 6, V3 );
analogWrite( 7, V0 );
break;
case 0xB0 : // 0xB0 VENTOLA SX_0 DX_3
analogWrite( 6, V0 );
analogWrite( 7, V3 );
break;
case 0xB7 : // 0xB7 VENTOLA SX_0 DX_3 RISC Sx_3
analogWrite( 6, V0 );
analogWrite( 7, V3 );
break;
case 0xB6 : // 0xB6 VENTOLA SX_0 DX_3 RISC Sx_2
analogWrite( 6, V0 );
analogWrite( 7, V3 );
break;
case 0xB5 : // 0xB5 VENTOLA SX_0 DX_3 RISC Sx_1
analogWrite( 6, V0 );
analogWrite( 7, V3 );
break;
case 0xBB : // 0xBB VENTOLA SX_3 DX_3
analogWrite( 6, V3 );
analogWrite( 7, V3 );
break;
case 0xBA : // 0xBA VENTOLA SX_2 DX_3
analogWrite( 6, V2 );
analogWrite( 7, V3 );
break;
case 0xAB : // 0xAB VENTOLA SX_3 DX_2
analogWrite( 6, V3 );
analogWrite( 7, V2 );
break;
case 0xA : // 0xA VENTOLA SX_2 DX_0
analogWrite( 6, V2 );
analogWrite( 7, V0 );
break;
case 0x7A : // 0x7A VENTOLA SX_2 DX_0 RISC Dx_3
analogWrite( 6, V2 );
analogWrite( 7, V0 );
break;
case 0x6A : // 0x6A VENTOLA SX_2 DX_0 RISC Dx_2
analogWrite( 6, V2 );
analogWrite( 7, V0 );
break;
case 0x5A : // 0x5A VENTOLA SX_2 DX_0 RISC Dx_1
analogWrite( 6, V2 );
analogWrite( 7, V0 );
break;
case 0xA0 : // 0xA0 VENTOLA SX_0 DX_2
analogWrite( 6, V0 );
analogWrite( 7, V2 );
break;
case 0xA7 : // 0xA7 VENTOLA SX_0 DX_2 RISC Sx_3
analogWrite( 6, V0 );
analogWrite( 7, V2 );
break;
case 0xA6 : // 0xA6 VENTOLA SX_0 DX_2 RISC Sx_2
analogWrite( 6, V0 );
analogWrite( 7, V2 );
break;
case 0xA5 : // 0xA5 VENTOLA SX_0 DX_2 RISC Sx_1
analogWrite( 6, V0 );
analogWrite( 7, V2 );
break;
case 0xAA : // 0xAA VENTOLA SX_2 DX_2
analogWrite( 6, V2 );
analogWrite( 7, V2 );
break;
case 0xA9 : // 0xA9 VENTOLA SX_1 DX_2
analogWrite( 6, V1 );
analogWrite( 7, V2 );
break;
case 0x9A : // 0x9A VENTOLA SX_2 DX_1
analogWrite( 6, V2 );
analogWrite( 7, V1 );
break;
case 0x99 : // 0x99 VENTOLA SX_1 DX_1
analogWrite( 6, V1 );
analogWrite( 7, V1 );
break;
case 0x90 : // 0x90 VENTOLA SX_0 DX_1
analogWrite( 6, V0 );
analogWrite( 7, V1 );
break;
case 0x9 : // 0x9 VENTOLA SX_1 DX_0
analogWrite( 6, V1 );
analogWrite( 7, V0 );
break;
case 0x79 : // 0x79 VENTOLA SX_1 DX_0 RISC Dx_3
analogWrite( 6, V1 );
analogWrite( 7, V0 );
break;
case 0x69 : // 0x69 VENTOLA SX_1 DX_0 RISC Dx_2
analogWrite( 6, V1 );
analogWrite( 7, V0 );
break;
case 0x59 : // 0x59 VENTOLA SX_1 DX_0 RISC Dx_1
analogWrite( 6, V1 );
analogWrite( 7, V0 );
break;
case 0x9B : // 0x9B VENTOLA SX_3 DX_1
analogWrite( 6, V3 );
analogWrite( 7, V1 );
break;
case 0xB9 : // 0xB9 VENTOLA SX_1 DX_3
analogWrite( 6, V1 );
analogWrite( 7, V3 );
break;
case 0x7 : // 0x7 VENTOLA SX_0 DX_0 RISC SX_3 DX_0
analogWrite( 6, V0 );
analogWrite( 7, V0 );
break;
case 0x6 : // 0x6 VENTOLA SX_0 DX_0 RISC SX_2 DX_0
analogWrite( 6, V0 );
analogWrite( 7, V0 );
break;
case 0x5 : // 0x5 VENTOLA SX_0 DX_0 RISC SX_1 DX_0
analogWrite( 6, V0 );
analogWrite( 7, V0 );
break;
case 0x97 : // 0x97 VENTOLA SX_0 DX_1
analogWrite( 6, V0 );
analogWrite( 7, V1 );
break;
case 0x70 : // 0x70 VENTOLA SX_0 DX_0 RISC SX_0 DX_3
analogWrite( 6, V0 );
analogWrite( 7, V0 );
break;
case 0x60 : // 0x60 VENTOLA SX_0 DX_0 RISC SX_0 DX_2
analogWrite( 6, V0 );
analogWrite( 7, V0 );
break;
case 0x50 : // 0x50 VENTOLA SX_0 DX_0 RISC SX_0 DX_1
analogWrite( 6, V0 );
analogWrite( 7, V0 );
break;
default:
break;
}
stato = 0;
}
}
}
}