• Cẩn thận, chú ý tránh đoản mạch. (Luôn kiểm tra kỹ các mối nối trên test board, không để nguồn và mass GND chạm trực tiếp vào nhau).
Giới Thiệu Chi Tiết Bo Mạch Arduino UNO R3
setup()).
- • Digital input: Sử dụng 1 trong 14 chân (từ 0 đến 13)
- • Digital output: Sử dụng 1 trong 14 chân (từ 0 đến 13)
- • Analog input: Dùng sáu chân từ (A0 đến A5)
- • Analog output: Sử dụng các chân có dấu
~(chân PWM ~3, ~5, ~6, ~9, ~10, ~11)
- - Cực 3V và 5V: là cực dương
- - GND: là cực âm
- - Lưu ý: Tất cả (ngoại trừ led và led 7 đoạn là dùng 3.3V) còn lại dùng 5V
Test Board (Breadboard)
• Lưu ý: Test board dài đơn giản ghép giữa 2 test board ngắn.
• Cấu trúc: 4 vùng (từ trái sang phải: 1, 2, 3, 4)
Có các miếng kim loại kéo dài từ trên xuống dưới.
(Điểm đặc biệt: Bên dưới liên thông với nhau → Cấp điện 1 đầu thì tất cả các đầu còn lại đều có điện).
Có 5 hàng lỗ, mỗi hàng có 5 lỗ nhỏ. Các lỗ này có 1 miếng kim loại kéo dài theo chiều ngang (các lỗ trên cùng 1 hàng ngang liên thông với nhau).
Giới Thiệu Về Arduino IDE
void setup() { } và void loop() { }
setup(): Chỉ chạy 1 lần (khi khởi động).
- Các trường hợp hàm setup() được chạy: Khi mới ghim điện, khi nhấn nút Reset, khi nạp code.
loop(): Chạy liên tục cho đến khi tắt nguồn.
- Các trường hợp hàm loop() được chạy: Chạy vô tận (vòng lặp).
- Lưu ý: Viết code sao cho nó chạy lần thứ nhất vẫn đúng mà lần thứ n vẫn đúng.
• Chọn đúng board và port (Ở trên cùng).
• Các nút trên cùng bên phải:
- Nút tích: Để verify (kiểm tra lỗi code)
→Nút mũi tên: Để nạp code vào board
void setup() {
// put your setup code here, to run once:
Serial.begin(9600);
}
void loop() {
// put your main code here, to run repeatedly:
Serial.println("Hello World");
delay(1000);
}
Serial.begin(9600): Mở cổng giao tiếp với máy tính với baud rate 9600Serial.println("Hello World"): In chuỗi "Hello World" ra cổng giao tiếpdelay(1000): Dừng chương trình 1 giây
Đèn LED
• Gồm 2 chân dài và ngắn: Chân dài là cực dương, chân ngắn là cực âm.
- Chân dương phải nối vào 3.3V
- Chân âm nối vào cực âm của nguồn (GND)
• Nối ngược cực thì nó không hoạt động.
Resistor (Điện Trở) & Code Bóng Đèn
- 2 vòng màu đầu tiên ghép lại với nhau ra chữ số.
- Vòng màu cuối cùng là hệ số nhân.
#### Code bóng đèn:
void setup() {
// put your setup code here, to run once:
pinMode(8, OUTPUT);
}
void loop() {
// put your main code here, to run repeatedly:
digitalWrite(8, HIGH);
delay(1000);
digitalWrite(8, LOW);
delay(1000);
}
pinMode(8, OUTPUT): Cấu hình chân số 8 là OUTPUT.digitalWrite(8, HIGH): Bật chân số 8.digitalWrite(8, LOW): Tắt chân số 8.
int red_led = 13;
int yellow_led = 12;
int green_led = 11;
void setup() {
// put your setup code here, to run once:
pinMode(red_led, OUTPUT);
pinMode(yellow_led, OUTPUT);
pinMode(green_led, OUTPUT);
}
void loop() {
// put your main code here, to run repeatedly:
digitalWrite(red_led, HIGH);
delay(1000);
digitalWrite(red_led, LOW);
delay(1000);
digitalWrite(yellow_led, HIGH);
delay(1000);
digitalWrite(yellow_led, LOW);
delay(1000);
digitalWrite(green_led, HIGH);
delay(1000);
digitalWrite(green_led, LOW);
delay(1000);
}
int red_led = 13;: Khai báo biến red_led với giá trị là 13int yellow_led = 12;: Khai báo biến yellow_led với giá trị là 12int green_led = 11;: Khai báo biến green_led với giá trị là 11pinMode(red_led, OUTPUT);: Cấu hình chân số 13 là OUTPUT.digitalWrite(red_led, HIGH);: Bật chân số 13.digitalWrite(red_led, LOW);: Tắt chân số 13.
7-Segment Display (LED 7 Đoạn)
LOW là sáng, HIGH là tắt).
HIGH là sáng, LOW là tắt).
- Các chân A, B, C, D, E, F, G là các chân điều khiển để hiển thị số, nối vào các chân Digital trên Arduino.
- Chỉ cần cắm vào 1 trong 2 chân chung (chân 3 hoặc chân 8).
- 2 chân chung (Common): Chân số 3 và 8.
- 7 chân điều khiển đoạn LED: A, B, C, D, E, F, G.
- 1 chân dấu chấm thập phân: DP (Dot Point).
#### Sơ đồ cắm chân mẫu (Wiring):
| Chân trên LED 7 đoạn | Tên đoạn / Chức năng | Chân kết nối trên Arduino UNO | Ghi chú |
|---|---|---|---|
| Chân 7 | A | Chân Digital 2 | Thanh ngang trên cùng |
| Chân 6 | B | Chân Digital 3 | Thanh dọc trên bên phải |
| Chân 4 | C | Chân Digital 4 | Thanh dọc dưới bên phải |
| Chân 2 | D | Chân Digital 5 | Thanh ngang dưới cùng |
| Chân 1 | E | Chân Digital 6 | Thanh dọc dưới bên trái |
| Chân 9 | F | Chân Digital 7 | Thanh dọc trên bên trái |
| Chân 10 | G | Chân Digital 8 | Thanh ngang ở giữa |
| Chân 3 hoặc 8 | COM (GND) | Chân GND | Chân chung (Common Cathode - nối qua điện trở 220Ω) |
| Chân 5 | DP | Không nối (hoặc nối Digital 9) | Dấu chấm thập phân |
#### Code LED 7 đoạn
##### 1. Code màn hình số 8 (Quy ước LED Common Cathode):
// Khai báo các chân nối với đoạn A, B, C, D, E, F, G
int pinA = 2;
int pinB = 3;
int pinC = 4;
int pinD = 5;
int pinE = 6;
int pinF = 7;
int pinG = 8;
void setup() {
// Cấu hình tất cả các chân điều khiển là OUTPUT
pinMode(pinA, OUTPUT);
pinMode(pinB, OUTPUT);
pinMode(pinC, OUTPUT);
pinMode(pinD, OUTPUT);
pinMode(pinE, OUTPUT);
pinMode(pinF, OUTPUT);
pinMode(pinG, OUTPUT);
}
void loop() {
// Số 8: Bật sáng tất cả 7 đoạn A, B, C, D, E, F, G
digitalWrite(pinA, HIGH);
digitalWrite(pinB, HIGH);
digitalWrite(pinC, HIGH);
digitalWrite(pinD, HIGH);
digitalWrite(pinE, HIGH);
digitalWrite(pinF, HIGH);
digitalWrite(pinG, HIGH);
}
pinMode(pinA ... pinG, OUTPUT): Cấu hình các chân số từ 2 đến 8 trên Arduino thành chân xuất tín hiệu (OUTPUT).digitalWrite(pin, HIGH): Xuất điện áp mức cao (HIGH) ra toàn bộ 7 đoạnA, B, C, D, E, F, Gđể tất cả các thanh LED cùng sáng, tạo thành hình số8.
##### 2. Code màn hình đếm từ 0 đến 9 (Quy ước LED Common Cathode):
// Khai báo mảng các chân nối tương ứng với đoạn A, B, C, D, E, F, G
int segPins[] = {2, 3, 4, 5, 6, 7, 8};
// Bảng trạng thái hiển thị số từ 0 đến 9 cho LED Common Cathode (1: Sáng - HIGH, 0: Tắt - LOW)
// Thứ tự từng đoạn trong mảng: {A, B, C, D, E, F, G}
byte numDigits[10][7] = {
{1, 1, 1, 1, 1, 1, 0}, // Số 0 (Sáng A, B, C, D, E, F; Tắt G)
{0, 1, 1, 0, 0, 0, 0}, // Số 1 (Sáng B, C)
{1, 1, 0, 1, 1, 0, 1}, // Số 2 (Sáng A, B, D, E, G)
{1, 1, 1, 1, 0, 0, 1}, // Số 3 (Sáng A, B, C, D, G)
{0, 1, 1, 0, 0, 1, 1}, // Số 4 (Sáng B, C, F, G)
{1, 0, 1, 1, 0, 1, 1}, // Số 5 (Sáng A, C, D, F, G)
{1, 0, 1, 1, 1, 1, 1}, // Số 6 (Sáng A, C, D, E, F, G)
{1, 1, 1, 0, 0, 0, 0}, // Số 7 (Sáng A, B, C)
{1, 1, 1, 1, 1, 1, 1}, // Số 8 (Sáng tất cả)
{1, 1, 1, 1, 0, 1, 1} // Số 9 (Sáng A, B, C, D, F, G)
};
void setup() {
// Cấu hình 7 chân LED là OUTPUT bằng vòng lặp
for (int i = 0; i < 7; i++) {
pinMode(segPins[i], OUTPUT);
}
}
// Hàm hiển thị một chữ số bất kỳ (từ 0 đến 9)
void displayDigit(int num) {
for (int i = 0; i < 7; i++) {
digitalWrite(segPins[i], numDigits[num][i]);
}
}
void loop() {
// Đếm tuần tự từ số 0 đến số 9
for (int i = 0; i < 10; i++) {
displayDigit(i);
delay(1000); // Dừng lại 1 giây (1000ms) trước khi nhảy sang số tiếp theo
}
}
int segPins[] = {2, 3, 4, 5, 6, 7, 8}: Gom 7 chân điều khiển vào một mảng để dễ quản lý và duyệt bằng vòng lặp.byte numDigits[10][7]: Mảng 2 chiều đóng vai trò là "bảng mã hiển thị". Hàng tương ứng với số từ 0 đến 9, 7 cột tương ứng với trạng thái BẬT (1) hay TẮT (0) của 7 đoạnA → G.displayDigit(int num): Hàm nhận vào một sốnum(0–9), sau đó dùng vòng lặpforđể gán mức tín hiệuHIGH/LOWcho 7 chân theo hàngnumtrong mảngnumDigits.loop(): Sử dụng vòng lặpfor (int i = 0; i < 10; i++)để lần lượt hiển thị từ0đến9, mỗi số dừng 1 giây (delay(1000)). Khi hết vòng lặp, hàmloop()tự động quay lại từ0.
Phần Mềm Giả Lập Môn Học & Hướng Dẫn Nộp Bài
• Tên phần mềm: tinkercad.com
- Tạo dự án:
Home → Create → Circuits → New Circuits - Tạo mã: Nhấn vào
Code → Text - Nhớ đổi loại mạch của 7-segment (Common Anode sang Common Cathode)
-
Để nộp bài:
- • Share to: Tự động chụp lại file .png và lưu về máy (file nộp)
- • File code: Trả về file tương ứng để nộp
- • Link: Bấm Share to và lấy link chia sẻ ở đây
Câu Hỏi Ôn Tập
Tổng hợp 13 câu hỏi ôn tập lý thuyết & thực hành từ ghi chú tuần 2:
- Kể tên các loại tín hiệu điện tử?
- Các chân có dấu
~có thể sử dụng cho loại tín hiệu điện tử nào? Với loại thiết bị input hay output? - Kể tên các hàm bắt buộc phải có của 1 chương trình lập trình nhúng.
- Hàm setup sẽ được gọi chạy trong những tình huống nào?
- Hàm loop trong quy trình nhúng sẽ chạy cho đến khi nào thì dừng?
- Để có thể dùng cửa sổ serial monitor thì phải dùng câu lệnh nào?
- Điều gì xảy ra nếu tốc độ giữa 2 thiết bị này khác nhau?
- Viết các câu lệnh để đèn LED ở chân số 2 nhấp nháy mỗi 1 giây.
- Hàm delay dùng để làm gì? Và cho biết đơn vị của hàm delay.
- Điện trở có tác dụng gì?
- Giả sử điện trở có 3 màu là vàng, tím, cam; hãy cho biết giá trị điện trở của nó.
- Hãy kể tên các loại LED 7 đoạn mà bạn đã từng biết.
- Hãy vẽ sơ đồ mạch và lập trình hoàn chỉnh theo sơ đồ sau: Điều khiển 2 bóng đèn LED chớp tắt luân phiên.