ARDUINO
CÁC CHỦ ĐỀ
BÀI MỚI NHẤT
MỚI CẬP NHẬT

Cách điều khiển button trong Arduino

Trong bài viết này chúng ta sẽ cùng nhau tìm hiểu về cách điều khiển button (nút nhấn) trong Arduino.

test php

banquyen png
Bài viết này được đăng tại freetuts.net, không được copy dưới mọi hình thức.

Như các bạn thấy thì xung quanh chúng ta có rất nhiều các thiết bị có sử dụng nút nhấn để điều khiển. Vậy làm thế nào để có thể thực hiện điều đó, trong bài viết này mình sẽ hướng dẫn chi tiết cách lấy trạng thái của button để xử lý.

Các thiết bị cần thiết điều khiển button trong Arduino

Để có thể điều khiển được button trong Arduino ta cần thêm một số linh kiện khác như sau:

  • 1 x Arduino Uno.
  • 1 x Cap USB 2.0 A / B.
  • 1 x Button.
  • 1 x Breadboard.
  • 2 x Dây đực đực.

Trên đầy là các thiết bị linh kiện cần để điều khiển button trong Arduino, các bạn có thể thay thế Arduino Uno bằng một Arduino khác nhé.

Bài viết này được đăng tại [free tuts .net]

Sơ đồ chân của button trong Arduino

Trong phần này mình sẽ đưa ra sơ đồ chân của button và cách thức nó hoạt động, các bạn hãy cùng mình xem sơ đồ chân của nó như thế nào nhé.

arduino 01 png

Thông thường một button sẽ có bốn chân. Tuy nhiên, các chân này được kết nối nội bộ theo cặp. Do đó chúng ta chỉ cần sử dụng hai trong số bốn chân, không được kết nối bên trong.

Có bốn cách (thực tế là hai vì tính đối xứng) để kết nối với button, như hình dưới đây:

arduino 02 png

Vậy làm thế nào để nó có thể hoạt động:

  • Khi nút không được nhấn, chân A không được kết nối với chân B.
  • Khi nút được nhấn, chân A được kết nối với chân B.

arduino 03 png

Trạng thái của button và trạng thái nhấn

Mối quan hệ giữa trạng thái của button và trạng thái nhấn phụ thuộc vào cách chúng ta kết nối với Arduino và cài đặt chân trên Arduino.

Có hai cách để sử dụng một button với Arduino.

Cách 1: Chân của button được kết nối với chân VCC, chân còn lại được kết nối với chân của Arduino bằng một điện trở kéo xuống.

  • Nếu button được nhấn, trạng thái chân của Arduino là HIGH. Nếu ngược lại, trạng thái chân của Arduino là LOW.
  • Chúng ta phải sử dụng một điện trở bên ngoài.

Cách 2: Chân của button được kết nối với chân GND, chân còn lại được kết nối với chân của Arduino bằng một điện trở kéo lên.

  • Nếu button được nhấn, trạng thái chân của Arduino là LOW. Nếu ngược lại, trạng thái chân của Arduino là HIGH.
  • Chúng ta có thể sử dụng điện trở bên trong hoặc bên ngoài. Điện trở bên trong được tích hợp sẵn trong Arduino, chúng ta chỉ cần thiết lâp thông qua code trong Arduino.

Sơ đồ mạch điện điều khiển button trong Arduino

Dưới đây là sơ đồ mạch điện để điều khiển button trong Arduino:

arduino 04 png

Chúng ta chỉ cần sử dụng hai chân của button để nối với Arduino:

  • Một chân của button nối với chân GND của Arduino.
  • Chân còn lại nối với chân điều khiển trên Arduino, ở đây là chân số 7.

Cách điều khiển button trong Arduino

Có hai trường hợp chúng ta thường sử dụng khi điều khiển button:

  1. Nếu trạng thái đầu vào của button là HIGH thì làm gì đó, nếu là LOW thì làm điều ngược lại.
  2. Nếu trạng thái đầu vào của button được thay đổi từ HIGH sang LOW (hoặc từ LOW sang HIGH) thì làm điều gì đó.

