Arduino Cảm biến chạm

Cảm biến cảm ứng (còn được gọi là nút cảm ứng hoặc công tắc cảm ứng) được sử dụng rộng rãi để điều khiển các thiết bị (ví dụ: đèn cảm ứng). Nó có cùng chức năng với một nút bấm. Nó được sử dụng thay cho nút trên nhiều thiết bị mới vì nó làm cho sản phẩm trông gọn gàng hơn.

Trong bài hướng dẫn này, chúng ta sẽ học cách sử dụng cảm biến chạm với Arduino.

Phần cứng cần chuẩn bị

1×Arduino Uno R3
1×USB 2.0 cable type A/B (for USB-A PC)
1×USB 2.0 cable type C/B (for USB-C PC)
1×cảm biến chạm
1×dây jumper
1×(Khuyến nghị) Screw Terminal Block Shield for Arduino Uno
1×(Khuyến nghị) Breadboard Shield for Arduino Uno
1×(Khuyến nghị) Enclosure for Arduino Uno
1×(Khuyến nghị) Prototyping Base Plate & Breadboard Kit for Arduino UNO

Or you can buy the following kits:

1×DIYables STEM V3 Starter Kit (Arduino included)
1×DIYables Sensor Kit (30 sensors/displays)
1×DIYables Sensor Kit (18 sensors/displays)

Về cảm biến cảm ứng

Sơ đồ chân

Cảm biến cảm ứng có 3 chân:

  • Chân GND: cần được kết nối với GND (0V)
  • Chân VCC: cần được kết nối với VCC (5V hoặc 3.3V)
  • Chân SIGNAL: là một chân đầu ra: LOW khi không chạm, HIGH khi chạm. Chân này cần được kết nối với chân input của Arduino.
bố trí chân cảm biến cảm ứng

Cách hoạt động

  • Khi cảm biến không được chạm, chân tín hiệu của cảm biến ở mức THẤP.
  • Khi cảm biến được chạm, chân tín hiệu của cảm biến ở mức CAO.

Cảm biến chạm Arduino

Chân SIGNAL của cảm biến chạm được kết nối với một chân đầu vào của Arduino.

Bằng cách đọc trạng thái của một chân trên Arduino được cấu hình làm đầu vào, ta có thể nhận biết liệu cảm biến cảm ứng có đang chạm hay không.

Sơ đồ đấu dây

sơ đồ nối dây cảm biến chạm Arduino

This image is created using Fritzing. Click to enlarge image

Cách Lập Trình Cho Cảm Biến Chạm

  • Khởi tạo chân Arduino ở chế độ đầu vào kỹ thuật số bằng cách sử dụng hàm pinMode(). Ví dụ, chân 7
pinMode(7, INPUT_PULLUP);
  • Đọc trạng thái của pin Arduino bằng cách sử dụng hàm digitalRead().
int inputState = digitalRead(7);

※ Lưu ý:

Có hai trường hợp sử dụng phổ biến:

  • Thứ nhất: Nếu trạng thái đầu vào ở mức cao (HIGH), làm một việc. Nếu trạng thái đầu vào ở mức thấp (LOW), làm một việc khác ngược lại.
  • Thứ hai: Nếu trạng thái đầu vào được thay đổi từ LOW sang HIGH (hoặc HIGH sang LOW), làm một việc.

Tùy thuộc vào ứng dụng, chúng ta sẽ chọn một trong hai. Ví dụ, trong trường hợp dùng cảm biến cảm ứng để điều khiển đèn LED:

  • Nếu chúng ta muốn LED sáng khi cảm biến được chạm và LED tối khi cảm biến không chạm, chúng ta nên dùng trường hợp sử dụng thứ nhất.
  • Nếu chúng ta muốn LED chuyển giữa BẬT và TẮT mỗi lần chạm cảm biến, chúng ta nên dùng trường hợp sử dụng thứ hai.
  • Cách phát hiện sự thay đổi trạng thái từ LOW sang HIGH
