Lập trình Arduino

Từ ChipFC Wiki
Phiên bản vào lúc 14:12, ngày 20 tháng 7 năm 2015 của Thophi (Thảo luận | đóng góp) (/)
(khác) ← Phiên bản cũ | xem phiên bản hiện hành (khác) | Phiên bản mới → (khác)
Bước tới: chuyển hướng, tìm kiếm


Bài này là một tham khảo cho người viết chương trình trên Arduino. Bạn có thể tham khảo thêm Bắt đầu với Arduino, Tham khảo lập trình Arduino

Hình thu nhỏ có lỗi: Không có tập tin
Chương trình ví dụ Blink viết cho Arduino

Cấu trúc cơ bản

Cấu trúc cơ bản của một chương trình Arduino gồm hai hàm chính setup()loop(). Hai hàm này là bắt buộc đối với một chương trình Arduino.

setup()

Hàm setup() được gọi khi chương trình bắt đầu. Thường dùng để khởi tạo giá trị ban đầu cho biến, cài đặt chế độ hoạt động của các chân, khởi động việc sử dụng thư viện... Hàm setup() sẽ chỉ được gọi duy nhất một lần, ngay sau khi bật nguồn hoặc reset bo Arduino.

loop()

Sau khi thực hiện xong hàm setup(), hàm loop() sẽ được gọi để thực hiện và sẽ được gọi lặp đi lặp lại liên tục cho đến khi nào tắt hệ thống. Thường thì trong hàm loop() sẽ là chương trình chính, các công việc mà bạn muốn hệ thống Arduino của mình thực hiện.

Cách viết

Một chương trình Arduino với hai hàm setup() và loop() sẽ được viết như sau:

void setup() {                
  // code khởi tạo sẽ được viết ở đây
}

void loop() {
  // code phần công việc mà bạn muốn board Arduino của mình thực hiện sẽ viết ở đây
}

Ví dụ

Chương trình Blink

Chương trình Blink LED (nháy LED) là đơn giản và nổi tiếng trên Arduino, vì hầu hết người lập trình Arduino đều trải qua nó. Blink LED thực hiện việc chớp tắt một LED đơn có sẵn trên bo và được kết nối với chân số 13 của Arduino.

int led = 13;                 // số thứ tự của chân Arduino kết nối với LED

// hàm setup sẽ được gọi chạy một lần khi reset
void setup() {                
  pinMode(led, OUTPUT);      // cài đặt chân digital là output (ngõ ra)
}

// hàm loop sẽ được gọi chạy lặp đi lặp lại
void loop() {
  digitalWrite(led, HIGH);   // bật LED (xuất ngõ ra ở mức cao - HIGH)
  delay(1000);               // chờ 1000ms = 1 giây
  digitalWrite(led, LOW);    // tắt LED (xuất ngõ ra ở mức thấp - LOW)
  delay(1000);               // chờ 1000ms = 1 giây
}

Chương trình giao tiếp với máy tính

Arduino có một điểm vô cùng lợi hại là đã kết hợp cổng nạp và giao tiếp trong một, nghĩa là sau khi nạp xong ta có thể ngay lập tức giao tiếp với bo để lấy thông tin

Để giao tiếp với máy tính thì đơn giản bạn sử dụng class Serial có sẵn của Arduino:

  • Khởi tạo trong setup:
// Hàm setup chỉ chạy một lần khi bắt đầu khởi động lại
void setup() {                
  Serial.begin(9600);            //Initialize Serial port with baud is 9600
}
  • Sau đó có thể đọc và truyền dữ liệu từ cổng Serial một cách tuần tự:
void loop() {
  if(Serial.available()){        //Check if have data in Serial Buffer
    char inMess = Serial.read(); //Read data from Serial port
    Serial.println(inMess);      //  Print to Serial port when you want send data to computer
  }
  delay(100);                    // wait for a little
}

Như vậy nếu bạn khéo léo kết hợp thì có thể dùng bàn phím truyền lệnh xuống như kiểu nút nhấn làm cho Arduino có thể lên tới hàng trăm lệnh điều khiển

Chương trình đọc giá trị Analog

Chương trình đọc tín hiệu Analog được dùng cho các chân từ A0->A5 (và A6, A7 chỉ có trên bo của ChipFC), giá trị Analog được chuyển về bộ chuyển đổi ra tín hiệu 10bits, nghĩa là bộ ADC của bạn có giá trị từ 0->1023 cho khoảng điện áp đầu vào từ 0->VCC (thường là 5V).


int sensorPin = A0;                 // số thứ tự của chân Arduino kết nối với sensor

// hàm setup sẽ được gọi chạy một lần khi reset
void setup() {                
  //Không cần khởi tạo gì trong setup();
  Serial.begin(9600);  //Khởi tạo cổng giao tiếp nối tiếp để in giá trị lên màn hình
}

// hàm loop sẽ được gọi chạy lặp đi lặp lại
void loop() {
  int readValue = analogRead(sensorPin);//Đọc giá trị Analog từ sensor
  Serial.println(readValue);  //In lên máy tính
  delay(200);  //chờ một chút
}

Tham khảo