Hướng Dẫn Sử Dụng Module LED 7 Đoạn 74HC595 Với Arduino

Module LED 7 Đoạn 74HC595
Module LED 7 Đoạn 74HC595

Trong hướng dẫn này, chúng tôi sẽ chỉ cho bạn cách sử dụng màn hình phân đoạn 7 chữ số 3 với bảng Arduino UNO. Chúng ta sẽ sử dụng các hàm countUP () và countDown () để đếm từ 0 đến 'số' (biến) và từ 'số' đến 0. Chúng ta có thể thay đổi 'số' này với giá trị từ 0 đến 9999.

Chuẩn bị:

Kết nối rất dễ dàng:

Kết nối module 3 LED 7 đoạn  với Arduino:

  • VCC -5V Pin
  • GND - GND
  • SDI - D2
  • CLK - D3
  • LOAD - D4

Code:

#include <ShiftRegister74HC595.h>
// create a global shift register object
// parameters: <number of shift registers> (data pin, clock pin, latch pin)
ShiftRegister74HC595<8> sr(2, 3, 4);
long number = 99999; // <--- Change it from 0 to number

long value, digit1, digit2, digit3, digit4, digit5, digit6, digit7, digit8 ;
uint8_t  numberB[] = {
 B11000000, //0
 B11111001, //1
 B10100100, //2
 B10110000, //3
 B10011001, //4
 B10010010, //5
 B10000010, //6
 B11111000, //7
 B10000000, //8
 B10011000 //9
};

void setup() {
 //Count from 0 to 'number'
 countAll_0_9();
 delay(500);
 countUp();
 //Count from 'number' to 0
 //countDown();  // <--- Comment countUp and uncomment countDown
 //Blink 4 times all on and all off.
 blink();
}

void loop() {

}

void countUp() {
 for (int i = 0; i <= number; i++) {
   //Split number to digits:
   digit8 = (i / 10000000) % 10;
   digit7 = (i / 1000000) % 10;
   digit6 = (i / 100000) % 10 ;
   digit5 = (i / 10000) % 10;
   digit4 = (i / 1000) % 10 ;
   digit3 = (i / 100) % 10;
   digit2 = (i / 10) % 10 ;
   digit1 = i % 10 ;
   //Send them to 7 segment displays
   uint8_t numberToPrint[] = {numberB[digit8], numberB[digit7],numberB[digit6], numberB[digit5], numberB[digit4],numberB[digit3], numberB[digit2], numberB[digit1]};//8led
    // uint8_t numberToPrint[] = {numberB[digit4],numberB[digit3], numberB[digit2], numberB[digit1]};//4led
 //uint8_t numberToPrint[] = {numberB[digit3], numberB[digit2], numberB[digit1]};//3led
 //uint8_t numberToPrint[] = {numberB[digit2], numberB[digit1]};//2led
 sr.setAll(numberToPrint);
   //Reset them for next time
   digit1 = 0;
   digit2 = 0;
   digit3 = 0;
   delay(100); // Repeat every 100 ms
 }
}

void countAll_0_9() {
 for (int i=0; i<10; i++) {
   digit1 = i % 10 ;
   //Send them to 7 segment displays
   uint8_t numberToPrint[] = {numberB[digit1], numberB[digit1], numberB[digit1],numberB[digit1], numberB[digit1], numberB[digit1], numberB[digit1], numberB[digit1]};//8led
 //uint8_t numberToPrint[] = {numberB[digit1], numberB[digit1], numberB[digit1], numberB[digit1]};//4led
 //uint8_t numberToPrint[] = {numberB[digit1], numberB[digit1], numberB[digit1]}//3led
 //uint8_t numberToPrint[] = {numberB[digit1], numberB[digit1]}//2led
   sr.setAll(numberToPrint);
   //Reset them for next time
   digit1 = 0;
   delay(300); // Repeat every 1 sec
 }
}
//Blink
void blink() {
 for (int i = 0; i < 4; i++) {
   sr.setAllLow(); // set all pins Low (off)
   delay(1000);
   sr.setAllHigh(); // set all pins High (on)
   delay(1000);
 }
}

Kết quả: