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ả:

Nhận xét

Mới hơn Cũ hơn