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);
}
}
Nhận xét