ESP8266 74HC595 Màn hình 7 đoạn 4 chữ số

Hướng dẫn này chỉ cho bạn cách sử dụng ESP8266 để điều khiển một mô-đun hiển thị 7-segment 4 chữ số dùng 74HC595. Cụ thể, chúng ta sẽ học:

hiển thị 7 đoạn 4 chữ số bằng ESP8266 NodeMCU và 74hc595

Tutorial này sẽ sử dụng một mô-đun hiển thị 7-segment gồm 4 chữ số và 4 dấu chấm, có thể hiển thị các giá trị số thực. Nếu bạn cần hiển thị dấu phân cách hai chấm, vui lòng tham khảo ESP8266 - Màn hình 7 đoạn 4 chữ số TM1637

Phần cứng cần chuẩn bị

1×ESP8266 NodeMCU ESP-12E
1×Recommended: ESP8266 NodeMCU ESP-12E (Uno-form)
1×USB Cable Type-A to Type-C (for USB-A PC)
1×USB Cable Type-C to Type-C (for USB-C PC)
1×74HC595 4-digit 7-segment Display
1×dây jumper
1×(Khuyến nghị) Screw Terminal Expansion Board for ESP8266
1×(Khuyến nghị) Power Splitter for ESP8266 Type-C

Or you can buy the following kits:

1×DIYables Sensor Kit (30 sensors/displays)
1×DIYables Sensor Kit (18 sensors/displays)

Giới thiệu về 74HC595 và màn hình hiển thị 7 đoạn 4 chữ số

Một mô-đun lý tưởng để hiển thị nhiệt độ hoặc bất kỳ giá trị số thực nào là màn hình 7 đoạn 4 chữ số 74HC595. Mô-đun này thường bao gồm bốn đèn LED 7 đoạn, bốn đèn LED hình chấm, và hai bộ điều khiển 74HC595 cho mỗi chữ số.

Sơ đồ các chân

Mô-đun hiển thị 7 đoạn 4 chữ số 74HC595 bao gồm 5 chân:

  • SCLK pin: là một chân đầu vào tín hiệu đồng hồ. Kết nối với bất kỳ chân số nào trên ESP8266.
  • RCLK pin: là một chân đầu vào tín hiệu đồng hồ. Kết nối với bất kỳ chân số nào trên ESP8266.
  • DIO pin: là một chân I/O dữ liệu. Kết nối với bất kỳ chân số nào trên ESP8266.
  • VCC pin: cung cấp nguồn cho mô-đun. Kết nối nó với nguồn cấp 3.3V đến 5V.
  • GND pin: là một chân đất.
cách bố trí chân của module 74hc595

Sơ đồ đấu dây

Bảng dưới đây cho thấy cách nối giữa các chân ESP8266 và các chân của 74HC595 cho màn hình 7 đoạn 4 chữ số:

ESP8266 74HC595 7-segment display
Vin5V
D5SCLK
D6RCLK
D7DIO

Nếu bạn đang sử dụng các chân khác nhau, hãy đảm bảo điều chỉnh số chân trong mã cho phù hợp.

sơ đồ nối dây của module ESP8266 NodeMCU 74hc595

This image is created using Fritzing. Click to enlarge image

Xem thêm Sơ đồ chân ESP8266Cách cấp nguồn cho ESP8266.

Cài đặt thư viện

Để lập trình dễ dàng cho màn hình 7 đoạn 4 chữ số dùng 74HC595, chúng ta cần cài đặt thư viện DIYables_4Digit7Segment_74HC595 do DIYables.io phát hành. Hãy làm theo các bước dưới đây để cài đặt thư viện:

  • Nhấp vào biểu tượng Thư viện ở thanh bên trái của Arduino IDE.
  • Tìm kiếm “DIYables_4Digit7Segment_74HC595”, sau đó tìm thư viện DIYables_4Digit7Segment_74HC595 của DIYables.io
  • Nhấp vào nút Cài đặt.
thư viện hiển thị 7 đoạn 4 chữ số cho ESP8266 NodeMCU dùng 74hc595

Bạn cũng có thể xem thư viện này trên Github

Cách Lập Trình Cho 74HC595 Màn Hình 7 Đoạn 4 Chữ Số Bằng ESP8266

  • Bao gồm thư viện
#include <DIYables_4Digit7Segment_74HC595.h>
  • Xác định các chân của ESP8266 được kết nối tới SCLK, RCLK và DIO của mô-đun hiển thị. Ví dụ, chân D7, D6 và D5
#define SCLK D5 // The ESP8266 pin connected to SCLK #define RCLK D6 // The ESP8266 pin connected to RCLK #define DIO D7 // The ESP8266 pin connected to DIO
  • Tạo một đối tượng hiển thị thuộc loại DIYables_4Digit7Segment_74HC595
DIYables_4Digit7Segment_74HC595 display = DIYables_4Digit7Segment_74HC595(CLK, DIO);
  • Sau đó bạn có thể hiển thị các số nguyên với tùy chọn đệm số 0, hỗ trợ số âm:
display.printInt(-13, false); // you can display a value from -999 to 9999
  • Bạn có thể hiển thị các số thực với số chữ số thập phân, các tùy chọn đệm 0, hỗ trợ số âm:
display.printFloat(-9.2, 1, false);
  • Bạn cũng có thể hiển thị số, dấu thập phân và ký tự theo từng chữ số bằng cách sử dụng các hàm cấp thấp hơn:
