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:

Module LED 74HC595 Arduino
VCC VCC
GND GND
SDI D2
CLK D3
LOAD D4

Cài đặt thư viện

Trước khi sử dụng DS1307, bạn cần cài đặt thư viện ShiftRegister74HC595. Bạn có thể thực hiện điều này bằng cách mở Arduino IDE và điều hướng đến "Sketch" -> "Include Library" -> "Manage Libraries". Tìm kiếm "ShiftRegister74HC595" và cài đặt thư viện được tạo bởi Timo Denk.

Vào "Sketch" -> "Include Library" -> "Manage Libraries
Tìm kiếm "ShiftRegister74HC595"

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