const int dataPin = 19; /* Q7 */
const int clockPin = 18; /* CP */
const int latchPin = 21; /* PL */
byte numBits = 8; /* Set to 8 * number of shift registers */
int latchPinRed = 33; // Latch pin of 74HC595 is connected to Digital pin 5
int clockPinRed = 32; // Clock pin of 74HC595 is connected to Digital pin 6
int dataPinRed = 25; // Data pin of 74HC595 is connected to Digital pin 4
byte ledsRed = 0;// Variable to hold the pattern of which LEDs are currently turned on or off
int pb1 = 2;
int pb2 = 4;
int pb3 = 5;
int a = 0;
int b = 0;
int c = 0;
int i = 0;
int bit0 = 0;
int bit1 = 0;
int bit2 = 0;
int bit3 = 0;
int bit4 = 0;
int bit5 = 0;
int bit6 = 0;
int bit7 = 0;
unsigned long current_time = 0;
int PC1_OnPulse = 1000;
int PC2_OnPulse = 1000;
void setup()
{
Serial.begin(115200);
pinMode(dataPin, INPUT);
pinMode(clockPin, OUTPUT);
pinMode(latchPin, OUTPUT);
// Set all the pins of 74HC595 as OUTPUT
pinMode(latchPinRed, OUTPUT);
pinMode(dataPinRed, OUTPUT);
pinMode(clockPinRed, OUTPUT);
pinMode(pb1, INPUT_PULLUP);
pinMode(pb2, INPUT_PULLUP);
pinMode(pb3, INPUT_PULLUP);
}
void loop() {
digitalWrite(latchPin, LOW);
digitalWrite(latchPin, HIGH);
Serial.print("Bits: ");
for (i = 0; i < numBits; i++) {
int bit = digitalRead(dataPin);
if (bit == HIGH) {
if(i == 0 and bit == HIGH) bit0 = 1;
if(i == 1 and bit == HIGH) bit1 = 1;
if(i == 2 and bit == HIGH) bit2 = 1;
if(i == 3 and bit == HIGH) bit3 = 1;
if(i == 4 and bit == HIGH) bit4 = 1;
if(i == 5 and bit == HIGH) bit5 = 1;
if(i == 6 and bit == HIGH) bit6 = 1;
if(i == 7 and bit == HIGH) bit7 = 1;
Serial.print("1");
} else {
if(i == 0 and bit == LOW) bit0 = 0;
if(i == 1 and bit == LOW) bit1 = 0;
if(i == 2 and bit == LOW) bit2 = 0;
if(i == 3 and bit == LOW) bit3 = 0;
if(i == 4 and bit == LOW) bit4 = 0;
if(i == 5 and bit == LOW) bit5 = 0;
if(i == 6 and bit == LOW) bit6 = 0;
if(i == 7 and bit == LOW) bit7 = 0;
Serial.print("0");
}
//delay(500);
digitalWrite(clockPin, HIGH); // Shift out the next bit
digitalWrite(clockPin, LOW);
}
Serial.print(" bit0=");
Serial.print(bit0);
Serial.print(" bit1=");
Serial.print(bit1);
Serial.print(" bit2=");
Serial.print(bit2);
Serial.print(" bit3=");
Serial.print(bit3);
Serial.print(" bit4=");
Serial.print(bit4);
Serial.print(" bit5=");
Serial.print(bit5);
Serial.print(" bit6=");
Serial.print(bit6);
Serial.print(" bit7=");
Serial.print(bit7);
if (bit0 == 1){
Serial.print(" aasd ");
current_time = millis();
bitSet(ledsRed, 7);
}
if (millis() >= current_time + PC1_OnPulse){
bitClear(ledsRed, 7);
}
a = digitalRead(pb1);
b = digitalRead(pb2);
c = digitalRead(pb3);
if (a == LOW) {
bitSet(ledsRed, 0);
Serial.print(" Lamp 1 On");
updateShiftRegister();
} else {
bitClear(ledsRed, 0);
Serial.print(" Lamp 1 Off");
updateShiftRegister();
}
if (b == LOW) {
bitSet(ledsRed, 1);
Serial.print(" Lamp 2 On");
updateShiftRegister();
} else {
bitClear(ledsRed, 1);
Serial.print(" Lamp 2 Off");
updateShiftRegister();
}
if (c == LOW) {
bitSet(ledsRed, 2);
Serial.print(" Lamp 3 On");
updateShiftRegister();
} else {
bitClear(ledsRed, 2);
Serial.print(" Lamp 3 Off");
updateShiftRegister();
}
Serial.println();
}
void updateShiftRegister()
{
digitalWrite(latchPinRed, LOW);
shiftOut(dataPinRed, clockPinRed, MSBFIRST, ledsRed);
digitalWrite(latchPinRed, HIGH);
}