Questions? (+84) 247 300 6665 or hr@hri.com.vn

Tổng hợp các câu lệnh hay dùng khi code Arduino

23/11/2020

Nếu là người mới dùng Arduino, bạn có thể quan tâm đến danh sách các lệnh hữu ích cho những hoạt động quan trọng nhất. Bạn cần chúng để điều khiển bo mạch Arduino và xác định các phép toán logic đơn giản.

Điểm hay của Arduino là bạn không thực sự phải học quá nhiều kiến thực lập trình. Chỉ cần đầu tư vào một bộ bo mạch Arduino và cài đặt IDE. Hầu hết các ví dụ lệnh đều có sẵn trong thư viện Examples. Nếu bạn muốn làm theo các ví dụ tham chiếu hiện có, tất cả những gì bạn phải làm là sửa đổi code một chút và tạo các sketch của riêng bạn.

Mục tiêu của bài viết này không phải là để trình bày một danh sách đầy đủ các thủ thuật trên Arduino, mà là để hiểu logic đằng sau các code. Điều quan trọng là phải biết cách áp dụng chúng trong mọi tình huống.

Thanh công cụ Arduino IDE 

VerifyQuét code và báo cáo bất kỳ lỗi nào
UploadBiên dịch code và upload nó lên bo mạch Arduino qua USB
NewMở một Arduino sketch trống (chương trình viết bởi Arduino IDE)
OpenMở danh sách các sketch đã lưu trong trình duyệt file
SaveLưu sketch hiện tại
Serial MonitorMở Serial Monitor trong một cửa sổ mới

Những lệnh Arduino IDE cơ bản

Ngay khi bạn mở Arduino IDE, bạn sẽ được chào đón bởi các lệnh setup() và loop(). Đây là hai ví dụ duy nhất về sketch mà bạn tìm thấy trong hầu hết tất cả các code Arduino.

  • Setup(): Mỗi khi sketch bắt đầu, lệnh setup sẽ giúp bạn khởi tạo các biến và bắt đầu sử dụng các thư viện. Tham khảo ví dụ về đèn LED kỹ thuật số nhấp nháy không có độ trễ trong bài cài đặt Arduino IDE.
void setup() {
 // đặt pin kỹ thuật số làm output:
 pinMode(ledPin, OUTPUT);
 }
  • Loop(): Một vòng lặp theo sau setup và thực sự là trái tim của chương trình, khiến nó phản hồi vô hạn với bất kỳ logic nào. Ví dụ, đoạn code trên là ví dụ về đèn LED nhấp nháy vô hạn, không có độ trễ.
void loop() {
 // đây là nơi bạn đặt code cần chạy mọi lúc.
 // kiểm tra xem đã đến lúc nhấp nháy đèn LED chưa...
 }

Sau khi làm quen với các sketch, bạn cần biết những lệnh điều khiển. Những lệnh quan trọng nhất là:

  • Break: Nếu bạn muốn thoát khỏi một lệnh, bạn cần nhấn break.
if (sens > threshold) {
 // bail out on sensor detect x = 0; break;
 }
  • If or else: Các lệnh logic khởi tạo một hành động mỗi khi một điều kiện được thỏa mãn. Một lần nữa, hãy quay lại ví dụ về đèn LED kỹ thuật số nhấp nháy. Ghi nhớ lệnh loop() trong đó code phải chạy vô hạn.

Các lệnh điều khiển hữu ích khác có thể cung cấp logic nhất định. Những lệnh bạn có thể sử dụng bao gồm:

  • return: Trả về một giá trị nhất định.
  • while: Một vòng lặp khác diễn ra liên tục trong một điều kiện nhất định. Ví dụ:
while (dist <3 cm) do something repetitive 200 times)
  • goto: Đúng như tên gọi của nó, lệnh này cho phép bạn đi đến một dòng nhất định trong code.

Boolean và các toán tử số học

Bên cạnh sketch và các lệnh kiểm soát, bạn phải biết một số Boolean và toán tử số học để chỉ huy các chương trình.

  • Các toán hạng: Bằng (=), phép cộng (+), phép trừ (-), phép nhân (*) và phép chia (/).
  • Các toán hạng nâng cao: Không bằng (!=), Nhỏ hơn hoặc bằng (<=), lớn hơn hoặc bằng (>=), phần dư (%).

Các biến quan trọng

Trong một số trường hợp, bạn cần đưa ra một vài biến để xử lý những phép toán logic khác nhau. Những biến quan trọng là:

  • HIGH|LOW: Điều này mang lại giá trị cuối cùng cao và thấp cho các hằng số.
// Các biến sẽ thay đổi:
 int ledState = LOW;
  • LED_BUILTIN: Đưa ra số lượng chân LED (LED pin). Trong ví dụ trên về đèn LED nhấp nháy trên Uno, số chân LED là 13.

Các biến quan trọng khác cần nhớ bao gồm True/false, sizeof(), void, int và string. Chúng cũng giống như bất kỳ chương trình thông thường nào khác bao gồm PythonC++, v.v…

Các hàm cao cấp

Cuối cùng, bạn cần biết một vài hàm nâng cao để điều khiển bo mạch Arduino. Các hàm nâng cao bao gồm:

