Professional Documents
Culture Documents
Led 7
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.
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.
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();
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.