Download as docx, pdf, or txt
Download as docx, pdf, or txt
You are on page 1of 9

Tổng quan về cách sử dụng Module 4 LED 7

đoạn - Phần 1
Nền tảng

Đó là loại đơn, còn loại chúng ta tìm hiểu là module 4 led, nó cũng khá tương tự bởi vì nó
gồm 4 led đơn gắp lại, trong module đó có các pin gồm: 4 chân GND(Vcc) của 4 led đơn,
Các chân A B C D E F G DP của từng led đơn được nối chung lại như hình dưới, tổng
cộng là 12 pin. Nhưng loại 14 pin còn có thêm 2 pin cho dấu hai chấm (Colon) và loại 16
pin thì như loại 14 pin nhưng có thêm 2 pin cho dấu chấm phẩy (Apostrophe). Hình
avatar của bài viết là loại 16 pin.

Sau khi đã có nền tảng, chúng ta hãy cùng tìm hiểu tiếp.
Cách tra pinout (Sơ đồ pin)
Khi bạn có trong tay 1 module 4 led 7 đoạn, bạn sẽ phải bắt tay vào tìm pinout của nó để
biết cách mắc. Đầu tiền ta phải hỏi người bán, nếu quên hoặc họ không biết thì hãy nhìn
xuống dưới:

Có 2 trường hợp:

Trường hợp 1

Module led ấy được sử dụng nhiều và có datasheet (Thông tin kĩ thuật) trên mạng
internet.

Bạn đọc tên module trên vỏ của nó và search gu gồ bằng từ khóa "datasheet + [tên
module led]".

Sau khi tìm thấy datasheet của nó trên internet, hãy vào đó đọc và tìm pinout của nó, và
trong đó cũng có khá nhiều thông tin có thể có ích.
Trường hợp 2

Nếu không tìm thấy datasheet của nó, thì bạn sẽ rơi vào trường hợp này. Và ta sẽ làm
cách như:

Chuẩn bị:

 Nguồn 1.5V
 Giấy bút để ghi lại
 Module led 4 đoạn cần xác định pinout.

Bước đầu tiên đặt tên cho các pin và ghi ra giấy giống hình dưới.

Bước tiếp theo, chúng ta cần nhiều may rủi :), ta nối 2 pin bất kì của module với 2 cực
nguồn 1.5v, ta thử mãi cho tới khi có 1 đoạn led sáng, nếu đoạn led sáng đó là dấu hai
chấm hay dấu chấm phẩy thì ghi lại (+) và (-) của 2 pin đó và đánh dấu đó là cặp pin của
dấu 2 chấm và dấu chấm phẩy. Còn nếu đoạn led sáng là một đoạn a,b,c,d,e,f,g hay dp thì
ta ghi lại (+) , (-) và kí hiệu của cặp pin đó (a,b,c,d,e,f,g,dp) (Mình tạm gọi 2 pin đó là
pin(+) và pin(-) ) sau đó làm tiếp như sau:

Rút cực âm nguồn ra khỏi pin đó, vẫn nối pin kia vs nguồn 1.5v. Nối cực âm tới 1 pin
khác bất kì ngoại trừ pin vừa rút ra cho tới khi có 1 đoạn led sáng lên, nếu đoạn led sáng
thuộc led đơn có đoạn trước vừa sáng thì đây là module chung cực dương. Nếu đoạn led
sáng thuộc led đơn khác thì đây là loại chung cực âm.

Sau khi biết module chung cực gì, thì ta làm tiếp: Nếu chung (+) thì nối pin(+) vào cực
dương nguồn và nối cực âm nguồn tới các pin còn lại, khi nối nếu có đoạn led sáng thì
ghi lại pin nào và thuộc kí hiệu nào (a,b,...). Cứ như vậy ta xác định được 8 pin abc....dp.
Tiếp theo nối cực âm nguồn vào pin(-) và nối cực dương tới các pin còn lại chưa biết, các
đoạn led sáng ở nhóm nào thì ghi lại pin mà cực dương của nguồn nối vào là pin (+)
chung của nhóm đó. Ta xác định được các pin chung của từng nhóm.

Nếu chung (-) thì nối pin(-) vào cực âm nguồn và nối cực dương nguồn tới các pin còn
lại, khi nối nếu có đoạn led sáng thì ghi lại pin nào và thuộc kí hiệu nào (a,b,...). Cứ như
vậy ta xác định được 8 pin abc....dp. Tiếp theo nối cực dương nguồn vào pin(+) và nối
cực âm tới các pin còn lại chưa biết, các đoạn led sáng ở nhóm nào thì ghi lại pin mà cực
âm của nguồn nối vào là pin (-) chung của nhóm đó. Ta xác định được các pin chung của
từng nhóm.

Sau khi xác định được pinout, ta vẽ lại cho rõ ràng.


Tổng quan về cách sử dụng Module 4 LED 7
đoạn - Phần 2
Code lập trình
Trước tiên các bạn tải thư viện này về, SevSeg. Sau khi tải về giải nén và chép vào thư
mục libraries trong thư mục cài đặt Arduino IDE của bạn.

Các bạn tham khảo code bên, mình cũng có vài câu giải thích trong code luôn.

1. #include "SevSeg.h" //Thêm thư viện SevSeg vào.


