Bài viết được dịch từ trang web Makeuseof

Bài viết này sẽ giải thích cấu trúc của một chương trình Arduino, và giới thiệu thêm về các linh kiện điện tử trên bo mạch. Nó là một phần trong series bài viết của tác giả James Bruce:

Phần cứng

Học lập trình Arduino thực hành cơ bản

Chúng ta hãy cùng xem xét chi tiết các thành phần trên một chiếc Arduino Uno:

  • Ở dãy trên cùng của bảng mạch, có 14 chân tín hiệu kỹ thuật số Input/Output (từ 0 đến 13). Đây là các chân linh hoạt nhất trên Arduino và có thể hoạt động như một trong hai chức năng đầu vào hoặc đầu ra, và chúng sẽ là mối quan tâm chính trong dự án của bạn. Chân tín hiệu kỹ thuật số có nghĩa là các tín hiệu từ các chân này có thể ghi hoặc đọc như là bật hoặc tắt.
  • 6 trong số những chân kỹ thuật số trên (3, 5, 6, 9, 10,11), được đánh dấu bằng dấu ngã “~“ là những chân điều chế độ rộng xung (Pulse Width Modulation), chúng sẽ cung cấp các tín hiệu đầu ra với các mức khác nhau. Ví dụ như làm mờ một đèn LED hoặc điều khiển một động cơ ở tốc độ khác nhau.
  • Chân 13 đặc biệt ở chỗ là nó có gắn trực tiếp một đèn LED (built-in LED). Bởi vậy rất tiện lợi trong mục đích kiểm thử. Bạn có thể sử dụng đèn LED on-board đó bằng cách chỉ cần xuất ra chân 13 - hoặc nó có thể được sử dụng như một chuẩn chân vào/ra (I/O).
  • Tại góc dưới bên phải là 6 chân đầu vào tương tự (analog input). Chúng sẽ đọc giá trị của các cảm biến tương tự, ví dụ như một cảm biến ánh sáng hoặc biến trở.
  • Góc dưới bên trái kế bên các chân đầu vào analog là các chân nguồn (power). Các chân mà bạn nên quan tâm nhất là GND, 3.3v và 5v.
  • Chân còn lại là chân reset. Nó sẽ khởi động lại bất cứ chương trình nào có trong bộ nhớ của Arduino.
  • Arduino có giới hạn về dung lượng bộ nhớ, vì vậy nếu chương trình của bạn trở nên quá lớn thì trình biên dịch sẽ đưa ra một cảnh báo lỗi.

Khóa học "Arduino qua các dự án thực tế" tại TechMaster sẽ hướng dẫn bạn làm các dự án thú vị có tính chất ứng dụng và khả năng tái sử dụng cao. Phù hợp với nhiều đối tượng khác nhau: sinh viên bất kỳ ngành nào, lập trình viên, nông dân...

Cấu trúc của một chương trình Arduino

Mọi chương trình Arduino được tạo thành bởi ít nhất hai function. 

Đầu tiên là function setup. Nó sẽ chạy vào lúc khởi tạo - chỉ một lần duy nhất - và được sử dụng để báo cho Arduino biết những cái gì đã được kết nối và ở đâu, cũng như là khởi tạo các biến bạn cần trong chương trình.

Function thứ hai là loop. Đây là cốt lõi của mọi chương trình Arduino. Khi Arduino đang chạy, sau khi function setup đã chạy xong, function loop sẽ chạy qua tất cả code, sau đó thực hiện lại toàn bộ - cho đến khi hoặc là bị mất nguồn hoặc công tắc reset được nhấn. Chiều dài thời gian cần để hoàn thành một loop phụ thuộc vào phần code được chứa trong nó.

Dưới đây là một sơ đồ minh họa các bước trong một chương trình:

Học lập trình Arduino cơ bản đến nâng cao

Xem ví dụ: Chương trình Blink (chương trình lập trình làm nhấp nháy đèn LED)

Chúng ta hãy cùng xem code chương trình Blink và xem các function setup và loop được viết như thế nào nhé!

Dưới đây là nội dung function setup:

void setup() {
// initialize the digital pin as an output.
// Pin 13 has an LED connected on most Arduino boards:
pinMode(13, OUTPUT);
}

Các dòng bắt đầu với // chỉ đơn giản là dòng comment giải thích cho người đọc, và chúng không được tải lên Arduino. Vì vậy trong thực tế, chỉ có một dòng code trong function setup này. Đó là dòng lệnh "Thiết lập chân 13 thành chế độ đầu ra (output)". Chân 13 chính là chân có một đèn LED built-in.

Sau đó, ta xem đến function loop():

void loop() {
digitalWrite(13, HIGH); // set the LED on
delay(1000); // wait for a second
digitalWrite(13, LOW); // set the LED off
delay(1000); // wait for a second
}

Phần comment ở cuối của mỗi dòng code đã giải thích khá rõ chức năng của nó. HIGH và LOW đồng nghĩa với trạng thái ON và OFF của một tín hiệu số đầu ra - trong trường hợp này là đèn LED. Bạn cũng có thể viết ON hoặc OFF trong code, đồng nghĩa như là 0 và 1. Delay để báo với Arduino chờ một lát, trong trường hợp này 1000 mili giây (hoặc 1 giây).

Cuối cùng, lưu ý về ngôn ngữ lập trình được sử dụng ở đây. Chú ý rằng cả hai function setup và loop đều có từ khóa void đặt trước chúng. Đây là một từ đặc biệt để chỉ “nothing“, bởi vì function này không trả về gì cả khi được gọi - chỉ đơn giản là chạy phần code chứa bên trong nó. Phần code của các function sẽ được bao bọc bởi dấu ngoặc nhọn { }, và mỗi dòng code phải kết thúc bằng ”;“  - dấu chấm phẩy.

Bạn có thể sửa đổi chương trình bằng cách thay đổi giá trị thời gian trễ thành một giá trị lớn hơn hoặc nhỏ hơn. Nếu bạn giảm thời gian trễ nhỏ đến một mức nào đó thì sẽ không thể nhìn thấy đèn LED nhấp nháy nữa. Hãy thử thêm các câu lệnh digitalWrite và delay vào trong hàm loop để tạo ra một kiểu nhấp nháy phức tạp hơn kiểu như tín hiệu cấp cứu SOS. Nếu bạn có một loa buzzer, hãy thử kết nối nó vào chân 13 và GND (chú ý: dây màu đỏ nối đến chân 13, dây màu đen nối đất).