Good Evening, I Hope everyone is well.
I am currently building an external gear display based on reading CAN IDs from the vehicle using an Arduino UNO board as well as a AZL Can-bus shield. Now i have isolated the IDs I need, however 1 segment (Segment C) in my common cathode 7 segment display remains on and i cannot seem to turn it off. I change pins from previously it being on pin2 to pin10.
The code i am using is listed below:
int pina = 6;
int pinb = 5;
int pinc = 10;
int pind = 3;
int pine = 4;
int pinf = 7;
int ping = 8;
int pindp = 9;
#include <Canbus.h>
#include <defaults.h>
#include <global.h>
#include <mcp2515.h>
#include <mcp2515_defs.h>
void setup()
{
if(Canbus.init(CANSPEED_500)); //Initialise MCP2515 CAN controller at the specified speed
pinMode(pina ,OUTPUT);
pinMode(pinb ,OUTPUT);
pinMode(pinc ,OUTPUT);
pinMode(pind ,OUTPUT);
pinMode(pine ,OUTPUT);
pinMode(pinf ,OUTPUT);
pinMode(ping ,OUTPUT);
pinMode(pindp ,OUTPUT);
}
void loop() { tCAN message;
if (mcp2515_check_message())
{
if (mcp2515_get_message(&message))
{
if(message.id == 0x540 and message.data[0] == 0xB5 and message.data[2] == 0xFF and message.data[7] == 0x26) //Park=26; Reverse=36; Neutral=46; Drive=56; Sports=66 (1st=2F; 2nd=3F; 3rd=4F; 4th=5F; 6th=7F)
{
digitalWrite(pina, HIGH);
digitalWrite(pinb, HIGH);
digitalWrite(pinc, LOW);
digitalWrite(pind, LOW);
digitalWrite(pine, HIGH);
digitalWrite(pinf, HIGH);
digitalWrite(ping, HIGH);
delay(50);
}
if(message.id == 0x540 and message.data[0] == 0xB5 and message.data[2] == 0xFF and message.data[7] == 0x36) //Park=26; Reverse=36; Neutral=46; Drive=56; Sports=66 (1st=2F; 2nd=3F; 3rd=4F; 4th=5F; 6th=7F)
{
digitalWrite(pina, HIGH);
digitalWrite(pinb, HIGH);
digitalWrite(pinc, LOW);
digitalWrite(pind, LOW);
digitalWrite(pine, HIGH);
digitalWrite(pinf, HIGH);
digitalWrite(ping, LOW);
delay(50);
}
if(message.id == 0x540 and message.data[0] == 0xB5 and message.data[2] == 0xFF and message.data[7] == 0x46) //Park=26; Reverse=36; Neutral=46; Drive=56; Sports=66 (1st=2F; 2nd=3F; 3rd=4F; 4th=5F; 6th=7F)
{
digitalWrite(pina, LOW);
digitalWrite(pinb, LOW);
digitalWrite(pinc, HIGH);
digitalWrite(pind, LOW);
digitalWrite(pine, HIGH);
digitalWrite(pinf, LOW);
digitalWrite(ping, HIGH);
delay(50);
}
if(message.id == 0x540 and message.data[0] == 0xB5 and message.data[2] == 0xFF and message.data[7] == 0x56) //Park=26; Reverse=36; Neutral=46; Drive=56; Sports=66 (1st=2F; 2nd=3F; 3rd=4F; 4th=5F; 6th=7F)
{
digitalWrite(pina, LOW);
digitalWrite(pinb, HIGH);
digitalWrite(pinc, HIGH);
digitalWrite(pind, HIGH);
digitalWrite(pine, HIGH);
digitalWrite(pinf, LOW);
digitalWrite(ping, HIGH);
delay(50);
}
if(message.id == 0x540 and message.data[0] == 0xB5 and message.data[2] == 0xFF and message.data[7] == 0x66) //Park=26; Reverse=36; Neutral=46; Drive=56; Sports=66 (1st=2F; 2nd=3F; 3rd=4F; 4th=5F; 6th=7F)
{
digitalWrite(pina, HIGH);
digitalWrite(pinb, LOW);
digitalWrite(pinc, HIGH);
digitalWrite(pind, HIGH);
digitalWrite(pine, LOW);
digitalWrite(pinf, HIGH);
digitalWrite(ping, HIGH);
delay(50);
}
}
}
}
I would really appreciate any help on this matter. I am not a programmer by profession and everything I have learnt has been through tutorials and YouTube videos.
Many Thanks


