int dataPin = 0;
int latchPin = 1;
int clockPin = 2;
int switchA = 12;
int switchB = 13;
int switchC = 11;
int irSensor = A0;
byte counterA = 0;
byte counterD = 0;
byte counterB = 0;
int blueArray[4] = {3, 4, 5, 6};//Defines PWM pins that activate each digit
int redArray[4] = {7, 8, 9, 10};
int digitArray[4] = {0,0,0,0};
int intArray [10]=
{
B01111110, // 0
B00001100, // 1
B10110110, // 2
B10011110, // 3
B11001100, // 4
B11011010, // 5
B11111000, // 6
B00001110, // 7
B11111111, // 8
B11001111 // 9
};
void setup() {
pinMode(latchPin, OUTPUT);
pinMode(dataPin, OUTPUT);
pinMode(clockPin, OUTPUT);
pinMode(switchA, INPUT_PULLUP);
pinMode(switchB, INPUT_PULLUP);
pinMode(switchC, INPUT_PULLUP);
pinMode(irSensor, INPUT_PULLUP);
digitalWrite(latchPin, HIGH);
shiftOut(dataPin, clockPin, MSBFIRST,intArray [0]);
digitalWrite(latchPin, LOW);
displayOn();
}
void loop() {
displayOff();
digitalWrite(latchPin, LOW);
shiftOut(dataPin, clockPin, MSBFIRST,intArray[digitArray[counterD]]);
analogWrite(blueArray[counterD], 0);
analogWrite(redArray[counterD], 0);
digitalWrite(latchPin, HIGH);
delay(1);
counterD++;
if (counterD ==4) {
counterD = 0;
}
if (digitalRead(switchA) == LOW){
counterA ++;
if (counterA > 9) {
digitArray[2]=counterA/10;
digitArray[3]=counterA%10;
}
if (counterA>99){
counterA = 0;
}
delay(1);
}
if (digitalRead(switchB) == LOW){
counterB ++;
if (counterB > 9) {
digitArray[0]=counterB/10;
digitArray[1]=counterB%10;
}
if (counterB>99){
counterB = 0;
}
delay(1);
}
if(digitalRead(switchC) == LOW){
for (int i = 0; i <4; i++){
digitArray[i] = 0;
}
delay(1);
}
if (digitalRead(irSensor) == LOW){
counterA ++;
if (counterA > 9) {
digitArray[2]=counterA/10;
digitArray[3]=counterA%10;
}
if (counterA>99){
counterA = 0;
}
delay(1);
}
}
void displayOff() {
analogWrite((blueArray[0]),255);
analogWrite((blueArray[1]),255);
analogWrite((blueArray[2]),255);
analogWrite((blueArray[3]),255);
analogWrite((redArray[0]),255);
analogWrite((redArray[1]),255);
analogWrite((redArray[2]),255);
analogWrite((redArray[3]),255);
}
void displayOn() {
analogWrite((blueArray[0]),0);
analogWrite((blueArray[1]),0);
analogWrite((blueArray[2]),0);
analogWrite((blueArray[3]),0);
analogWrite((redArray[0]),0);
analogWrite((redArray[1]),0);
analogWrite((redArray[2]),0);
analogWrite((redArray[3]),0);
}