2.
3. //Tạo đối tượng led 7 đoạn
4. SevSeg myDisplay;
5.
6. void setup()
7. {
8.
9. int displayType = COMMON_CATHODE; //Kiểu led chung cực
dương(COMMON_ANODE) hay cực âm(COMMON_CATHODE)
10.
11. int digit1 = 8; //Pin chung nhóm 1
12. int digit2 = 5; //Pin chung nhóm 2
13. int digit3 = 11; //Pin chung nhóm 3
14. int digit4 = 13; //Pin chung nhóm 4
15.
16. //Khai báo pin các nhánh của led đơn
17. int segA = 7; //Nhánh led A
18. int segB = 6; //Nhánh led B
19. int segC = 10; //Nhánh led C
20. int segD = 3; //Nhánh led D
21. int segE = 9; //Nhánh led E
22. int segF = 4; //Nhánh led F
23. int segG = 2; //Nhánh led G
24. int segDP = 12; //Dấu chấm
25.
26. int numberOfDigits = 4; //Số dấu chấm
27.
28. myDisplay.Begin(displayType, numberOfDigits, digit1, digit2,
digit3, digit4, segA, segB, segC, segD, segE, segF, segG, segDP);
//Thông báo thông tin về module
29. myDisplay.SetBrightness(100); //Điều chỉnh độ sáng là 100%
30. }
31.
32. void loop()
33. {
34. myDisplay.DisplayString("abcd", 0b00001000); /* Thể hiện chữ
AbcD ra bảng LED, và dãy số 0b00001000 là vị trí dấu chấm.
35. Bạn hãy thử
thay những số 0 bằng số 1 hoặc ngược lại để kiểm nghiệm*/
36. delay(5000); //Chờ 5s
37. myDisplay.DisplayString("11 3", 0b00000001); /*Thể hiện dãy "11
3" ra bảng led*/
38. }

Khi bạn biểu diễn một kí tự mà thư viện không có và biểu diễn dấu cách thì led đơn đó sẽ
không sáng.

Thư viện này rất đơn giản, sau khi mình khám file nguồn của thư viện nó chỉ gồm 3 câu
lệnh chính:

 .Begin();
 .SetBrightness();
 .DisplayString();

Đếm số lần nhấn button với led 7 đoạn


Led 7 đoạn thực chất chỉ là gồm nhiều đèn led nhỏ hơn được sắp xếp lại với nhau. Đây là
một giải pháp hiển thị khá rẻ, tiết kiệm năng lượng và bền. 1 led 7 đoạn có giá chỉ vài
ngàn đồng. Tuy nhiên nếu điều kiện cho phép, bạn nên sử dụng màn hình LCD để đơn
giản hóa việc điều khiển. Tham khảo cách sử dụng loại màn hình này tại bài viết Đọc
nhiệt độ - độ ẩm và xuất ra màn hình LCD.

Giới thiệu led 7 đoạn


Phần cứng
 Arduino Uno R3
 1 Led 7 đoạn (đơn)
 1 button (nút nhấn)
 2 điện trở 560 Ohm (hoặc 220 Ohm hoặc 1kOhm)
 Breadboard
 Dây cắm breadboard

Lắp mạch
Lập trình
1. // Đối với Led7 đơn chúng ta sẽ không sử dụng thư viện SevSeg như
Led 7 tứ
2. const int segmentPins[8] = {6,10,9,3,4,5,7,8}; //quản lý việc hiển
thị LED 7 đoạn DP,G-A (dấu chấm)
3.
4. int buttonPin = 2; // khai báo chân digital kết nối đến button
5.
6. int i=0;
7.
8. const byte numberal[10] = { // Chúng ta sẽ dùng kiểu mảng để khai
báo 9 trạng thái của led (0-9) bằng mã nhị phân
9. B11111100, // Quy ước 1 sáng 0 tắt => các vị trí F-A sẽ
sáng, G tắt, DP tắt. Led hiển thị số 0
10. B01100000, // tương tự với mã này ta sẽ được số 1
11. B11011010, // 2
12. B11110010, // 3
13. B01100110, // 4
14. B10110110, // 5
15. B10111110, // 6
16. B11100000, // 7
17. B11111110, // 8
18. B11100110, // 9
19. };
20. void setup() { //thiết lập các chức năng chân
21.
22. for (int vitri = 0; vitri < 8; vitri++) {
23. pinMode(segmentPins[vitri], OUTPUT);
24. digitalWrite(segmentPins[vitri], HIGH);
25. }
26.
27. pinMode(buttonPin, INPUT); // PinMode để nhận tín hiệu đầu vào từ
Button
28.
29. attachInterrupt(0, tang, RISING); // Thêm một Interrupt tại chân
digital 2
30. // Tham khảo thêm tại http://arduino.vn/reference/attachinterrupt
31.
32. Serial.begin(9600); // Bật Serial ở mức baudrate 9600
33.
34. Sodawrite(0); //Đầu tiên là xuất số 0
35. }
36.
37. void loop() {}
38.
39. void tang(){
40. //Chỉ đếm từ 0 --> 9
41. i = ++i % 10; //Xem thêm tại
http://arduino.vn/reference/Increment-Decrement
42. Sodawrite(i); //Xuất ra đèn Module LED 7 đoạn
43. }
44.
45. void Sodawrite(int number) {
46. number = constrain(number,0,9);
47. Serial.println(number); //Xuất giá trị hiện tại
48. boolean isBitSet;
49.
50. for(int segment=0; segment < 8; segment++) { // Có 1 byte 8bit
nên chạy từ bit 0 --> 7
51. isBitSet = bitRead(numberal[number], segment);
52. isBitSet = !isBitSet; // Do chúng ta sử dụng LED 7 đoạn chung
cực dương nên phải có dòng này.
53. digitalWrite(segmentPins[segment], isBitSet);
54. }
55.
56. }

Khi phải điều khiển nhiều led 7 đoạn, người ta không dùng cách như trên bởi sẽ tốn rất
nhiều chân điều khiển. Thay vào đó, một kĩ thuật hiển thị khác ứng dụng sự lưu ảnh của
mắt gọi là "Quét led". Arduino.vn sẽ hướng dẫn các bạn kĩ thuật này trong một bài viết
khác.

You might also like