Giỏ hàng hiện tại chưa có sản phẩm nào!
Giỏ hàng hiện tại chưa có sản phẩm nào!
Chuyên đề arduino led đơn và ứng dụng trong arduino hướng dẫn cho các bạn những kiến thức lý thuyết và ứng dụng trong lập trình arduino. Để học tốt những nội dung trong bài viết này, các bạn có thể xem lại những kiến thức về vòng lặp và tín hiệu digital trong arduino. Bài viết này sẽ tập trung hướng dẫn cho các bạn cách kết nối phần cứng và cách viết code trên phần mềm Arduino IDE.
NỘI DUNG BÀI VIẾT
|
1. TÌM HIỂU VỀ LED ĐƠN
Led đơn là công nghệ sử dụng tiếp giáp P-N để phát sáng khi có dòng điện đi qua đó. Bản chất của bóng đèn led cũng giống như tiếp giáp P-N của diode. Tuy nhiên, đối với bóng đèn led thì khi có hiệu điện thế giữa 2 chân của bóng đèn led thì sẽ có phát sáng.
Bóng đèn led được sử dụng để cảnh báo trong các bo điện tử hoặc sử dụng để báo nguồn, làm bảng quảng cáo,… Trên thực tế ứng dụng của bóng led rất nhiều. Tuy vậy, các bạn cần phải có kiến thức cơ sở để đảm bảo đèn led hoạt động đúng như mong muốn. Ứng với mỗi bóng đèn led thường sẽ chịu được những dòng điện định mức khác nhau. Ví dụ như bóng đèn led đỏ thì dòng chịu đựng là 20mA, bóng đèn led vàng thì 26mA. Việc biết được dòng điện định mức qua các bóng đèn led, từ đó các bạn mới có thể chọn được điện trở hạn dòng cho phù hợp. Giả sử bạn có mạch điện cơ bản sau:
Trong đó: ILED = Vnguồn : R => R = Vnguồn : ILED = 5 : 0.02 = 250 ohm
Vậy thì bạn phải chọn điện trở cho mạch hoạt động là: 270 ohm. Như vậy, đối với nguồn điện là 5V, bóng đèn led đỏ (ILED = 20mA) thì sử dụng điện trở là 270 ohm.
Trên đây là những kiến thức cơ bản để bạn có thể hiểu được vì sao chúng ta phải có điện trở trong mạch sử dụng cho bóng đèn led. Và cũng phải biết được giá trị điện trở bắt buộc chọn là bao nhiêu để đảm bảo đèn led sáng đạt công suất cao nhất.
2. LỆNH XUẤT TÍN HIỆU RA LED ĐƠN
Lệnh xuất tín hiệu ra các chân digitalWrite cho arduino có 2 mức giá trị là HIGH (1) hoặc là mức LOW (0). Khi chân tín hiệu được cài đặt là OUTPUT bằng hàm pinMode(). Và dùng lệnh digitalWrite để xuất tín hiệu thì điện thế tại chân này sẽ là 5V (hoặc là 3,3 V trên mạch 3,3 V) khi xuất tín hiệu là HIGH (1), và 0V nếu được xuất tín hiệu là LOW (0).
Khi một chân được cài đặt là INPUT bằng lệnh pinMode(). Và bạn cũng có thể bật hoặc tắt chức năng điện trở kéo lên bên trong arduino bằng lệnh pinMode(). Cách cài đặt như thế nào và vì sao phải sử dụng chức năng này các bạn có thể xem thêm tại bài viết hướng dẫn lệnh cài đặt pinMode().
3. CHƯƠNG TRÌNH NHẤP NHÁY 1 ĐÈN LED
Các linh kiện cần thiết trong chương trình
Sơ đồ kết nối
Đoạn chương trình được viết như sau:
int denled = 10; void setup() { pinMode(denled, OUTPUT); } void loop() { digitalWrite(denled,HIGH); delay(1000); digitalWrite(denled,LOW); delay(1000); }
Giải thích chương trình
Khai báo kiểu số nguyên int
int denled = 10;
Chương trình con setup()
void setup() {}
pinMode
pinMode(denled, OUTPUT);
Vòng lặp loop()
void loop() {}
4. CHƯƠNG TRÌNH SÁNG DẦN TẮT DẦN 8 LED
Các linh kiện cần thiết
Sơ đồ kết nối phần cứng
Đoạn chương trình
void setup(){ for (int i=5; i<=12; i++) pinMode(i, OUTPUT); for (int i=5; i<=12; i++) digitalWrite(i, LOW); } void loop(){ //Sang dan 8 led for (int i=5; i<=12; i++) { digitalWrite(i, HIGH); delay(500); } //Tat dan 8 led for (int i=12; i>=5; i--) { digitalWrite(i, LOW); delay(500); } }
Giải thích chương trình
Chương trình con setup()
void setup() {}
Chương trình void loop()
Vòng lặp for là một cấu trúc điều khiển lặp đi lặp lại cho phép thực hiện cùng 1 chức năng cho nhiều chân tín hiệu cùng lúc. Trong ví dụ đang thực hiện lệnh xuất tín hiệu HIGH cho lần lượt các chân từ 5 đến 12 và kèm theo hàm delay để cho các led sáng lần lượt.
// Chuong trinh sang dan 8 led for (int i=5; i<=12; i++) { digitalWrite(i, HIGH); delay(500); }
Sau khi đã sáng dần hết 8 led, thì thực hiện chương trình tắt dần 8 led đơn theo chiều ngược lại. Do thực hiện ngược lại nên vòng lặp for bắt đầu với i=12 chạy ngược lại 5. Và các tín hiệu xuất dữ liệu ra các chân là mức LOW.
//Tat dan 8 led for (int i=12; i>=5; i--) { digitalWrite(i, LOW); delay(500); }
5. CHƯƠNG TRÌNH ĐIỀU KHIỂN ĐÈN GIAO THÔNG
Tiếp tục trong chuyên đề led đơn trong arduino. Chúng ta nghiên cứu tiếp cách sử dụng Arduino Uno R3 và Led đơn để làm một ứng dụng đèn giao thông gồm đèn dành cho phương tiện xe và cho người đi bộ. Chương trình khởi động khi nút bấm được nhấn, sử dụng hàm delay để làm khoảng thời gian chờ. Để dễ theo dõi nội dung bài viết này, các bạn có thể xem lại bài viết về nút nhấn trong chuỗi bài học cơ bản của arduino.
Các linh kiện cần thiết
Sơ đồ đấu nối mạch
Đoạn chương trình được viết như sau
int carRed = 12; int carYellow = 11; int carGreen = 10; int button = 9; int pedRed = 8; int pedGreen = 7; int crossTime =5000; unsigned long changeTime; void setup() { pinMode(carRed, OUTPUT); pinMode(carYellow, OUTPUT); pinMode(carGreen, OUTPUT); pinMode(pedRed, OUTPUT); pinMode(pedGreen, OUTPUT); pinMode(button, INPUT); digitalWrite(carGreen, HIGH); digitalWrite(pedRed, HIGH); } void loop() { int state = digitalRead(button); if(state == HIGH && (millis() - changeTime)> 5000){ changeLights(); } } void changeLights() { digitalWrite(carGreen, LOW); digitalWrite(carYellow, HIGH); delay(2000); digitalWrite(carYellow, LOW); digitalWrite(carRed, HIGH); delay(1000); digitalWrite(pedRed, LOW); digitalWrite(pedGreen, HIGH); delay(crossTime); for (int x=0; x<10; x++) { digitalWrite(pedGreen, HIGH); delay(250); digitalWrite(pedGreen, LOW); delay(250); } digitalWrite(pedRed, HIGH); delay(500); digitalWrite(carRed, LOW); digitalWrite(carYellow, HIGH); delay(1000); digitalWrite(carYellow, LOW); digitalWrite(carGreen, HIGH); changeTime = millis(); }
Giải thích chương trình
Các dòng lệnh khai báo
Đoạn chương trình setup()
void setup() { pinMode(carRed, OUTPUT); pinMode(carYellow, OUTPUT); pinMode(carGreen, OUTPUT); pinMode(pedRed, OUTPUT); pinMode(pedGreen, OUTPUT); pinMode(button, INPUT); digitalWrite(carGreen, HIGH); digitalWrite(pedRed, HIGH); }
Trong đoạn chương trình setup chủ yếu là dùng lệnh pinMode để định nghĩa chức năng xuất tín hiệu hay đọc tín hiệu. Còn 2 lệnh cuối dgitalWrite là khởi tạo trạng thái ban đầu cho đèn tín hiệu cho xe và cho người đi bộ. Trong đó, khi cấp điện thì đèn tín hiệu cho xe là đèn xanh, đèn tín hiệu cho người đi bộ là đèn đỏ.
Đoạn chương trình loop()
void loop() { int state = digitalRead(button); if(state == HIGH && (millis() - changeTime)> 5000){ changeLights(); } }
Biến state là biến lưu trạng thái của nút nhấn, mục đích của biến này để chương trình biết được có nhấn nút hay không. Do phần cứng nút nhấn thiết kế dạng tích cực mức cao. Do đó, nếu biến state là HIGH tương ứng với việc nút đang nhấn. Tuy nhiên để đảm bảo là nút nhấn và tránh trường hợp dội phím (nút bị nhấn nhiều lần), chúng ta thực hiện thêm kiểm tra nút phải được nhấn trong thời gian 5 giây. Biểu thức (millis() – changeTime)> 5000) chính là kiểm tra nút nhấn trong 5 giây.
Như vậy, nếu nút nhấn đang được nhấn và kéo dài trong thời gian 5 giây thì nghĩa là xác nhận đã nhấn nút. Khi xác nhận xong nhấn nút thì chương trình thực hiện các lệnh trong chương trình con changeLights().
Đoạn chương trình con changeLights()
void changeLights() { digitalWrite(carGreen, LOW); digitalWrite(carYellow, HIGH); delay(2000); digitalWrite(carYellow, LOW); digitalWrite(carRed, HIGH); delay(1000); digitalWrite(pedRed, LOW); digitalWrite(pedGreen, HIGH); delay(crossTime); for (int x=0; x<10; x++) { digitalWrite(pedGreen, HIGH); delay(250); digitalWrite(pedGreen, LOW); delay(250); } digitalWrite(pedRed, HIGH); delay(500); digitalWrite(carRed, LOW); digitalWrite(carYellow, HIGH); delay(1000); digitalWrite(carYellow, LOW); digitalWrite(carGreen, HIGH); changeTime = millis(); }
Đoạn chương trình đơn giản là chuyển từ đèn xanh – > vàng -> đỏ đối với đèn tín hiệu cho xe. Và trong thời gian đèn tín hiệu cho xe màu đỏ thì bật đèn xanh cho người đi bộ. Sau đó ngược lại, khi đèn tín hiệu xe bật xanh thì chương trình chuyển đèn đỏ không cho người đi bộ sang đường.
TỔNG KẾT
Đối với việc lập trình cho arduino thì thường xuyên gặp vấn đề điều khiển led đơn. Đây là một trong những chương trình đơn giản và cơ bản nhất cho người học lập trình. Mặc dù là đơn giản và cơ bản, tuy nhiên người học cần phải tìm hiểu và nắm thật kỹ kiến thức. Từ những kiến thức nền này các bạn mới có thể phát triển lên những ứng dụng nâng cao hơn.
Để lại một bình luận