Ví dụ:

  • Nếu chúng ta muốn đèn LEG bật khi nhấn button và tắt khi không nhấn button thì sử dụng trường hợp 1.
  • Nếu chúng ta muốn đèn LEG chuyển đổi giữa bật và tắt mỗi lần chúng ta nhấn button thì sử dụng trường hợp 2.

Mình có đoạn code cho hai trường hợp như sau, các bạn có thể tham khảo nhé.

Trường hợp 1: Nhận biết trạng thái HIGH hoặc LOW của button.

const int BUTTON_PIN = 7;//khai báo chân số 7 là chân điều khiển button trên arduino

void setup() {
  Serial.begin(9600);
  //khai báo chân số 7 ở dạng input_pullup
  pinMode(BUTTON_PIN, INPUT_PULLUP);
}

void loop() {
  // đọc trạng thái của button
  int buttonState = digitalRead(BUTTON_PIN);

  // in trạng thái của button ra serial
  Serial.println(buttonState);
}

Trường hợp 2: Nhận biết chuyển đổi trạng thái HIGH hoặc LOW của button.

const int BUTTON_PIN = 7; 

int lastState = HIGH;
int currentState;

void setup() {
  Serial.begin(9600);
  pinMode(BUTTON_PIN, INPUT_PULLUP);
}

void loop() {
  currentState = digitalRead(BUTTON_PIN);
  if(lastState == LOW && currentState == HIGH)
    Serial.println("Trạng thái chuyển từ LOW sang HIGH");
  lastState = currentState;
}

Kết luận

Như vậy là chúng ta đã tìm hiểu về cách điều khiển button trong Arduino. Đây là một dạng bài tập thực hành được sử dụng rất nhiều trong cuộc sống của chúng ta. Các bạn hãy sử dụng nó để khám phá ra nhiều các thú vị hơn nữa nhé. Ở bài tiếp theo mình sẽ hướng dẫn các bạn cách điều khiển công tắc trong Arduino, hãy chú ý theo dõi !!!

Cùng chuyên mục:

Các hàm xử lý ngày tháng (datetime.h) trong C/C++

Các hàm xử lý ngày tháng (datetime.h) trong C/C++

Các hàm xử lý số thực (float.h) trong C/C++

Các hàm xử lý số thực (float.h) trong C/C++

Các hàm xử lý số nguyên lớn (bigint.h) trong C/C++

Các hàm xử lý số nguyên lớn (bigint.h) trong C/C++

Các hàm xử lý thời gian (time.h) trong C

Các hàm xử lý thời gian (time.h) trong C

Các hàm xử lý chuỗi (string.h) trong C/C++

Các hàm xử lý chuỗi (string.h) trong C/C++

Thread Pools và Parallel Algorithms trong C++

Thread Pools và Parallel Algorithms trong C++

Tạo và quản lý các Multithreading trong C++

Tạo và quản lý các Multithreading trong C++

Xử lý ngoại lệ khi làm việc với Memory Allocation trong C++

Xử lý ngoại lệ khi làm việc với Memory Allocation trong C++

Try, Catch, và Throw của Exception Handling trong C++

Try, Catch, và Throw của Exception Handling trong C++

Cách sử dụng Lambda Expressions trong C++

Cách sử dụng Lambda Expressions trong C++

Sử dụng weak_ptr trong C++

Sử dụng weak_ptr trong C++

Sử dụng shared_ptr trong C++

Sử dụng shared_ptr trong C++

Sử dụng unique_ptr trong C++

Sử dụng unique_ptr trong C++

Tổng quan về Smart Pointers trong C++

Tổng quan về Smart Pointers trong C++

Sử dụng Iterators trong STL của C++

Sử dụng Iterators trong STL của C++

[Iterator] Sử dụng Vector trong C++

[Iterator] Sử dụng Vector trong C++

[Iterator] Sử dụng trong List trong C++

[Iterator] Sử dụng trong List trong C++

[STL] Sử dụng Vector trong C++

[STL] Sử dụng Vector trong C++

Tổng quan về Iterators trong C++

Tổng quan về Iterators trong C++

[STL] Các hàm thường dùng của lớp Vector trong C++

[STL] Các hàm thường dùng của lớp Vector trong C++

Top