GPIO (General Purpose Input/Output) là một trong những chức năng cơ bản và quan trọng nhất trên các vi điều khiển, bao gồm cả Arduino. GPIO cho phép Arduino giao tiếp với các thiết bị ngoại vi, từ cảm biến, nút nhấn đến LED và động cơ. Dưới đây, chúng ta sẽ tìm hiểu về cách hoạt động, ứng dụng, và cách sử dụng GPIO trên Arduino.
GPIO là các chân kỹ thuật số hoặc tương tự trên vi điều khiển, được sử dụng để:
Trên Arduino, các chân GPIO được đánh số như 0, 1, 2, …, tùy thuộc vào phiên bản bo mạch (Arduino Uno, Mega, Nano, v.v.).
Các chân GPIO trên Arduino có thể hoạt động ở hai chế độ chính:
Arduino cung cấp các hàm đơn giản để điều khiển và đọc trạng thái GPIO:
Hàm pinMode()
được sử dụng để cấu hình chân GPIO.
pinMode(pin, mode);
pin
: Chân GPIO (ví dụ: 2, 3, 4,…).mode
: Chế độ hoạt động: INPUT
, OUTPUT
, hoặc INPUT_PULLUP
.Hàm digitalWrite()
được sử dụng để xuất tín hiệu HIGH hoặc LOW đến chân GPIO.
digitalWrite(pin, value);
pin
: Chân GPIO.value
: Trạng thái tín hiệu: HIGH
(1) hoặc LOW
(0).Hàm digitalRead()
được sử dụng để đọc trạng thái tín hiệu từ chân GPIO.
int value = digitalRead(pin);
value
: Trả về giá trị HIGH
hoặc LOW
.
GPIO được sử dụng trong rất nhiều ứng dụng, bao gồm:
Bật tắt LED bằng chân GPIO.
void setup() {
pinMode(13, OUTPUT); // Cấu hình chân 13 làm OUTPUT
}
void loop() {
digitalWrite(13, HIGH); // Bật LED
delay(1000); // Chờ 1 giây
digitalWrite(13, LOW); // Tắt LED
delay(1000); // Chờ 1 giây
}
Đọc trạng thái nút nhấn và điều khiển LED.
const int buttonPin = 2; // Chân kết nối nút nhấn
const int ledPin = 13; // Chân kết nối LED
void setup() {
pinMode(buttonPin, INPUT); // Cấu hình nút nhấn làm INPUT
pinMode(ledPin, OUTPUT); // Cấu hình LED làm OUTPUT
}
void loop() {
int buttonState = digitalRead(buttonPin); // Đọc trạng thái nút nhấn
if (buttonState == HIGH) {
digitalWrite(ledPin, HIGH); // Bật LED nếu nút được nhấn
} else {
digitalWrite(ledPin, LOW); // Tắt LED nếu nút không được nhấn
}
}
GPIO có thể kết hợp với các mạch điều khiển như relay hoặc module driver (như L298N) để điều khiển động cơ.
Giới hạn dòng điện:
Các chân GPIO của Arduino thường chỉ cung cấp dòng điện tối đa khoảng 20-40mA. Khi điều khiển các thiết bị tiêu thụ nhiều điện (như động cơ), cần sử dụng thêm mạch điều khiển hoặc transistor.
Sử dụng điện trở kéo (Pull-up/Pull-down):
INPUT
, cần điện trở kéo để đảm bảo tín hiệu không bị nhiễu. Arduino hỗ trợ chế độ INPUT_PULLUP
để sử dụng điện trở kéo nội.Bảo vệ chân GPIO:
GPIO là một tính năng đơn giản nhưng vô cùng mạnh mẽ trên Arduino, cho phép bạn giao tiếp với nhiều loại thiết bị khác nhau. Từ việc điều khiển LED, nút nhấn đến các ứng dụng phức tạp như điều khiển động cơ hoặc đọc tín hiệu cảm biến, GPIO mở ra thế giới lập trình phần cứng đầy sáng tạo.
Hãy bắt đầu với các dự án đơn giản và khám phá thêm tiềm năng của GPIO trên Arduino!