Latest Post

Tăng thứ hạng và truy cập tự nhiên với 10 phương pháp SEO hay nhất Kiếm Tiền Online (mmo): Khái Niệm và Các Hình Thức Phổ Biến

Nếu bạn mới bắt đầu sử dụng Arduino, có lẽ bạn quan tâm đến danh sách các lệnh quan trọng cho những hoạt động quan trọng nhất. Những lệnh này sẽ giúp bạn điều khiển bo mạch Arduino và thực hiện các phép toán logic đơn giản.

Một điểm thuận lợi khi sử dụng Arduino là bạn không cần phải học quá nhiều về lập trình. Bạn chỉ cần đầu tư vào một bộ bo mạch Arduino và cài đặt môi trường phát triển tích hợp (IDE). Hầu hết các ví dụ về lệnh cơ bản đều có sẵn trong thư viện Examples. Nếu bạn muốn thực hiện theo các ví dụ có sẵn, bạn chỉ cần điều chỉnh mã code một chút và tạo ra các bản vẽ (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

Verify Quét code và báo cáo bất kỳ lỗi nào
Upload Biên dịch code và upload nó lên bo mạch Arduino qua USB
New Mở một Arduino sketch trống (chương trình viết bởi Arduino IDE)
Open Mở danh sách các sketch đã lưu trong trình duyệt file
Save Lưu sketch hiện tại
Serial Monitor Mở 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 Python, C++, 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 sau đây đều là những lệnh quan trọng khi làm việc với bo mạch Arduino trên môi trường phát triển tích hợp (IDE). Mặc dù danh sách này không hoàn chỉnh và có giới hạn, nhưng nó mang lại sự hữu ích khi bắt đầu thực hiện các dự án Arduino của bạn. Để có cái nhìn chi tiết hơn, bạn nên tìm hiểu qua các đoạn mã nguồn (sketch) được chia sẻ bởi cộng đồng đam mê Arduino. Điều này giúp bạn hiểu rõ hơn về cách các nhà phát triển khác nhau tiếp cận và giải quyết vấn đề, từ đó tận dụng kiến thức và kỹ năng của họ để nâng cao khả năng sáng tạo trong công việc của bạn.

Trả lời

Email của bạn sẽ không được hiển thị công khai. Các trường bắt buộc được đánh dấu *