Hello everyone,
So I plan to make a shift light indicator for my car that has a 5 speed manual. I already made a concept idea with some toggle buttons before the hall effect sensors come. Essentially, the 7 segment LED will loop around in circles when it is in Neutral. When it goes to the dedicated gear, it will display that gear.
Here is what I have so far.
Pins 9-13 controll the buttons, 2-8 are connected to the 7-segment LED.
Here is my code:
//initializes the buttons
const int firstPin = 9;
int button1st = 0;
const int secondPin = 10;
int button2nd = 0;
const int thirdPin = 11;
int button3rd = 0;
const int fourthPin = 12;
int button4th = 0;
const int fifthPin = 13;
int button5th = 0;
//initializes the LED screen
void setup()
{
pinMode(2, OUTPUT);
pinMode(3, OUTPUT);
pinMode(4, OUTPUT);
pinMode(5, OUTPUT);
pinMode(6, OUTPUT);
pinMode(7, OUTPUT);
pinMode(8, OUTPUT);
pinMode(button1st, INPUT);
pinMode(button2nd, INPUT);
pinMode(button3rd, INPUT);
pinMode(button4th, INPUT);
pinMode(button5th, INPUT);
}
void loop()
{
button1st = digitalRead(firstPin);
button2nd = digitalRead(secondPin);
button3rd = digitalRead(thirdPin);
button4th = digitalRead(fourthPin);
button5th = digitalRead(fifthPin);
//if the button for 1st gear is pressed, display 1
if ( button1st == HIGH )
{
digitalWrite(6, 1);
digitalWrite(8, 0);
digitalWrite(4, 0);
digitalWrite(2, 0);
digitalWrite(3, 0);
digitalWrite(5, 0);
digitalWrite(7, 1);
}
else if ( button2nd == HIGH ) //if button for gear 2 is pressed, display 2
{
digitalWrite(6, 1);
digitalWrite(8, 1);
digitalWrite(4, 0);
digitalWrite(2, 1);
digitalWrite(3, 1);
digitalWrite(5, 1);
digitalWrite(7, 0);
}
else if ( button3rd == HIGH)//display 3
{
digitalWrite(6, 0);
digitalWrite(8, 1);
digitalWrite(4, 1);
digitalWrite(2, 1);
digitalWrite(3, 1);
digitalWrite(5, 1);
digitalWrite(7, 0);
}
else if ( button4th == HIGH) //display 4
{
digitalWrite(6, 0);
digitalWrite(8, 1);
digitalWrite(4, 1);
digitalWrite(2, 0);
digitalWrite(3, 1);
digitalWrite(5, 0);
digitalWrite(7, 1);
}
else if ( button5th == HIGH) //display 5
{
digitalWrite(6, 0);
digitalWrite(8, 1);
digitalWrite(4, 1);
digitalWrite(2, 1);
digitalWrite(3, 0);
digitalWrite(5, 1);
digitalWrite(7, 1);
}
else //If no buttons are pressed, clear the screen and loop
{
digitalWrite(2, 0);
digitalWrite(3, 0);
digitalWrite(4, 0);
digitalWrite(5, 0);
digitalWrite(6, 0);
digitalWrite(7, 0);
digitalWrite(8, 0);
digitalWrite(3, 1);
delay (100);
digitalWrite(3, 0);
digitalWrite(4, 1);
delay (100);
digitalWrite(4, 0);
digitalWrite(5, 1);
delay (100);
digitalWrite(5, 0);
digitalWrite(6, 1);
delay (100);
digitalWrite(6, 0);
digitalWrite(7, 1);
delay (100);
digitalWrite(7, 0);
digitalWrite(2, 1);
delay (100);
digitalWrite(2, 0);
}
}
So essentially what I want to do is use shift registers on the M74HC595B1 so I can add an extra sensor for the reverse gear. All the tutorials I've seen online with shift registers dont use buttons and thats where I get lost on how to implement it with my code/circuit.
Thanks.