CKD
13-03-2015, 03:28:41 PM
Arduino - Mỗi ngày một ví dụ, từ dễ tới khó - VD001 - LED Blink
Để bắt đầu làm quen với Arduino chúng ta sẽ đi từ những ví dụ dễ rồi khó dần. Thông quá đó chúng ta sẽ nắm được các cú pháp, các hàm..
Việc lập trình trên Arduino khá đơn giản, chỉ là việc kết nối các hàm lại với nhau. Người sử dụng không cần quan tâm nhiều đến các phần cứng như vi xử lý (VXL), cấu trúc VXL, tốc độ dao động, các cổng kết nối (PORT), RAM, ROM, EPROM v.v... Điều đó đẫn đến việc tiếp cận & xử dụng một cách dễ dàng.. dù trước đó người dùng không biết gì về điện thì theo các hướng dẫn sẽ dần có thể thực hiện được một cách nhanh chóng.
Đương nhiên.. việc xây dựng nhiều hàm & thư viện tương thích với rất nhiều VXL có nền tảng khác nhau.. nên Arduino có nhiều ưu điểm, song song đó cũng có nhiều nhược điểm. CKD tạm kết thế này:
Ưu
- Cái đáng nói nhất là đơn giản hóa quá trình xử dụng cũng như lập trình. Cắm là chạy :D
- Cộng đồng dùng arduino rất đông, có rất nhiều ví dụ được chia sẽ trên internet, phần lớn đều có dưới dạng mã nguồn mở.
- Thư viện ứng dụng cũng rất nhiều.. có thể ứng dụng được trong hầu hết các yêu cầu dân dụng trong cuộc sông, cũng như các vấn đề điều khiển tự động trong các máy đơn giản. Có thể điều khiển robot, cnc, smart home v.v...
Nhược
- Cái nhược duy nhất theo CKD đánh giá là từ việc tương thích rất mạnh trên phần cứng dẫn đến tốc độ làm việc chậm. Việc này có thể khắc phục được nếu người dùng hiểu rỏ về C/C+/C# v.v... cũng như am hiểu về cấu trúc VXL.
Để bắt đầu làm quen chúng ta sẽ xem qua Ví dụ chớp LED (LED Blink) có sẵn trong trình IDE Arduino.
Nhiệm vụ:
Viết một đoạn Code trong Arduino để thực hiện việc tắt/ mở đèn LED (Light Emitting Diode) một cách có chu kỳ (chớp)
Đấu nối
http://arduino.cc/en/uploads/Tutorial/ExampleCircuit_bb.png
http://arduino.cc/en/uploads/Tutorial/ExampleCircuit_sch.png
Mã (code/source) chương trình
// cac xac lap cho chuong trinh
void setup()
{
// Chon chan 13 làm Output.
pinMode(13, OUTPUT);
}
// chuong trinh chinh thuc hien viec chop LED
void loop()
{
// mo LED, chan 13 se co muc cao (HIGHT)
digitalWrite(13, HIGH);
// cho 1000ms ~ 1s
delay(1000);
// tat LED, chan 13 se co muc thap (LOW)
digitalWrite(13, LOW);
// cho 1000ms ~ 1s
delay(1000);
}
Trong phần này chúng ta sẽ phần tích dần cấu trúc chương trình.
Phần thân chương trình được chia làm 02 phần
Phần 01, khởi động chương trình
void setup()
{
[nội dung]
}
Trong phần này, chúng ta có thể khai báo các chân làm nhiệm vụ nhận hoặc phát tín hiệu (input/output), hoặc các chức năng đọc tín hiệu tương tự (analog - ADC), tính năng PWM v.v....
Trong phần này cũng có thể khai báo các biến để lưu dữ liệu trong quá trình chương trình làm việc.
Phần 02, thân chương trình
void loop()
{
[nội dung]
}
Phần này sẽ mô tả cũng như cách thức mà chương trình làm việc. Nó sẽ thực hiện tuần tự các dòng lệnh [nội dung] xong sẽ tự động chạy lại các dòng lệnh [nội dung] mỗi khi kết thức.
Ghi chú:
- Phần tô đậm, màu đỏ là bắt buộc.
- Phần trong ngoặt vuông [..] là tùy chọn, có hoặc không cũng được tùy theo mục đích xử dụng.
- Ngoài ra trong ví dụ này chúng ta không cần đấu nối thêm LED & điện trở từ bên ngoài vẫn có thể thấy được mạch hoạt động thế nào. Trên board đã có sẵn LED ký hiệu là L, đã được kết nối vào chân 13 rồi.
Xem thêm: http://arduino.cc/en/tutorial/blink
Để bắt đầu làm quen với Arduino chúng ta sẽ đi từ những ví dụ dễ rồi khó dần. Thông quá đó chúng ta sẽ nắm được các cú pháp, các hàm..
Việc lập trình trên Arduino khá đơn giản, chỉ là việc kết nối các hàm lại với nhau. Người sử dụng không cần quan tâm nhiều đến các phần cứng như vi xử lý (VXL), cấu trúc VXL, tốc độ dao động, các cổng kết nối (PORT), RAM, ROM, EPROM v.v... Điều đó đẫn đến việc tiếp cận & xử dụng một cách dễ dàng.. dù trước đó người dùng không biết gì về điện thì theo các hướng dẫn sẽ dần có thể thực hiện được một cách nhanh chóng.
Đương nhiên.. việc xây dựng nhiều hàm & thư viện tương thích với rất nhiều VXL có nền tảng khác nhau.. nên Arduino có nhiều ưu điểm, song song đó cũng có nhiều nhược điểm. CKD tạm kết thế này:
Ưu
- Cái đáng nói nhất là đơn giản hóa quá trình xử dụng cũng như lập trình. Cắm là chạy :D
- Cộng đồng dùng arduino rất đông, có rất nhiều ví dụ được chia sẽ trên internet, phần lớn đều có dưới dạng mã nguồn mở.
- Thư viện ứng dụng cũng rất nhiều.. có thể ứng dụng được trong hầu hết các yêu cầu dân dụng trong cuộc sông, cũng như các vấn đề điều khiển tự động trong các máy đơn giản. Có thể điều khiển robot, cnc, smart home v.v...
Nhược
- Cái nhược duy nhất theo CKD đánh giá là từ việc tương thích rất mạnh trên phần cứng dẫn đến tốc độ làm việc chậm. Việc này có thể khắc phục được nếu người dùng hiểu rỏ về C/C+/C# v.v... cũng như am hiểu về cấu trúc VXL.
Để bắt đầu làm quen chúng ta sẽ xem qua Ví dụ chớp LED (LED Blink) có sẵn trong trình IDE Arduino.
Nhiệm vụ:
Viết một đoạn Code trong Arduino để thực hiện việc tắt/ mở đèn LED (Light Emitting Diode) một cách có chu kỳ (chớp)
Đấu nối
http://arduino.cc/en/uploads/Tutorial/ExampleCircuit_bb.png
http://arduino.cc/en/uploads/Tutorial/ExampleCircuit_sch.png
Mã (code/source) chương trình
// cac xac lap cho chuong trinh
void setup()
{
// Chon chan 13 làm Output.
pinMode(13, OUTPUT);
}
// chuong trinh chinh thuc hien viec chop LED
void loop()
{
// mo LED, chan 13 se co muc cao (HIGHT)
digitalWrite(13, HIGH);
// cho 1000ms ~ 1s
delay(1000);
// tat LED, chan 13 se co muc thap (LOW)
digitalWrite(13, LOW);
// cho 1000ms ~ 1s
delay(1000);
}
Trong phần này chúng ta sẽ phần tích dần cấu trúc chương trình.
Phần thân chương trình được chia làm 02 phần
Phần 01, khởi động chương trình
void setup()
{
[nội dung]
}
Trong phần này, chúng ta có thể khai báo các chân làm nhiệm vụ nhận hoặc phát tín hiệu (input/output), hoặc các chức năng đọc tín hiệu tương tự (analog - ADC), tính năng PWM v.v....
Trong phần này cũng có thể khai báo các biến để lưu dữ liệu trong quá trình chương trình làm việc.
Phần 02, thân chương trình
void loop()
{
[nội dung]
}
Phần này sẽ mô tả cũng như cách thức mà chương trình làm việc. Nó sẽ thực hiện tuần tự các dòng lệnh [nội dung] xong sẽ tự động chạy lại các dòng lệnh [nội dung] mỗi khi kết thức.
Ghi chú:
- Phần tô đậm, màu đỏ là bắt buộc.
- Phần trong ngoặt vuông [..] là tùy chọn, có hoặc không cũng được tùy theo mục đích xử dụng.
- Ngoài ra trong ví dụ này chúng ta không cần đấu nối thêm LED & điện trở từ bên ngoài vẫn có thể thấy được mạch hoạt động thế nào. Trên board đã có sẵn LED ký hiệu là L, đã được kết nối vào chân 13 rồi.
Xem thêm: http://arduino.cc/en/tutorial/blink