Các hàm Arduino tích hợp sẵn 

  • digitalRead(): Đọc giá trị từ một pin kỹ thuật số nhất định. Ngoài ra còn có digitalWrite().
  • pinMode(PIN_NUMBER, INPUT/OUTPUT): Thiết lập pin tại vị trí PIN_NUMBER thành INPUT hoặc OUTPUT.
  • pinMode(PIN_NUMBER, INPUT_PULLUP): Thiết lập pin tại vị trí PIN_NUMBER trở thành đầu vào bằng cách sử dụng điện trở kéo lên (pull-up resistor) tích hợp của bo mạch Arduino.
  • analogRead(PIN_NUMBER): Đọc số chân analog PIN_NUMBER và trả về một số nguyên từ 0 đến 1023.
  • analogWrite(PIN_NUMBER, VALUE): Giả lập analog output VALUE bằng cách sử dụng PWM trên PIN_NUMBER (Lưu ý: Chỉ khả dụng trên các chân 3, 5, 6, 9, 10 và 11).
  • analogReference(DEFAULT): Sử dụng điện áp tham chiếu mặc định (5V hoặc 3.3V tùy thuộc vào điện áp bo mạch).
  • analogReference(INTERNAL): Sử dụng điện áp tham chiếu bên trong (1.1v cho ATmega168/328p, 2.56 cho ATmega 32U4/8).
  • analogReference(EXTERNAL): Sử dụng điện áp được áp dụng cho chân AREF làm điện áp tham chiếu (Lưu ý: chỉ 0-5V).

Các hàm liên quan đến thời gian

  • Delay(): Hãy nhớ lại ví dụ về đèn LED nhấp nháy. Bạn có thể thêm độ trễ vào đó.
  • millis(): Trả về thời gian tính bằng mili giây kể từ khi Arduino sketch bắt đầu chạy dưới dạng một số nguyên dài không dấu.
  • micros(): Trả về thời gian tính bằng micro giây kể từ khi Arduino sketch bắt đầu chạy dưới dạng một số nguyên dài không dấu.
  • delayMicroseconds (số nguyên): Trì hoãn thực thi chương trình trong (số nguyên) micro giây.

Các hàm toán học

  • min(i, j): Trả về giá trị thấp nhất trong hai giá trị i và j
  • max(i, j): Trả về giá trị cao nhất trong hai giá trị i và j
  • abs(i): Trả về giá trị tuyệt đối của i
  • sin(angle): Trả về sin của một góc tính bằng radian
  • cos(angle): Trả về cosin của một góc tính bằng radian
  • tan(angle): Trả về tang của một góc tính bằng radian
  • sqrt(i): Trả về căn bậc hai của i
  • pow(cơ số, số mũ): Tính lũy thừa bậc (số mũ) của (cơ số). Ví dụ: pow (2, 3) == 8
  • constrain(i, minval, maxval): Ràng buộc giá trị i giữa minval (giá trị nhỏ nhất) và maxval (giá trị lớn nhất)
  • map (val, fromL, fromH, toL, toH): Chuyển đổi val từ phạm vi này sang phạm vi khác
  • random(i): Trả về một số nguyên dài ngẫu nhiên nhỏ hơn i
  • random(i, j): Trả về một số nguyên dài ngẫu nhiên giữa i và j
  • randomSeed(k): Sử dụng giá trị k để seed hàm random()

Giao tiếp nối tiếp (serial communication)

  • Serial.begin(speed): Bắt đầu giao tiếp nối tiếp ở tốc độ xác định
  • Serial.end(): Kết nối giao tiếp nối tiếp
  • Serial.print(DATA): Xuất DATA vào cổng nối tiếp. DATA có thể là ký tự, chuỗi, số nguyên và số thực dấu phẩy động (floating point number)
  • Serial.available(): Trả về số ký tự có sẵn để đọc trong bộ đệm nối tiếp
  • Serial.read(): Đọc ký tự đầu tiên trong bộ đệm nối tiếp (trả về -1 nếu không có dữ liệu)
  • Serial.write(DATA): Ghi DATA vào bộ đệm nối tiếp. DATA có thể là một ký tự, số nguyên hoặc array (mảng)
  • Serial.flush(): Xóa bộ đệm nối tiếp sau khi giao tiếp chiều đi hoàn tất

Servo

  • Servo myServo: Tạo biến myServo của loại Servo
  • myServo.attach(PIN_NUMBER): myServo được liên kết với pin tại vị trí PIN_NUMBER
  • myServo.write(angle): Ghi một góc từ 0 đến 180 cho servo gắn với myServo
  • myServo.writeMicroseconds(uS): Ghi một giá trị tính bằng micro giây vào servo được gắn với myServo (thường từ 1000 đến 2000 với 1500 là điểm giữa)
  • myServo.read(): Trả về một số nguyên chứa góc hiện tại của servo trong khoảng từ 0 – 180
  • myServo.attached(): Trả về true nếu servo được gắn vào pin
  • myServo.detach(): Tách myServo bằng một pin đính kèm

Ngoài ra còn có:

  • random(): Hàm này giúp tạo ra các số ngẫu nhiên.
  • Tone() và notone(): Bạn có muốn âm thanh xuất hiện trong pin của mình không? Hàm tone() sẽ xử lý vấn đề đó, trong khi notone() giữ mọi thứ im lặng.

Các lệnh trên là một số lệnh hữu ích nhất trong việc xử lý các bo mạch Arduino trên IDE. Danh sách này rất hạn chế và chưa đầy đủ, nhưng nó có thể giúp bạn bắt đầu các dự án của mình. Để biết chi tiết, bạn cần nghiên cứu các sketch của những người đam mê Arduino khác và tìm hiểu xem bạn có thể học hỏi được gì từ họ.

Share this job
BACK TO BLOG