Bỏ qua tới nội dung
LSLab

GPIO đọc nút bấm và đếm xung như thế nào?

  • Cơ bản
  • Bài viết
  • Từ 14 tuổi
  • 4 phút đọc
Nút nhấn vật lý và LED xanh nối với bo vi điều khiển bằng dây jumper trên breadboard.

GPIO là các chân vào ra đa dụng của vi điều khiển, thường cấu hình làm đầu vào hoặc đầu ra đơn giản. Chân đầu vào có thể đọc nút bấm; trên ESP32, ngoại vi PCNT riêng có thể đếm xung từ cảm biến. Hai việc này giúp thiết bị IoT biết điều đang xảy ra bên ngoài.

Mục lục
Chân GPIO có khả năng phù hợp có thể đọc tín hiệu vào hoặc phát tín hiệu ra.
  • Vi điều khiển
  • Chân đầu ra
  • Tín hiệu xung

Bạn sẽ học được gì

Cần biết trước

Nên biết điện trở kéo lên và điện áp là gì.

GPIO dùng để làm gì?

Người dùng thường chỉ cần cấu hình các chân vào ra làm đầu vào hoặc đầu ra đơn giản. Trên ESP32, IO MUX, RTC IO MUX và ma trận GPIO cho phép định tuyến linh hoạt tín hiệu ngoại vi tới các chân GPIO. Mỗi chân có thể có những giới hạn riêng, vì vậy cần kiểm tra chức năng và hạn chế của chân trước khi dùng.

Một chân đọc tín hiệu vào, chân kia phát tín hiệu ra.
  • Tín hiệu vào
  • Chân cấu hình đầu vào
  • Tín hiệu ra

GPIO đọc nút bấm như thế nào?

Chân vào không nối gì ở trạng thái không xác định, gọi là trôi nổi (floating). Điện trở kéo lên hoặc kéo xuống đảm bảo chân ở mức cao hoặc thấp rõ ràng, chỉ dùng một dòng nhỏ.

Điện trở kéo lên nối với điện áp cao, còn điện trở kéo xuống nối với đất. Trong mạch có nút nối chân với đất, điện trở kéo lên giúp chân đầu vào đọc mức cao khi nút chưa nhấn. Khi nút được nhấn, nó nối chân đầu vào thẳng xuống đất.

Chưa nhấn, chân được kéo lên mức cao; nhấn, chân xuống đất.
  • Điện trở kéo lên
  • Nút bấm
  • Chân đầu vào

Bộ đếm xung ghi xung như thế nào?

Chip ESP32 có nhiều bộ đếm xung trong module. Mỗi bộ đếm xung thực chất là một bộ đếm độc lập có nhiều kênh, mỗi kênh có thể tăng hoặc giảm bộ đếm ở sườn lên hoặc sườn xuống.

Bộ đếm tự đặt lại về không khi vượt qua giới hạn cao hoặc thấp đã cấu hình. Điểm theo dõi cho phép bộ đếm kích hoạt một sự kiện khi giá trị đếm đạt một mức nhất định.

Với các thao tác đã cấu hình, sườn được đếm làm đổi giá trị; tới điểm theo dõi thì phát sinh sự kiện.
  • Chuỗi xung vào
  • Bộ đếm xung
  • Sự kiện khi đạt mức đếm

Bộ đếm xung có các hàm điều khiển như bật bộ lọc xung nhiễu (glitch filter), bắt đầu và dừng bộ đếm, đọc và xóa giá trị đếm.

Ví dụ trong đời sống

Hãy cùng người lớn nghĩ về một chiếc quạt có nút bấm. Chân GPIO đọc xem nút đã nhấn chưa. Một cảm biến vòng quay gửi xung vào bộ đếm; biết số xung ứng với mỗi vòng thì có thể tính số vòng quay.

Hiểu lầm thường gặp

Chân không nối gì thì đọc là thấp. Chân như vậy ở trạng thái không xác định, gọi là trôi nổi.

Chân GPIO tự đếm được xung. Trên ESP32, ngoại vi PCNT có thể đếm các sườn lên hoặc xuống đã cấu hình; chương trình có thể đọc và xóa giá trị đếm.

Câu hỏi thường gặp

GPIO là gì?

GPIO là chân vào ra của vi điều khiển, thường cấu hình làm đầu vào hoặc đầu ra đơn giản.

Vì sao nút bấm cần điện trở kéo lên?

Điện trở kéo lên giữ chân ở mức cao khi nút chưa nhấn, để chân không bị trôi nổi.

Sườn xung là gì?

Đó là lúc tín hiệu chuyển từ thấp lên cao (sườn lên) hoặc từ cao xuống thấp (sườn xuống).

Điểm theo dõi của bộ đếm xung là gì?

Đó là cách để bộ đếm kích hoạt một sự kiện khi giá trị đếm đạt một mức nhất định.

Tóm tắt

  • GPIO thường được cấu hình làm đầu vào hoặc đầu ra đơn giản.
  • Điện trở kéo lên làm chân đọc mức cao khi nút chưa nhấn, và nút nối chân xuống đất khi nhấn.
  • Bộ đếm xung đếm sườn lên hoặc xuống, và có thể kích hoạt sự kiện khi đạt một giá trị.

Thuật ngữ trong bài

Tên tiếng Việt, tên tiếng Anh và nghĩa dùng trong bài. Di chuột, chạm hoặc dùng phím Tab tới từ có gạch chân chấm để xem giải thích ngay khi đọc.

GPIOGeneral-purpose input/output
Chân của vi điều khiển có thể cấu hình làm đầu vào hoặc đầu ra đơn giản.
Chân trôi nổiFloating pin
Chân đầu vào không nối với mức cao hay thấp nào nên trạng thái không xác định.
Điện trở kéo lên và kéo xuốngPull-up and pull-down resistors
Điện trở giữ chân ở mức cao (nối với điện áp cao) hoặc thấp (nối với đất) khi không có gì điều khiển.
Bộ đếm xungPulse counter
Khối phần cứng đếm số sườn lên hoặc sườn xuống của một tín hiệu.
Sườn xungEdge
Thời điểm tín hiệu chuyển từ thấp lên cao (sườn lên) hoặc từ cao xuống thấp (sườn xuống).
Bộ lọc xung nhiễuGlitch filter
Tính năng của bộ đếm xung giúp bỏ qua các xung nhiễu ngắn.

Bài này chưa được đánh dấu là đã xem

Thấy nội dung sai hoặc chưa an toàn?

Báo cho quản trị viên qua email. Thư có sẵn tên bài và đường dẫn.

Báo lỗi bài này
Xem tất cả bài của chủ đề

Nguồn

Các nguồn này viết cho người đọc lớn hơn. Nếu thấy khó, hãy đọc cùng người lớn.