LED 7 đoạn
![LED 7 đoạn.](https://resources.stdio.vn/content/article/5ef62bbf5ef9e26f89a5c4ce/resources/res-1597056799-1597056799609.png)
LED 7 đoạn thường được dùng để hiển thị số, về cấu tạo LED 7 đoạn là các đèn LED được lắp theo thứ tự và hình ảnh giống số 8. Về phương thức hoạt động tương tự như LED bình thường.
Mỗi đoạn tương ứng một đèn LED nên cũng có cực âm và cực dương. Tuy nhiên có 2 loại đèn LED:
- Anode các chân LED có chung 1 chân cực dương.
- Cathode các chân LED có chung 1 chân cực âm.
Sử dụng LED 7 đoạn với Arduino
Chuẩn bị
- 1 x LED 7 đoạn loại chung Anode
- Breadboard
- Dây cắm các loại
- Arduino Uno R3 hoặc tương đương
Hiện thực
Cũng như cách hiện thực LED chớp tắt, chỉ quan tâm các giá trị cho chân đó là HIGH
và LOW
. Để biểu diễn một thông tin ra ngoài chỉ có cách bật đèn LED, tuy nhiên có thể sắp xếp thứ tự các đèn LED để thành ký tự.
Thử nghiệm
Trước khi hiện thực, thử lắp đặt các linh kiện như sau: nối chân 5V vào các chân A của LED 7 đoạn nhưng thông qua 1 con trở 500Ω.
![](https://resources.stdio.vn/content/article/5ef62bbf5ef9e26f89a5c4ce/resources/res-1597057165-1597057165257.png)
Cấu trúc của LED 7 đoạn
![Cấu trúc LED 7 đoạn.](https://resources.stdio.vn/content/article/5ef62bbf5ef9e26f89a5c4ce/resources/res-1597057191-1597057191106.png)
- Từ số 1 → 7 tượng trưng cho chân cắm tương đương với vị trí các đèn LED ở hình kế bên.
- Dấu
.
tượng cho dấu chấm trên đèn LED. - Chân
A
tượng trưng cho chân nguồn của đèn. Tùy vào đây là đèn LED gì mà chân A khác nhau:- Đèn LED Anode: chân
A
được nối vào VCC. - Đèn LED Cathode: chân
A
được nối vào GND.
- Đèn LED Anode: chân
Do LED 7 đoạn này là Anode, để cho một trong các đèn LED của “đoạn" đó của LED 7 đoạn sáng, Nối chân của "đoạn" LED đó với GND. Ví dụ muốn để đoạn số 1 của LED 7 đoạn sáng thì cắm chân số 1 như hình trên.
Kết quả sẽ được như hình dưới:
![](https://resources.stdio.vn/content/article/5ef62bbf5ef9e26f89a5c4ce/resources/res-1597057311-1597057311974.png)
Lý do sử dụng đèn Anode
Vì LED 7 đoạn cần nguồn nhỏ tức ~ < 3V
, trong khi đó nguồn mà Arduino cung cấp là 5V. Vì thế cần hạ áp dòng trước khi đưa vào đèn, tuy nhiên nếu sử dụng đèn Cathode thì phải nối nguồn 5V cho từng chân đèn LED dẫn đến việc tốn nhiều điện trở. Nếu sử dụng Anode, chỉ cần sử dụng một điện trở để hạ nguồn cho toàn bộ LED.
Code cài đặt
Sau kết quả kiểm tra trên, các đèn của LED 7 đoạn hoạt động dựa trên nguyên lý tắt mở.
Cắm các chân theo một thứ tự để dễ kiểm soát.
Ở đây cắm các chân 1 → 7 của đèn theo thứ tự từ chân 3 → 10 và tạm thời không sử dụng chân nối với LED thể hiện kí tự .
.
- Để tắt một đoạn LED bất kì, đưa điện áp nối với chân đó lên
HIGH
. - Để mở một đoạn LED bất kì, hạ điện áp nối với chân đó về
LOW
.
![Sơ đồ lắp mạch cho LED 7 đoạn và Arduino.](https://resources.stdio.vn/content/article/5ef62bbf5ef9e26f89a5c4ce/resources/res-1597057924-1597057924100.png)
Để bật đèn LED 7 đoạn hiển thị số 2, sử dụng đoạn code:
digitalWrite(3, LOW); digitalWrite(4, LOW); digitalWrite(5, HIGH); digitalWrite(6, LOW); digitalWrite(7, LOW); digitalWrite(8, HIGH); digitalWrite(9, LOW);
Tương tự như các chân còn lại, tổ chức code như sau:
void Print_7SEG(byte number); void Clear(); void setup() { pinMode(3, OUTPUT); pinMode(4, OUTPUT); pinMode(5, OUTPUT); pinMode(6, OUTPUT); pinMode(7, OUTPUT); pinMode(8, OUTPUT); pinMode(9, OUTPUT); } void loop() { for (int i = 0; i<10; i++) { Clear(); Print_7SEG(i); delay(500); } }
void Clear() { digitalWrite(3, HIGH); digitalWrite(4, HIGH); digitalWrite(5, HIGH); digitalWrite(6, HIGH); digitalWrite(7, HIGH); digitalWrite(8, HIGH); digitalWrite(9, HIGH); }
void Print_7SEG(byte number) { switch (number) { case 0: digitalWrite(3, LOW); digitalWrite(4, LOW); digitalWrite(5, LOW); digitalWrite(6, LOW); digitalWrite(7, LOW); digitalWrite(8, LOW); digitalWrite(9, HIGH); break; case 1: digitalWrite(3, HIGH); digitalWrite(4, LOW); digitalWrite(5, LOW); digitalWrite(6, HIGH); digitalWrite(7, HIGH); digitalWrite(8, HIGH); digitalWrite(9, HIGH); break; case 2: digitalWrite(3, LOW); digitalWrite(4, LOW); digitalWrite(5, HIGH); digitalWrite(6, LOW); digitalWrite(7, LOW); digitalWrite(8, HIGH); digitalWrite(9, LOW); break; case 3: digitalWrite(3, LOW); digitalWrite(4, LOW); digitalWrite(5, LOW); digitalWrite(6, LOW); digitalWrite(7, HIGH); digitalWrite(8, HIGH); digitalWrite(9, LOW); break; case 4: digitalWrite(3, HIGH); digitalWrite(4, LOW); digitalWrite(5, LOW); digitalWrite(6, HIGH); digitalWrite(7, HIGH); digitalWrite(8, LOW); digitalWrite(9, LOW); break; case 5: digitalWrite(3, LOW); digitalWrite(4, HIGH); digitalWrite(5, LOW); digitalWrite(6, LOW); digitalWrite(7, HIGH); digitalWrite(8, LOW); digitalWrite(9, LOW); break; case 6: digitalWrite(3, LOW); digitalWrite(4, HIGH); digitalWrite(5, LOW); digitalWrite(6, LOW); digitalWrite(7, LOW); digitalWrite(8, LOW); digitalWrite(9, LOW); break; case 7: digitalWrite(3, LOW); digitalWrite(4, LOW); digitalWrite(5, LOW); digitalWrite(6, HIGH); digitalWrite(7, HIGH); digitalWrite(8, HIGH); digitalWrite(9, HIGH); break; case 8: digitalWrite(3, LOW); digitalWrite(4, LOW); digitalWrite(5, LOW); digitalWrite(6, LOW); digitalWrite(7, LOW); digitalWrite(8, LOW); digitalWrite(9, LOW); break; case 9: digitalWrite(3, LOW); digitalWrite(4, LOW); digitalWrite(5, LOW); digitalWrite(6, LOW); digitalWrite(7, HIGH); digitalWrite(8, LOW); digitalWrite(9, LOW); break; } }
Viết hàm Print_7SEG
để in giá trị ra LED 7 đoạn tùy vào giá trị truyền vào byte number
, hàm Clear()
để đưa tất cả các chân về trạng thái tắt. Trong loop()
ta cho lặp từ 0 → 9 và lần lượt đưa các giá trị đó vào hàm Print_7SEG
.
Nạp code vào Arduino và chạy thử
![LED 7 đoạn với Arduino.](https://resources.stdio.vn/content/article/5ef62bbf5ef9e26f89a5c4ce/resources/res-1597058089-1597058089297.png)