Giới thiệu
Ở Bài 1, chúng ta đã điều khiển LED bằng chương trình Arduino. LED tự động bật và tắt theo những lệnh mà chúng ta lập trình.
Trong bài này, chúng ta sẽ đưa thêm một nút nhấn vào mạch.
Arduino sẽ phải:
Nhận tín hiệu từ nút nhấn → xử lý tín hiệu → điều khiển LED.
Đây là một bước rất quan trọng trong quá trình học lập trình Arduino, bởi trong các hệ thống tự động hóa thực tế, Arduino không chỉ tự thực hiện chương trình mà còn phải nhận tín hiệu từ người dùng hoặc cảm biến để đưa ra quyết định.
Mô hình hoạt động
🔘 NÚT NHẤN
│
↓
ARDUINO
│
↓
💡 LED
Khi nhấn nút:
🔘 NHẤN
↓
Arduino nhận tín hiệu
↓
💡 LED SÁNG
Khi thả nút:
🔘 THẢ
↓
Arduino nhận tín hiệu
↓
⚫ LED TẮT
1.🎯 Mục tiêu bài học
Sau khi hoàn thành bài học, người học có thể:
- Hiểu nguyên lý hoạt động của nút nhấn.
- Biết sử dụng chân Digital để đọc tín hiệu đầu vào.
-
Biết sử dụng
digitalRead(). - Hiểu sự khác nhau giữa INPUT và OUTPUT.
-
Biết sử dụng câu lệnh
if. - Điều khiển LED dựa trên trạng thái của nút nhấn.
- Bước đầu hình thành tư duy:
Đọc tín hiệu → Kiểm tra điều kiện → Thực hiện hành động.
Đây là nền tảng để sau này lập trình:
cảm biến → Arduino → relay → quạt → máy bơm → đèn → còi → cửa tự động...
2.🧰 Chuẩn bị
Linh kiện đã có từ Bài 1
- Arduino Uno
- Breadboard
- LED
- Điện trở 220Ω–330Ω
- Dây jumper
- Cáp USB
Linh kiện bổ sung cho Bài 2
💡 Nếu sử dụng
INPUT_PULLUPcủa Arduino, chúng ta có thể không cần điện trở 10kΩ bên ngoài. Tuy nhiên, trong bài này tôi đề nghị cho người học thực hành với điện trở 10kΩ, để hiểu rõ nguyên lý mạch kéo xuống (pull-down).
3. 🔌 Nguyên lý mạch
Ta sử dụng:
+5V
│
│
[NÚT]
│
├────────── D2
│
[10kΩ]
│
GND
Khi không nhấn nút
4. Đấu dây
LED
Giữ nguyên LED từ Bài 1:
Arduino D8
│
220Ω
│
LED chân dài (+)
LED chân ngắn (-)
│
GND
Nút nhấn
Arduino 5V
│
│
Nút nhấn
│
├──────── Arduino D2
│
10kΩ
│
GND
Sơ đồ tổng thể
ARDUINO UNO
┌───────────────┐
│ │
5V ───────┤ │
│ │
│ D2 ◄───────┼──── NÚT NHẤN
│ │ │
│ │ 10kΩ
│ │ │
│ D8 ────────┼──220Ω─LED
│ │ │
GND ──────┤ ├───────┘
│ │
└───────────────┘
5.💻 Code Arduino
Arduino C++
const int BUTTON_PIN = 2;
const int LED_PIN = 8;
void setup()
{
pinMode(BUTTON_PIN, INPUT);
pinMode(LED_PIN, OUTPUT);
}
void loop()
{
int buttonState = digitalRead(BUTTON_PIN);
if (buttonState == HIGH)
{
digitalWrite(LED_PIN, HIGH);
}
else
{
digitalWrite(LED_PIN, LOW);
}
}
const int BUTTON_PIN = 2;
const int LED_PIN = 8;
void setup()
{
pinMode(BUTTON_PIN, INPUT);
pinMode(LED_PIN, OUTPUT);
}
void loop()
{
int buttonState = digitalRead(BUTTON_PIN);
if (buttonState == HIGH)
{
digitalWrite(LED_PIN, HIGH);
}
else
{
digitalWrite(LED_PIN, LOW);
}
}
Đây là chương trình đầu tiên:
const int BUTTON_PIN = 2;
const int LED_PIN = 8;
void setup()
{
pinMode(BUTTON_PIN, INPUT);
pinMode(LED_PIN, OUTPUT);
}
void loop()
{
int buttonState = digitalRead(BUTTON_PIN);
if (buttonState == HIGH)
{
digitalWrite(LED_PIN, HIGH);
}
else
{
digitalWrite(LED_PIN, LOW);
}
}
6.🧠 Giải thích chương trình
Khai báo chân
INPUT nghĩa là:
Arduino sử dụng chân D2 để nhận tín hiệu.
Trong khi:
pinMode(LED_PIN, OUTPUT);
nghĩa là:
Arduino sử dụng D8 để xuất tín hiệu điều khiển LED.
7. 📥 Đọc trạng thái nút nhấn
int buttonState = digitalRead(BUTTON_PIN);
Arduino đọc D2 và lưu kết quả vào biến:
buttonState
Có hai khả năng:
HIGH → đang nhấn nút
LOW → không nhấn nút
8.🤔 Arduino ra quyết định
if (buttonState == HIGH) { digitalWrite(LED_PIN, HIGH); }
Hiểu đơn giản:
Nếu nút được nhấn → bật LED.
Ngược lại:
else { digitalWrite(LED_PIN, LOW); }
Nếu nút không được nhấn → tắt LED.
9. 🧪 Thực hành
Sau khi nạp chương trình:
Không nhấn
🔘 Nút: KHÔNG NHẤN ↓ Arduino đọc LOW ↓ 💡 LED TẮT
Nhấn nút
🔘 Nút: NHẤN ↓ Arduino đọc HIGH ↓ 💡 LED SÁNG10. ⭐ Bài tập nâng cấp 2A
Bây giờ hãy thay đổi yêu cầu:
Nhấn nút → LED sáng trong 1 giây → sau đó tự tắt.
Sơ đồ logic:
Nhấn nút ↓ LED sáng ↓ Chờ 1 giây ↓ LED tắt
11. ⭐⭐ Bài tập nâng cấp 2B
Tiếp tục nâng cấp:
Nhấn nút → LED đổi trạng thái.
Tức là:
Lần 1 nhấn ↓ LED ON Lần 2 nhấn ↓ LED OFF Lần 3 nhấn ↓ LED ON Lần 4 nhấn ↓ LED OFFĐây là bài tập rất quan trọng.
Bởi từ đây người học bắt đầu làm quen với:
TRẠNG THÁI – STATE
Sau này cùng nguyên lý này chúng ta có thể lập trình:
Nhấn nút ↓ Bật máy bơm Nhấn lần nữa ↓ Tắt máy bơmhoặc:
MODE AUTO ↕ MODE MANUAL
12. ⭐⭐⭐ Thử thách Bài 2
Không xem code mẫu, hãy tự viết chương trình:
Nhấn nút 1 lần → LED bật.
Nhấn lần thứ 2 → LED tắt.
Tiếp tục như vậy.Điều kiện quan trọng:
Mỗi lần nhấn chỉ được đổi trạng thái LED một lần.
Đây là lúc chúng ta bắt đầu học một kỹ thuật rất quan trọng trong lập trình Arduino:
phát hiện sự kiện nhấn nút (button press event) thay vì chỉ đọc nút đang HIGH/LOW.
13. 🛒 Bộ linh kiện nâng cấp Bài 2
Người học không cần mua lại bộ Bài 1.
Chỉ cần bổ sung:
🔘 1 nút nhấn 4 chân
🔧 1 điện trở 10kΩKiến thức chúng ta đã có sau 2 bài
BÀI 1 Arduino ↓ Xuất tín hiệu ↓ LED
BÀI 2 Nút nhấn ↓ Nhập tín hiệu ↓ Arduino ↓ Xử lý điều kiện ↓ LED
Đây chính là nền móng của cả chuỗi: INPUT → PROCESS → OUTPUT
Bạn đã có bộ Arduino thực hành Bài 1?
Chỉ cần bổ sung một vài linh kiện nhỏ là có thể tiếp tục bài học mới:
- 🔘 Nút nhấn (Push Button)
- 🔧 Điện trở 10kΩ


0 nhận xét Blogger 0 Facebook