// constants won't change. They're used here to set pin numbers: const int SENSOR_PIN = 7; // the Arduino's input pin that connects to the sensor's SIGNAL pin // Variables will change: int lastState = LOW; // the previous state from the input pin int currentState; // the current reading from the input pin void setup() { // initialize serial communication at 9600 bits per second: Serial.begin(9600); // initialize the Arduino's pin as aninput pinMode(SENSOR_PIN, INPUT); } void loop() { // read the state of the the input pin: currentState = digitalRead(SENSOR_PIN); if(lastState == LOW && currentState == HIGH) Serial.println("The sensor is touched"); // save the the last state lastState = currentState; }

Cảm biến cảm ứng - Mã Arduino

Chúng tôi sẽ chạy bốn đoạn mã ví dụ:

  • Đọc giá trị từ cảm biến chạm và in ra Serial Monitor.
  • Điều khiển LED theo trạng thái của cảm biến.
  • Phát hiện cảm biến được chạm hoặc được thả ra.
  • LED được bật/tắt khi cảm biến bị chạm (Đây là cách sử dụng phổ biến nhất).

Đọc giá trị từ cảm biến chạm và in ra Serial Monitor

/* * Mã Arduino này được phát triển bởi newbiely.vn * Mã Arduino này được cung cấp để sử dụng công khai, không có ràng buộc. * Để xem hướng dẫn chi tiết và sơ đồ kết nối, vui lòng truy cập: * https://newbiely.vn/tutorials/arduino/arduino-touch-sensor */ // constants won't change. They're used here to set pin numbers: const int SENSOR_PIN = 7; // the Arduino's input pin that connects to the sensor's SIGNAL pin void setup() { // initialize serial communication at 9600 bits per second: Serial.begin(9600); // initialize the Arduino's pin as aninput pinMode(SENSOR_PIN, INPUT); } void loop() { // read the state of the the input pin: int state = digitalRead(SENSOR_PIN); // print state to Serial Monitor Serial.println(state); }

Hướng dẫn từng bước

  • Sao chép mã ở trên và mở bằng Arduino IDE.
  • Nhấp vào nút Tải lên trên Arduino IDE để tải mã lên cho Arduino.
  • Chạm ngón tay vào cảm biến và thả ra.
  • Xem kết quả trên Serial Monitor.
COM6
Send
0 0 0 1 1 1 1 1 1 0 0
Autoscroll Show timestamp
Clear output
9600 baud  
Newline  

Điều khiển LED theo trạng thái của cảm biến

Nếu cảm biến được chạm, bật đèn LED. Nếu cảm biến không được chạm, tắt đèn LED.

/* * Mã Arduino này được phát triển bởi newbiely.vn * Mã Arduino này được cung cấp để sử dụng công khai, không có ràng buộc. * Để xem hướng dẫn chi tiết và sơ đồ kết nối, vui lòng truy cập: * https://newbiely.vn/tutorials/arduino/arduino-touch-sensor */ // constants won't change. They're used here to set pin numbers: const int SENSOR_PIN = 7; // the Arduino's input pin that connects to the sensor's SIGNAL pin void setup() { // initialize serial communication at 9600 bits per second: Serial.begin(9600); // initialize the Arduino's pin as aninput pinMode(SENSOR_PIN, INPUT); // initialize digital pin LED_BUILTIN as an output. pinMode(LED_BUILTIN, OUTPUT); } void loop() { // read the state of the the input pin: int state = digitalRead(SENSOR_PIN); // control LED according to the sensor's state digitalWrite(LED_BUILTIN, state); }

Hướng dẫn từng bước

  • Sao chép mã ở trên và mở bằng Arduino IDE.
  • Nhấp vào nút Tải lên trên Arduino IDE để tải mã lên Arduino.
  • Hãy chạm ngón tay lên cảm biến và tiếp tục chạm.
  • Xem trạng thái LED ⇒ LED phải sáng.
  • Tháo ngón tay khỏi cảm biến.
  • Xem trạng thái LED ⇒ LED phải tắt.

