Sử dụng Button với Arduino

Ở bài viết trước, chúng ta đã tìm hiểu về lập trình Arduino cơ bản. Trong bài viết này, mình sẽ hướng dẫn các bạn cách sử dụng button với Arduino. Hãy cùng khám phá!

Button là gì?

Button, còn được gọi là nút nhấn, có cơ chế hoạt động tương tự như công tắc đóng/mở mà chúng ta thường thấy. Button có 4 chân được chia thành 2 cặp. Những chân trong cùng một cặp được nối với nhau, còn những chân khác cặp sẽ ngược lại. Khi bạn nhấn nút, cả 4 chân của button đều được nối với nhau, cho phép dòng điện từ một chân bất kỳ có thể tới 3 chân còn lại. Khi bạn ngừng nhấn, 2 cặp chân sẽ tách ra, dòng điện sẽ không còn liên thông nữa.

button

Ví dụ cơ bản: Làm đèn LED bật/tắt với button

Trong ví dụ này, chúng ta sẽ làm đèn LED bật khi nhấn giữ button và tắt khi thả tay ra. Để thực hiện ví dụ này, chúng ta cần chuẩn bị một số phần cứng sau:

  • 1 mạch Arduino Uno R3 (hoặc dòng Arduino khác)
  • 1 đèn LED
  • 2 điện trở 220 Ohm
  • 1 button 4 chân
  • Dây đấu nối

Sơ đồ lắp đặt

sơ đồ

Trên sơ đồ, chúng ta đấu chân âm của đèn LED với chân GND của mạch Arduino, chân dương LED nối với chân pin 13 thông qua một điện trở.

Với button, chúng ta có 4 chân và quan trọng là cặp của chúng. Chọn 1 chân bất kỳ nối với GND qua điện trở và nối với pin 2 trực tiếp. Sau đó, chọn 1 chân từ cặp chân còn lại nối với nguồn 5V.

Lưu ý: Bạn có thể dùng bất kỳ chân nào từ 0 đến 13 của Arduino để đấu nối, không có gì khác biệt, chỉ khác nhau trong quá trình lập trình.

Sau khi đấu nối xong, sử dụng dây USB để kết nối Arduino với máy tính để tiến hành nạp code.

Lập trình và nạp code

Dưới đây là đoạn code mà chúng ta sẽ sử dụng:

const int buttonPin = 2; // pin nối button để điều khiển
const int ledPin = 13; // pin nối LED

// Tạo một biến nhận diện trạng thái button:
int buttonState = 0;

void setup() {
  // set ledPin là output
  pinMode(ledPin, OUTPUT);
  // set buttonPin là input để đọc giá trị từ button
  pinMode(buttonPin, INPUT);
}

void loop() {
  // đọc giá trị button rồi lưu vào buttonState
  buttonState = digitalRead(buttonPin);

  // nếu button được nhấn, buttonState nhận giá trị HIGH, và ngược lại
  if (buttonState == HIGH) {
    // Bật LED
    digitalWrite(ledPin, HIGH);
  } else {
    // Tắt LED
    digitalWrite(ledPin, LOW);
  }
}

Đoạn code trên có cấu trúc và các hàm sử dụng, nếu bạn chưa hiểu rõ có thể tìm hiểu trong bài viết trước về lập trình Arduino cơ bản.

Ở đây, chúng ta sử dụng hàm digitalRead(<chân pin>) để đọc giá trị digital của chân pin. Khi button thay đổi trạng thái, giá trị digital sẽ gửi về chân pin được kết nối. Để đọc giá trị đó, ta sử dụng hàm digitalRead().

Bước cuối cùng là biên dịch và nạp code. Sau khi biên dịch thành công, bạn sẽ thấy kết quả ở cửa sổ đầu ra trong Arduino IDE.

Hãy nhấn nút “Upload” để nạp code vào mạch Arduino. Sau khi nạp code hoàn tất, đèn LED sẽ tắt và bật lên khi bạn nhấn giữ button. Hãy trải nghiệm thành quả!

Với bài viết này, chúng ta đã hướng dẫn cơ bản về việc sử dụng button với Arduino. Trong bài viết tiếp theo, mình sẽ giới thiệu kiến thức nâng cao hơn về xử lý bất đồng bộ trong Arduino. Hẹn gặp lại!