Phạm vi biến

Giới thiệu

Ngôn ngữ Arduino được xây dựng trên ngôn ngữ lập trình C. Các biến của Arduino, cũng như C, có một phạm trù được gọi là phạm vi biến. Điều này trái ngược với ngôn ngữ BASIC, ở ngôn ngữ BASIC này, mọi biến đều là biến toàn cục.

Một biến toàn cục có nghĩa là, tất cả mọi nơi trong chương trình có thể đọc được và thay đổi dữ liệu của nó mà không cần sử dụng biện pháp hỗ trợ nào. Còn biến cục bộ thì chỉ cỏ có hàm khai báo nó (hoặc các hàm con của hàm đó) có thể thấy và thay đổi được giá trị. Ví dụ, mọi biến nằm ngoài các hàm (như setup() hay loop()) là biến toàn cục, còn nằm bên trong các hàm là biến cục bộ của hàm đó.

Khi chương trình của bạn dần trở nên lớn hơn (về kích thước file lập trình) hoặc phức tạp hơn thì bạn nên dùng các biến cục để trong các hàm để dễ dàng quản lý (thay cho việc khai báo hết toàn bộ là biến toàn cục). Biến cục bộ rất có ích trong việc này vì chỉ có mỗi hàm khai báo nó (và các hàm con) mới sử dụng được nó. Điều này sẽ ngăn chặn các lỗi về logic sẽ xảy ra nếu một hàm thay đổi giá trị của một hàm khác. Ngoài ra, sau khi đoạn chương trình con kết thúc, các biến cục bộ sẽ được tự động giải phóng khỏi bộ nhớ, chương trình chính sẽ có thêm vùng nhớ cho việc xử lý.

Biến cục độ khá hữu ích cho việc khai báo biến của vòng lặp vì chỉ có vòng lặp mới dùng được nó.

Ví dụ

int gPWMval;  // mọi hàm đều có thể thao tác với biến này

void setup()
{
  // ...
}

void loop()
{
  int i;    //  biến "i" chỉ có thể được thao tác bên trong hàm loop()
  float f;  // biến "f" chỉ có thể được thao tác bên trong hàm loop()
  // ...

  for (int j = 0; j <100; j++){
     //biến "j" chỉ có thể được thao tác bên trong vòng lặp này
  }

}

 

lên
3 thành viên đã đánh giá bài viết này hữu ích.
Các bài viết cùng tác giả

Ứng dụng thư viện bất đồng bộ để điều khiển bất đồng bộ nhiều (hàng chục) servo - Hư cấu chăng?

Cũng đã khá lâu kể từ lúc mình xuất bản thư viện xử lý bất đồng bộ với Arduino. Tuy nhiên, mình vẫn chưa có nhiều ví dụ để thực sự kêu gọi các bạn sử dụng thư viện này trong dự án, hôm nay, sau khi được trao đổi với nhiều bạn, mình thấy vấn đề điều khiển nhiều servo có thể ứng dụng thư viện của mình vào một cách dễ dàng. Nên mình sẽ viết một bài ví dụ để hướng dẫn các bạn điều khiển rất nhiều Servo với thư viện của mình.

lên
21 thành viên đã đánh giá bài viết này hữu ích.

Tạo một quy trình công nghiệp với các bước bằng Arduino - Phần 3: Giới hạn số lần chạy và kết hợp thư viện bất đồng bộ

Ở trong loạt bài này và một bài viết khác, mình đã đề cập đến vấn đề quy trình Công nghiệp (phần 1phần 2) và vấn đề xử lý bất đồng bộ trên Arduino. Hôm nay, mình muốn phát triển loạt bài này với mục đích, bạn có thể xây dựng một máy công nghiệp với các quy trình tuần tự nhưng có thể can thiệp để dừng ngay được. Ngoài ra, mình còn cập nhập thêm khả năng quy ước trước số lượt chạy của quy trình và một số API khác giúp cho các bạn có thể kết hợp lại 2 thư viện này! Để đọc hiểu, và tiếp cận nhanh bài này, các bạn cần đọc 3 bài viết mà mình có liên kết trong đoạn giới thiệu này.

lên
12 thành viên đã đánh giá bài viết này hữu ích.