[Arduino] Tự học lập trình Arduino 3 - Ngôn ngữ lập trình trên Arduino - BeeLab

Saturday, October 22, 2016

[Arduino] Tự học lập trình Arduino 3 - Ngôn ngữ lập trình trên Arduino

Ngôn ngữ lập trình trên Arduino về cơ bản có thể được chia làm 3 phần:

- Giá trị: biến số (variable) và hằng số (constant) (hằng, biến số, kiểu dữ liệu...)
- Cấu trúc (structure) cấu trúc tuần tự (if, for, while,..), phép toán, toán tử,...
- Hàm và thủ tục (function)



Ở phần 1 và 2 hoàn toàn là ngôn ngữ C nên các bạn tham khảo các bài viết về ngôn ngữ C tại Serial về lập trình C. Chỉ riêng phần 3 là Hàm và thủ tục là các hàm dành riêng cho ngôn ngữ lập trình trên Arduino nên các bạn chỉ cần học them phần này sẽ lập trình được.  Lưu ý những hàm giới thiệu bên dưới là những gì cơ bản nhất.
==========================================================================

1. Nhập xuất Digital (Digital I/O)


1.1 pinMode()

Giới thiệu


Cấu hình 1 pin quy định hoạt động như là một đầu vào (INPUT) hoặc đầu ra (OUTPUT). Xem mô tả kỹ thuật số (datasheet) để biết chi tiết về các chức năng của các chân. 

Như trong phiên bản Arduino 1.0.1, nó có thể kích hoạt các điện trở pullup nội bộ với chế độ INPUT_PULLUP. Ngoài ra, chế độ INPUT vô hiệu hóa một cách rõ ràng điện trở pullups nội bộ.

Cú pháp


pinMode(pin, mode)

Thông số

pin: Số của chân digital mà bạn muốn thiết đặt
mode: INPUT, INPUT_PULLUP hoặc OUTPUT

Trả về

không

Ví dụ


int ledPin = 13;                 // đèn LED được kết nối với chân digital 13

void setup()
{
  pinMode(ledPin, OUTPUT);      // thiết đặt chân ledPin là OUTPUT
}

void loop()
{
  digitalWrite(ledPin, HIGH);   // bật đèn led
  delay(1000);                  // dừng trong 1 giây
  digitalWrite(ledPin, LOW);    // tắt đèn led
  delay(1000);                  // dừng trong 1 giây
}



Ghi chú

Các chân Analog cũng có thể được sử dụng dưới dạng Digital I/O. Ví dụ: A0, A1, ...

1.2 digitalWrite()

Giới thiệu

Xuất tín hiệu ra các chân digital, có 2 giá trị là HIGH hoặc là LOW
Nếu một pin được thiết đặt là OUTPUT bởi pinMode(). Và bạn dùng 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) nếu được xuất tín hiệu là HIGH, và 0V nếu được xuất tín hiệu là LOW.
Nếu một pin được thiết đặt là INPUT bởi pinMode(). Lúc này digitalWrite sẽ bật (HIGH) hoặc tắt (LOW) hệ thống điện trở pullup nội bộ. Chúng tôi khuyên bạn nên dùng INPUT_PULLUP nếu muốn bật hệ thống điện trở pullup nội bộ.

Cú pháp

digitalWrite(pin,value)

Thông số

pin: Số của chân digital mà bạn muốn thiết đặt
value: HIGH hoặc LOW

Trả về

không

Ví dụ

int ledPin = 13;                 // đèn LED được kết nối với chân digital 13

void setup()
{
  pinMode(ledPin, OUTPUT);      // thiết đặt chân ledPin là OUTPUT
}

void loop()
{
  digitalWrite(ledPin, HIGH);   // bật đèn led
  delay(1000);                  // dừng trong 1 giây
  digitalWrite(ledPin, LOW);    // tắt đèn led
  delay(1000);                  // dừng trong 1 giây
}

1.3 digitalRead()

Giới thiệu

Đọc tín hiệu điện từ một chân digital (được thiết đặt là INPUT). Trả về 2 giá trị HIGH hoặc LOW.

Cú pháp

digitalRead(pin)

Thông số

pin: giá trị của digital muốn đọc

Trả về

HIGH hoặc LOW

Ví dụ

Ví dụ này sẽ làm cho đèn led tại pin 13 nhận giá trị như giá trị tại pin 2
int ledPin = 13; // chân led 13
int inPin = 2;   // button tại chân 2
int val = 0;     // biến "val" dùng để lưu tín hiệu từ digitalRead

void setup()
{
  pinMode(ledPin, OUTPUT);      // đặt pin digital 13 là output
  pinMode(inPin, INPUT);      // đặt pin digital 2 là input
}

void loop()
{
  val = digitalRead(inPin);   //  đọc tín hiệu từ digital2
  digitalWrite(ledPin, val);  // thay đổi giá trị của đèn LED là giá trị của digital 2
}

Chú ý

Nếu chân input không được kết nối với bất kỳ một thứ gì thì hàm digitalRead() sẽ trả về tín hiệu HIGH hoặc LOW một cách "hên xui"
Các chân Analog cũng có thể dùng được digitalRead với các cổng pin có tên như là: A0, A1,...