Hướng dẫn I/O với Arduino
Mục lục
- Giới thiệu về I/O thông qua mạch Arduino với vi điều khiển Atmega328
- Chuẩn bị mạch và thiết lập dự án trên Arduino
- Cấu hình mạch đầu vào
- Thiết lập đăng ký hướng dẫn
- Thiết lập đăng ký cổng
- Thiết lập đăng ký chiều dữ liệu
- Cấu hình mạch đầu ra
- Thiết lập đăng ký hướng dẫn
- Thiết lập đăng ký đầu ra
- Xây dựng mạch và thiết lập chương trình
- Kết nối mạch
- Viết mã lệnh
- Nạp chương trình vào Arduino
Giới thiệu về I/O thông qua mạch Arduino với vi điều khiển Atmega328
Trên mạch Arduino với vi điều khiển Atmega328, việc sử dụng I/O (Input/Output) là khá phổ biến và quan trọng trong việc kết nối và điều khiển các thiết bị ngoại vi. I/O cho phép Arduino nhận dữ liệu từ các nguồn đầu vào và điều khiển các thiết bị đầu ra như đèn LED, buzzer, hoặc cảm biến.
Trong mục này, chúng ta sẽ tìm hiểu cách thiết lập mạch đầu vào và đầu ra trên Arduino bằng vi điều khiển Atmega328. Chúng ta sẽ xây dựng một mạch đầu vào sử dụng một nút nhấn và một mạch đầu ra sử dụng đèn LED. Sau đó, chúng ta sẽ thiết lập chương trình để đọc tín hiệu từ nút nhấn và điều khiển trạng thái đèn LED dựa trên tín hiệu nhận được.
Chuẩn bị mạch và thiết lập dự án trên Arduino
Trước khi tiến hành xây dựng mạch và thiết lập chương trình trên Arduino, chúng ta cần chuẩn bị các linh kiện cần thiết và tạo dự án trong phần mềm Arduino.
Đầu tiên, chuẩn bị các linh kiện sau:
- Một mạch breadboard
- Một con đèn LED màu đỏ
- Một nút nhấn momentary
- Một résistor 220 ohm và một résistor 1k ohm
- Dây nối
Tiếp theo, cắm linh kiện vào mạch breadboard theo sơ đồ sau:
- Cắm nút nhấn vào hàng số 15 và 17 của mạch breadboard
- Cắm chân dương của đèn LED vào hàng số 22 và chân âm vào hàng số 20 của mạch breadboard
- Cắm résistor 220 ohm và résistor 1k ohm vào hàng số 20 của mạch breadboard
- Kết nối dây nối để kết nối các thành phần lại với nhau
Sau khi chuẩn bị mạch, chúng ta sẽ tiến hành thiết lập dự án trên Arduino bằng cách làm theo các bước sau:
- Kết nối Arduino với máy tính thông qua cáp USB
- Mở phần mềm Arduino và tạo dự án mới
- Thiết lập cấu hình dự án cho vi điều khiển Atmega328
- Tiến hành lập trình và nạp chương trình vào Arduino
Cấu hình mạch đầu vào
Để thiết lập mạch đầu vào, chúng ta cần cấu hình đăng ký hướng dẫn, đăng ký cổng và đăng ký chiều dữ liệu.
1. Thiết lập đăng ký hướng dẫn
Trước hết, chúng ta cần thiết lập đăng ký hướng dẫn (Data Direction Register - DDR) cho chân đầu vào. Đây là đăng ký quy định chiều dữ liệu cho mỗi chân I/O. Để đặt chân đầu vào, chúng ta sẽ thiết lập bit tương ứng trong DDR lên giá trị 0.
2. Thiết lập đăng ký cổng
Tiếp theo, chúng ta cần thiết lập đăng ký cổng (Port Register) để điều khiển trạng thái của chân đầu vào. Để đặt chân đầu vào vào chế độ đầu vào không kéo lên (high impedance), chúng ta sẽ thiết lập bit tương ứng trong Port Register có giá trị 0.
3. Thiết lập đăng ký chiều dữ liệu
Cuối cùng, chúng ta cần đọc giá trị đầu vào từ chân đầu vào. Để làm điều này, chúng ta sẽ đọc giá trị của đăng ký chân và kiểm tra nó để xác định trạng thái của chân đầu vào.
Đây là một ví dụ về cách cấu hình đăng ký cho mạch đầu vào trên vi điều khiển Atmega328.
; Thiết lập đăng ký hướng dẫn cho chân đầu vào
ldi r16, (1 << DDB0) ; Thiết lập bit tương ứng trong DDRB lên giá trị 0 để đặt chân đầu vào
; Thiết lập đăng ký cổng cho chân đầu vào
ldi r17, (0 << PB0) ; Thiết lập bit tương ứng trong PORTB có giá trị 0 để chế độ đầu vào không kéo lên (high impedance)
; Đọc giá trị đầu vào từ chân đầu vào
in r18, PINB0 ; Đọc giá trị của chân đầu vào vào thanh ghi r18
Cấu hình mạch đầu ra
Để thiết lập mạch đầu ra, chúng ta cần cấu hình đăng ký hướng dẫn và đăng ký đầu ra.
1. Thiết lập đăng ký hướng dẫn
Trước hết, chúng ta cần thiết lập đăng ký hướng dẫn (Data Direction Register - DDR) cho chân đầu ra. Đây là đăng ký quy định chiều dữ liệu cho mỗi chân I/O. Để đặt chân đầu ra, chúng ta sẽ thiết lập bit tương ứng trong DDR lên giá trị 1.
2. Thiết lập đăng ký đầu ra
Tiếp theo, chúng ta cần thiết lập đăng ký đầu ra (Port Register) để điều khiển trạng thái của chân đầu ra. Để đặt chân đầu ra vào trạng thái bật (high), chúng ta sẽ thiết lập bit tương ứng trong Port Register có giá trị 1.
Đây là một ví dụ về cách cấu hình đăng ký cho mạch đầu ra trên vi điều khiển Atmega328.
; Thiết lập đăng ký hướng dẫn cho chân đầu ra
ldi r19, (1 << DDD7) ; Thiết lập bit tương ứng trong DDRD lên giá trị 1 để đặt chân đầu ra
; Thiết lập đăng ký đầu ra cho chân đầu ra
ldi r20, (1 << PD7) ; Thiết lập bit tương ứng trong PORTD có giá trị 1 để bật chân đầu ra
Xây dựng mạch và thiết lập chương trình
Sau khi đã cấu hình mạch đầu vào và đầu ra, chúng ta sẽ tiến hành xây dựng mạch và thiết lập chương trình trên Arduino.
1. Kết nối mạch
Đầu tiên, chúng ta cần kết nối mạch theo sơ đồ sau:
- Kết nối chân dương của đèn LED vào chân đầu ra đã được cấu hình (PD7)
- Kết nối một chân của nút nhấn vào chân đầu vào đã được cấu hình (PB0)
- Kết nối chân âm của đèn LED và nút nhấn vào chân GND của Arduino
- Kết nối chân VCC của đèn LED và nút nhấn vào nguồn 5V của Arduino
2. Viết mã lệnh
Tiếp theo, chúng ta sẽ viết mã lệnh để đọc tín hiệu từ nút nhấn và điều khiển trạng thái của đèn LED dựa trên tín hiệu nhận được. Ví dụ sau minh họa cách triển khai chương trình trên vi điều khiển Atmega328.
.main:
; Kiểm tra trạng thái của chân đầu vào
sbis PIND, PD2 ; Kiểm tra trạng thái của chân đầu vào đã được cấu hình (PD2)
rjmp .turnOff ; Chuyển tới nhãn .turnOff nếu chân đầu vào là 1 (cao)
.turnOn:
; Bật đèn LED
sbi PORTD, PD5 ; Bật chân đầu ra đã được cấu hình (PB1)
rjmp .main ; Quay lại bản lặp chính
.turnOff:
; Tắt đèn LED
cbi PORTD, PD5 ; Tắt chân đầu ra đã được cấu hình (PB1)
rjmp .main ; Quay lại bản lặp chính
3. Nạp chương trình vào Arduino
Cuối cùng, chúng ta cần nạp chương trình đã viết vào Arduino để chạy mạch. Để làm điều này, chúng ta sẽ sử dụng phần mềm Arduino và kết nối Arduino với máy tính thông qua cáp USB. Sau khi kết nối, chúng ta có thể nạp chương trình bằng cách nhấp vào nút "Upload" trong phần mềm Arduino.
Highlights
- I/O (Input/Output) trên vi điều khiển Atmega328 là quan trọng trong việc kết nối và điều khiển các thiết bị ngoại vi.
- Viết mã lệnh cấu hình và điều khiển mạch đầu vào và đầu ra trên Arduino.
- Xây dựng mạch bằng cách kết nối các linh kiện và thiết lập chương trình để đọc tín hiệu từ nút nhấn và điều khiển đèn LED.
FAQ
Q: Tại sao chúng ta cần cấu hình đăng ký hướng dẫn và đăng ký cổng cho mạch đầu vào?
A: Cấu hình đăng ký hướng dẫn (DDR) quy định chiều dữ liệu của chân I/O, trong khi cấu hình đăng ký cổng (PORT) điều khiển trạng thái của chân I/O. Điều này cho phép chúng ta đặt chân đầu vào vào chế độ đầu vào không kéo lên và đọc giá trị đầu vào từ chân đó.
Q: Làm thế nào để xác định trạng thái của chân đầu vào?
A: Để xác định trạng thái của chân đầu vào, chúng ta có thể đọc giá trị của đăng ký chân (PIN) và kiểm tra bit tương ứng để xem xét trạng thái của chân đó.
Q: Tại sao chúng ta cần xây dựng mạch và thiết lập chương trình trên Arduino?
A: Xây dựng mạch và thiết lập chương trình trên Arduino cho phép chúng ta sử dụng I/O để kết nối và điều khiển các thiết bị ngoại vi. Điều này mở ra nhiều ứng dụng và tính năng hữu ích cho những ai đam mê điện tử và lập trình.
Q: Làm thế nào để nạp chương trình vào Arduino?
A: Để nạp chương trình vào Arduino, chúng ta cần kết nối Arduino với máy tính qua cáp USB và sử dụng phần mềm Arduino để nạp chương trình. Sau khi đã kết nối, chúng ta có thể nhấp vào nút "Upload" trong phần mềm Arduino để nạp chương trình vào Arduino.