#include <SPI.h>
//Mosi Pin: 23
//Miso Pin: 19
//SCK Pin: 18
//PL Pin: 21
byte shift_1;
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
int latchPinGreen = 14; // Latch pin of 74HC595 is connected to Digital pin 5
int clockPinGreen = 27; // Clock pin of 74HC595 is connected to Digital pin 6
int dataPinGreen = 12;
byte ledsRed = 0;// Variable to hold the pattern of which LEDs are currently turned on or off
byte ledsGreen =0;
int pb1 = 2;
int pb2 = 4;
int pb3 = 5;
int a =0;
int b =0;
int c =0;
/*
* setup() - this function runs once when you turn your Arduino on
* We initialize the serial connection with the computer
*/
void setup()
{
Serial.begin(115200);
SPI.setClockDivider(SPI_CLOCK_DIV128);
SPI.setDataMode(SPI_MODE0);
SPI.setBitOrder(MSBFIRST);
SPI.begin();
// Set all the pins of 74HC595 as OUTPUT
pinMode(latchPinRed, OUTPUT);
pinMode(dataPinRed, OUTPUT);
pinMode(clockPinRed, OUTPUT);
pinMode(latchPinGreen, OUTPUT);
pinMode(dataPinGreen, OUTPUT);
pinMode(clockPinGreen, OUTPUT);
pinMode(pb1, INPUT_PULLUP);
pinMode(pb2, INPUT_PULLUP);
pinMode(pb3, INPUT_PULLUP);
pinMode(21, OUTPUT);
digitalWrite(21, HIGH);
}
void loop()
{
digitalWrite(21, LOW);
delay(50);
digitalWrite(21, HIGH);
shift_1 = SPI.transfer(0X00);
Serial.print("Register: ");
Serial.print(shift_1,BIN);
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);
digitalWrite(latchPinGreen, LOW);
shiftOut(dataPinGreen, clockPinGreen, MSBFIRST, ledsGreen);
digitalWrite(latchPinGreen, HIGH);
}