Hướng Dẫn Sử Dụng Module LED 7 Đoạn 74HC595 Với Arduino
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.
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);
}
}
Nhận xét