gabbyshimoni icon

7seg with shift register

gabbyshimoni | PRO | 12/18/18 10:11:14 AM UTC | 0 ⭐ | 404 👁️ | Never ⏰ | []
C++ |

2.14 KB

|

None

|

0 👍

/

0 👎

#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