Lập Trình Arduino Điều Khiển LED 7 Đoạn

Bởi nguyenthanhphi (13/09/2017) 0 Bình luận

Trong bài viết này, tôi sẽ hướng dẫn các bạn cách điều khiển LED 7 đoạn với mạch điều khiển Arduino. 

Trước khi vào lập trình, chúng ta hãy cùng đi vào tìm hiểu cấu trúc của LED 7 đoạn.

lập trình arduino điều khiển led 7 đoạn

Thực ra cấu trúc của LED 7 đoạn gồm 8 LED đơn, nhìn lên hình trên chắc các bạn cũng thấy gồm có 7 đoạn và một dấu chấm nhỏ, mỗi đoạn và dấu chấm nhỏ đó là một LED đơn. 

Việc sử dụng LED 7 đoạn chúng ta có thể sử dụng để hiển thị các số, các chữ cái anphabet và nhiều kiểu ký tự khác nhau. Như trên hình các bạn đã thấy, một LED 7 đoạn đơn gồm 10 chân đó là các chân: a, b, c, d, e, f, g, 2 chân chung và chân dấu chấm tròn. 

LED 7 đoạn gồm 2 loại đó là dương chung và âm chung. Trong bài học này chúng ta sẽ viết chương trình và tải vào Arduino để hiển thị các số từ 0-9.

Thực ra cấu trúc của LED 7 đoạn gồm 8 LED đơn, nhìn lên hình trên chắc các bạn cũng thấy gồm có 7 đoạn và một dấu chấm nhỏ, mỗi đoạn và dấu chấm nhỏ đó là một LED đơn. Với việc sử dụng LED 7 đoạn chúng ta có thể sử dụng để hiển thị các số, các chữ cái anphabet và nhiều kiểu ký tự khác nhau.

Như trên hình các bạn đã thấy, một LED 7 đoạn đơn gồm 10 chân đó là các chân: a, b, c, d, e, f, g, 2 chân chung và chân dấu chấm tròn. LED 7 đoạn gồm 2 loại đó là dương chung và âm chung.

Trong bài học này chúng ta sẽ viết chương trình và tải vào Arduino để hiển thị các số từ 0-9.

lâp trình arduino điều khiển led 7 đoạn

Để LED hiển thị chúng ta phải làm cho 8 LED đơn như ở trên hiển thị, ví dụ ở đây 8 LED ở đây là các led mang kí tự a, b, c, d, e, f, g và một dấu chấm ở chân cuối.
Bây giờ chúng ta thử suy nghĩ nếu chúng ta muốn hiển thị số 0 chúng ta phải làm thế nào?
Nhìn vào hình LED hiển thị ở đầu bài chúng ta thấy:
Để hiển thị số 0 thì chúng ta phải làm cho các LED đơn a, b, c, d, e, f phải sáng lên, dấu chấm và g phải tắt đi. Như vậy để tạo số 0 chúng ta phải thể hiện mã code hệ nhị phân (binary) là B111111100.
Tương tự đối với số 1 thì có những cái LED nào sáng?
Các bạn có thể viết được mã làm xuất hiện số 1 được không?
Đó là: B01100000.
Tương tự đối với các số 2. 3, 4, 5, 6, 7, 9.
Để dễ hiểu hơn tôi xin đưa ra một bảng sau để các bạn dò. Lưu ý: sáng là 1, tắt là 0.

lập trình arduino điều khiển led 7 đoạn

Bây giờ chúng ta đã biết những con số hiển thị như thế nào khi điều khiển LED. Công việc tiếp theo chúng ta cần làm là kết nối LED 7 đoạn với Arduino.

lập trình arduino điều khiển led 7 đoạn

Hình trên hiển thị các chân của LED 7 đoạn loại Cathode chung ( âm chung ).

Sơ đồ nối dây:

lập trình arduino điều khiển led 7 đoạn

Cách kết nối các chân cũng rất đơn giản các bạn nhìn trên hình có thể tự làm được.
Bảng dưới đây thể hiện các chân kết nối:

CHÂN LED 7 ĐOẠN CHÂN ARDUNIO
a 2
b 3
c 4
d 5
e 6
f 7
g 8
DP 9

Code Lập trình arduino cho led 7 đoạn

// Khai báo chânconst int G = 8; // G= Arduino chân 8

const int F = 7; // F= Arduino chân 7
const int A = 2; // A = Arduino chân 2
const int B = 3; // B = Arduino chân 3
const int E = 6; // E = Arduino chân 6
const int D = 5; // D = Arduino chân 5
const int C = 4; // C = Arduino chân 4
const int dp = 9; // dp = Arduino chân 9
const int second = 1000; // thiết lập với mili giây, 1000 milliseconds = 1 second
const int digit = 10; // Số ký tự hiển thị
10 digits (0 - 9)
const int segment = 7; // Số thanh hiển thị trong LED (7)
// Định nghĩa những thanh( led đơn) sáng
byte digseg[digit][segment] = {
{ 1,1,1,1,1,1,0 }, // = 0
{ 0,1,1,0,0,0,0 }, // = 1
{ 1,1,0,1,1,0,1 }, // = 2
{ 1,1,1,1,0,0,1 }, // = 3
{ 0,1,1,0,0,1,1 }, // = 4
{ 1,0,1,1,0,1,1 }, // = 5
{ 1,0,1,1,1,1,1 }, // = 6
{ 1,1,1,0,0,0,0 }, // = 7
{ 1,1,1,1,1,1,1 }, // = 8
{ 1,1,1,1,0,1,1 } // = 9
};
void setup() {
// Định nghĩa chân xuất tín hiệu OUTPUT
pinMode(A, OUTPUT);
pinMode(B, OUTPUT);
pinMode(C, OUTPUT);
pinMode(D, OUTPUT);
pinMode(E, OUTPUT);
pinMode(F, OUTPUT);
pinMode(G, OUTPUT);
pinMode(dp, OUTPUT);
// Tắt dấu chấm
digitalWrite(dp, LOW);
}
// Loop through all 7 LED segments starting with pin 2
void writeDigit(byte digit)
{
byte pin = 2;
byte seg;
for (seg = 0; seg < 7; seg++)
{
digitalWrite(pin, digseg[digit][seg]);
pin++;
}
}
void loop()
{
byte digit;
for (digit=0; digit < 10; digit++)
{
writeDigit(digit);
delay(second);
}
delay(4*second);
}

Nếu các bạn muốn học học lập trình ardunio một cách dễ hiểu nhất thì BỘ TỰ HỌC ARDUINO CƠ BẢN sẽ thõa mãn nhu cầu của các bạn.

Một số bài viết bạn có thể quan tâm: Hướng Dẫn Sử Dụng Module Wifi ESP8266 | Lập trình ESP8266V1 bằng Arduino IDE | Giao tiếp I2C giữa nhiều arduino với nhau | TỰ LÀM ĐÈN NHẤP NHÁY GIỐNG ĐÈN CẢNH SÁT | Điều khiển 8 đèn LED sáng theo yêu cầu | Hướng dẫn cài thư viện vào arduino IDE | TỰ HỌC ARDUINO BẰNG KIT ARDUINO ĐƠN GIẢN DỄ HIỂU NHẤT

Đóng góp ý kiến