ĐIỀU KHIỂN PORT XUẤT NHẬP

Chào mừng các bạn đến với Bài 3-4: Điều khiển I/O với nút nhấn trong chuỗi bài thực hành lập trình Arduino.

Ở bài học này, chúng ta sẽ:

  • Kết nối một nút nhấn với bo mạch Arduino
  • Lập trình để điều khiển đèn LED bật sáng khi nhấn nút, và tắt khi thả ra

Đặc biệt, chúng ta sẽ học cách sử dụng điện trở kéo lên nội để đơn giản hóa mạch.

🛠️ PHẦN 1: CHUẨN BỊ LINH KIỆN

Truy cập https://www.tinkercad.com. Trên Tinkercad, hoặc nếu thực hành trực tiếp, bạn cần chuẩn bị:

  • 1 bo mạch Arduino UNO
  • 1 nút nhấn 4 chân (button)
  • 1 đèn LED
  • 1 điện trở 220Ω
  • Dây nối

🔌 PHẦN 2: KẾT NỐI MẠCH

🔹 Bước 1: Kết nối LED

  1. Kéo LED vào giao diện làm việc
  2. Chân dương (chân dài) của LED → nối qua điện trở 220Ω đến chân D13 trên Arduino
  3. Chân âm (chân ngắn) của LED → nối về GND

👉 Đây là mạch LED đơn giản, chân D13 sẽ điều khiển LED.


🔹 Bước 2: Kết nối nút nhấn

Nút nhấn 4 chân gồm 2 cặp chân nối tắt:

  • Chân 1a và 1b nối liền nhau
  • Chân 2a và 2b nối liền nhau
  • Khi nhấn nút: 1 và 2 được nối với nhau

📌 Kết nối đúng như sau:

  1. Chân 1a → nối với chân D2 trên Arduino
  2. Chân 2a → nối với GND

👉 Khi nhấn nút, chân D2 sẽ được nối xuống GND → tín hiệu LOW
👉 Khi thả ra, Arduino sẽ tự kéo D2 lên mức HIGH nhờ lệnh INPUT_PULLUP

💡 Không cần nối nút nhấn với 5V và không cần điện trở ngoài nào khác


💻 PHẦN 3: VIẾT CHƯƠNG TRÌNH

Chúng ta sẽ lập trình để LED sáng khi nhấn núttắt khi thả ra.

✏️ Mã chương trình:

void setup() {
pinMode(2, INPUT_PULLUP); // Kích hoạt trở kéo lên nội cho chân D2
pinMode(13, OUTPUT); // LED ở D13 là đầu ra
}

void loop() {
if (digitalRead(2) == LOW) { // Nếu nhấn nút (D2 bị kéo xuống GND)
digitalWrite(13, HIGH); // Bật LED
} else {
digitalWrite(13, LOW); // Tắt LED
}
}

▶️ PHẦN 4: CHẠY MÔ PHỎNG

  1. Nhấn vào nút “Start Simulation”
  2. Click vào nút nhấn trên mạch mô phỏng
  3. Quan sát:
    • Khi nhấn, LED sáng
    • Khi thả, LED tắt

✔️ Nếu LED không sáng, hãy kiểm tra:

  • Có nối đúng chân D2 và GND chưa?
  • Có dùng đúng cặp chân chéo trên nút chưa?
  • Đã dùng INPUT_PULLUP trong code chưa?

🎯 PHẦN 5: TỔNG KẾT

Qua bài học này, các bạn đã nắm được:

  • Cách sử dụng nút nhấn 4 chân với Arduino
  • Sử dụng điện trở kéo lên nội (INPUT_PULLUP) để đơn giản hóa mạch
  • Cách điều khiển LED dựa trên tín hiệu từ nút nhấn

Bài tập thực hành tương tự và nâng cao

🔶 Bài 1: Nhấn giữ để sáng – thả tắt (Ôn tập)

Mô tả:

  • Kết nối 1 nút nhấn với chân D2
  • Kết nối 1 LED với chân D13
  • Khi giữ nút, LED sáng; khi thả ra, LED tắt

Mục tiêu: Nắm vững cách đọc tín hiệu số từ nút nhấn và điều khiển đầu ra đơn giản.


🔶 Bài 2: Đảo trạng thái LED mỗi lần nhấn

Mô tả:

  • Mỗi lần nhấn nút, LED chuyển trạng thái: nếu đang tắt thì bật, nếu đang bật thì tắt
  • Trạng thái LED giữ nguyên cho đến khi có lần nhấn tiếp theo

Mục tiêu:

  • Làm quen với biến trạng thái
  • Xử lý nhấn đơn (edge detection)
  • Tránh lặp do giữ nút (anti-bounce logic đơn giản)

🔶 Bài 3: Điều khiển 2 LED bằng 1 nút

Mô tả:

  • Kết nối 2 LED vào chân D12 và D13
  • Mỗi lần nhấn nút, 2 LED đổi trạng thái cho nhau: LED1 sáng → LED2 tắt, rồi ngược lại

Mục tiêu:

  • Điều khiển nhiều đầu ra bằng 1 đầu vào
  • Lập trình chuyển đổi trạng thái xen kẽ

🔶 Bài 4: Điều khiển độ sáng LED bằng nút nhấn (PWM)

Mô tả:

  • LED nối vào chân hỗ trợ PWM (ví dụ D9)
  • Mỗi lần nhấn nút, độ sáng LED tăng thêm 51 đơn vị
  • Khi vượt qua 255, độ sáng quay về 0

Mục tiêu:

  • Làm quen với điều khiển analog (PWM)
  • Thực hành thay đổi giá trị tuyến tính theo sự kiện

🔶 Bài 5: Nhấn giữ 3 giây mới bật LED

Mô tả:

  • Khi giữ nút liên tục ít nhất 3 giây, LED bật sáng
  • Nếu nhấn < 3 giây, LED không sáng
  • Khi thả ra, LED luôn tắt

Mục tiêu:

  • Làm quen với đo thời gian bằng millis()
  • Hiểu cách xác định thời gian nhấn giữ