#define dataPin 4 // wire to 74HC595 pin 14
#define latchPin 7 // wire to 74HC595 pin 12
#define clockPin 8 // wire to 74HC595 pin 11
const char common = 'c'; // common cathode
void setup() {
// initialize I/O pins
pinMode(dataPin, OUTPUT);
pinMode(latchPin, OUTPUT);
pinMode(clockPin, OUTPUT);
}
void loop() {
// generate characters to display for hexidecimal numbers 0 to F
for (int i = 0; i <= 15; i++) {
byte bits = myfnNumToBits(i) ;
digitalWrite(latchPin, LOW); // prepare shift register for data
shiftOut(dataPin, clockPin, LSBFIRST, bits); // send data
digitalWrite(latchPin, HIGH); // update display
delay(500); // pause for 1/2 second
}
}
//*****************************************************************************//
// convert decimal number to segments to turn ON. The function get a decimal number
// and return a byte to send to shift register
//*****************************************************************************//
byte myfnNumToBits(int someNumber) {
switch (someNumber) {
case 0:
return B11111100;
break;
case 1:
return B01100000;
break;
case 2:
return B11011010;
break;
case 3:
return B11110010;
break;
case 4:
return B01100110;
break;
case 5:
return B10110110;
break;
case 6:
return B10111110;
break;
case 7:
return B11100000;
break;
case 8:
return B11111110;
break;
case 9:
return B11110110;
break;
case 10:
return B11101110; // Hexidecimal A
break;
case 11:
return B00111110; // Hexidecimal B
break;
case 12:
return B10011100; // Hexidecimal C or use for Centigrade
break;
case 13:
return B01111010; // Hexidecimal D
break;
case 14:
return B10011110; // Hexidecimal E
break;
case 15:
return B10001110; // Hexidecimal F or use for Fahrenheit
break;
default:
return B10010010; // Error condition, displays three vertical bars
break;
}
}
Comments