Phát hiện cảm biến bị chạm hoặc được thả ra

// constants won't change. They're used here to set pin numbers: const int SENSOR_PIN = 7; // the Arduino's input pin that connects to the sensor's SIGNAL pin // Variables will change: int lastState = LOW; // the previous state from the input pin int currentState; // the current reading from the input pin void setup() { // initialize serial communication at 9600 bits per second: Serial.begin(9600); // initialize the Arduino's pin as aninput pinMode(SENSOR_PIN, INPUT); } void loop() { // read the state of the the input pin: currentState = digitalRead(SENSOR_PIN); if(lastState == LOW && currentState == HIGH) Serial.println("The sensor is touched"); else if(lastState == HIGH && currentState == LOW) Serial.println("The sensor is is released"); // save the the last state lastState = currentState; }

Hướng dẫn từng bước

  • Sao chép mã ở trên và mở bằng Arduino IDE
  • Nhấp vào nút Tải lên trên Arduino IDE để tải mã lên Arduino
  • Chạm ngón tay lên cảm biến và tiếp tục chạm.
  • Xem kết quả trên Serial Monitor.
COM6
Send
The sensor is touched
Autoscroll Show timestamp
Clear output
9600 baud  
Newline  
  • Thả ngón tay của bạn ra khỏi cảm biến.
  • Xem kết quả trên Serial Monitor.
COM6
Send
The sensor is touched The sensor is is released
Autoscroll Show timestamp
Clear output
9600 baud  
Newline  

Bật/tắt LED khi cảm biến được chạm.

/* * Mã Arduino này được phát triển bởi newbiely.vn * Mã Arduino này được cung cấp để sử dụng công khai, không có ràng buộc. * Để xem hướng dẫn chi tiết và sơ đồ kết nối, vui lòng truy cập: * https://newbiely.vn/tutorials/arduino/arduino-touch-sensor */ // constants won't change. They're used here to set pin numbers: const int SENSOR_PIN = 7; // the Arduino's input pin that connects to the sensor's SIGNAL pin // Variables will change: int lastState = LOW; // the previous state from the input pin int currentState; // the current reading from the input pin int ledState = LOW; // the current LED state void setup() { // initialize serial communication at 9600 bits per second: Serial.begin(9600); // initialize the Arduino's pin as aninput pinMode(SENSOR_PIN, INPUT); // initialize digital pin LED_BUILTIN as an output. pinMode(LED_BUILTIN, OUTPUT); } void loop() { // read the state of the the input pin: currentState = digitalRead(SENSOR_PIN); if(lastState == LOW && currentState == HIGH){ // toggle LED state if(ledState == LOW) ledState = HIGH; else if(ledState == HIGH) ledState = LOW; // control LED digitalWrite(LED_BUILTIN, ledState); } // save the the last state lastState = currentState; }

Hướng dẫn từng bước

  • Sao chép mã phía trên và mở bằng Arduino IDE
  • Nhấn nút Tải lên trên Arduino IDE để tải mã lên Arduino
  • Chạm ngón tay vào cảm biến và thả ra.
  • Xem trạng thái LED ⇒ LED nên sáng.
  • Chạm ngón tay vào cảm biến và thả ra.
  • Xem trạng thái LED ⇒ LED nên tắt.
  • Chạm ngón tay vào cảm biến và thả ra.
  • Xem trạng thái LED ⇒ LED nên sáng.

Video Tutorial

Việc sản xuất video tốn rất nhiều thời gian. Nếu video hướng dẫn hữu ích cho việc học của bạn, hãy đăng ký kênh YouTube để ủng hộ. Nếu nhu cầu đủ cao, chúng tôi sẽ cố gắng làm thêm nhiều video.