// display 9.3°C display.clear(); display.setNumber(1, 9); // set 9 at the 1st digit display.setDot(1); // set . at the 1st digit display.setNumber(2, 3); // set 3 at the 2nd digit display.setChar(3, SegChars::DEGREE); // set ° at the 3rd digit display.setChar(4, SegChars::C); // set C at the 3rd digit display.show(); // show on the display
  • Vì mô-đun 74HC595 4 chữ số 7-segment sử dụng kỹ thuật ghép kênh (multiplexing) để điều khiển các đoạn và LED riêng lẻ, mã ESP8266 PHẢI:
    • Gọi hàm display.show() trong vòng lặp chính
    • Không được sử dụng hàm delay() trong vòng lặp chính

    Bạn có thể xem thêm chi tiết tại tài liệu tham khảo thư viện

Mã ESP8266 - Hiển thị số nguyên

/* * Mã ESP8266 NodeMCU này được phát triển bởi newbiely.vn * Mã ESP8266 NodeMCU này được cung cấp để sử dụng công khai, không có ràng buộc. * Để xem hướng dẫn chi tiết và sơ đồ kết nối, vui lòng truy cập: * https://newbiely.vn/tutorials/esp8266/esp8266-74hc595-4-digit-7-segment-display */ #include <DIYables_4Digit7Segment_74HC595.h> // DIYables_4Digit7Segment_74HC595 library #define SCLK D5 // The ESP8266 pin connected to SCLK #define RCLK D6 // The ESP8266 pin connected to RCLK #define DIO D7 // The ESP8266 pin connected to DIO DIYables_4Digit7Segment_74HC595 display(SCLK, RCLK, DIO); void setup() { Serial.begin(9600); display.printInt(-13, false); // you can display a value from -999 to 9999 //display.printInt(-132, false); //display.printInt(9132, false); //display.printInt(132, false); //display.printInt(32, false); //display.printInt(2, false); //display.printInt(2, true); } void loop() { display.loop(); // MUST call the display.loop() function in loop() // DO SOMETHING HERE // NOTE: do NOT use the delay() function in loop because it affects to the multiplexing }

Hướng dẫn từng bước

Để bắt đầu với ESP8266 trên Arduino IDE, hãy làm theo các bước sau:

  • Xem hướng dẫn ESP8266 - Cài đặt phần mềm nếu đây là lần đầu bạn sử dụng ESP8266.
  • Nối các thành phần như được hiển thị trong sơ đồ.
  • Kết nối bo mạch ESP8266 với máy tính của bạn bằng cáp USB.
  • Mở Arduino IDE trên máy tính của bạn.
  • Chọn bo mạch ESP8266 đúng, chẳng hạn (ví dụ NodeMCU 1.0 (ESP-12E Module)), và cổng COM tương ứng của nó.
  • Sao chép mã ở trên và mở với ESP8266 IDE
  • Nhấp vào nút Upload trên ESP8266 IDE để tải mã lên ESP8266
  • Xem trạng thái của màn hình 7 đoạn

Mã ESP8266 - Hiển thị số thực

/* * Mã ESP8266 NodeMCU này được phát triển bởi newbiely.vn * Mã ESP8266 NodeMCU này được cung cấp để sử dụng công khai, không có ràng buộc. * Để xem hướng dẫn chi tiết và sơ đồ kết nối, vui lòng truy cập: * https://newbiely.vn/tutorials/esp8266/esp8266-74hc595-4-digit-7-segment-display */ #include <DIYables_4Digit7Segment_74HC595.h> // DIYables_4Digit7Segment_74HC595 library #define SCLK D5 // The ESP8266 pin connected to SCLK #define RCLK D6 // The ESP8266 pin connected to RCLK #define DIO D7 // The ESP8266 pin connected to DIO DIYables_4Digit7Segment_74HC595 display(SCLK, RCLK, DIO); void setup() { Serial.begin(9600); display.printFloat(-9.2, 1, false); //display.printFloat(-92.4, 1, false); //display.printFloat(-9.24, 2, false); //display.printFloat(192.4, 1, false); //display.printFloat(19.24, 2, false); //display.printFloat(1.924, 3, false); } void loop() { display.loop(); // MUST call the display.loop() function in loop() // DO SOMETHING HERE // NOTE: do NOT use the delay() function in loop because it affects to the multiplexing }

Mã ESP8266 - Hiển thị Nhiệt độ

/* * Mã ESP8266 NodeMCU này được phát triển bởi newbiely.vn * Mã ESP8266 NodeMCU này được cung cấp để sử dụng công khai, không có ràng buộc. * Để xem hướng dẫn chi tiết và sơ đồ kết nối, vui lòng truy cập: * https://newbiely.vn/tutorials/esp8266/esp8266-74hc595-4-digit-7-segment-display */ #include <DIYables_4Digit7Segment_74HC595.h> // DIYables_4Digit7Segment_74HC595 library #define SCLK D5 // The ESP8266 pin connected to SCLK #define RCLK D6 // The ESP8266 pin connected to RCLK #define DIO D7 // The ESP8266 pin connected to DIO DIYables_4Digit7Segment_74HC595 display(SCLK, RCLK, DIO); void setup() { Serial.begin(9600); // display 9.3°C by controlling digit by digit display.clear(); display.setNumber(1, 9); // set 9 at the 1st digit display.setDot(1); // set . at the 1st digit display.setNumber(2, 3); // set 3 at the 2nd digit display.setChar(3, SegChars::DEGREE); // set ° at the 3rd digit display.setChar(4, SegChars::C); // set C at the 3rd digit display.show(); // show on the display } void loop() { display.loop(); // MUST call the display.loop() function in loop() // DO SOMETHING HERE // NOTE: do NOT use the delay() function in loop because it affects to the multiplexing }

Video Tutorial

Việc sản xuất video tốn rất nhiều thời gian. Nếu video hướng dẫn hữu ích cho việc học của bạn, hãy đăng ký kênh YouTube để ủng hộ. Nếu nhu cầu đủ cao, chúng tôi sẽ cố gắng làm thêm nhiều video.