Lesson 06 — Vi điều khiển & GPIO
Mô phỏng tương tác: bảng GPIO bật/tắt LED ảo, nút nhấn với pull-up/pull-down, slider PWM (LED mờ/tỏ), slider ADC đọc cảm biến, khung code cập nhật theo hành động.
1. GPIO OUTPUT — Điều khiển LED
Bấm vào chân GPIO để chuyển HIGH/LOW. LED ảo tương ứng sẽ sáng/tắt. Xem code Arduino cập nhật bên dưới.
Các chân OUTPUT (bấm để bật/tắt):
LED ảo:
void setup() {
pinMode(8, OUTPUT);
pinMode(9, OUTPUT);
pinMode(10, OUTPUT);
pinMode(11, OUTPUT);
}
void loop() {
// Bấm chân ở bên trái
// để xem lệnh tương ứng
}
Bấm chân GPIO bên trái để xem kết quả và code tương ứng.
2. Input số — Nút nhấn & Pull-up/Pull-down
Trạng thái chân GPIO (chân 2):
HIGH
Pull-up: R kéo chân lên VCC → HIGH khi không nhấn
LED ảo:
void setup() {
pinMode(2, INPUT_PULLUP);
pinMode(13, OUTPUT);
}
void loop() {
bool btn = digitalRead(2);
// HIGH = thả, LOW = nhấn
if (btn == LOW) {
digitalWrite(13, HIGH);
} else {
digitalWrite(13, LOW);
}
}
Chọn Pull-up hoặc Pull-down rồi nhấn giữ nút.
Pull-up (active-low)
Pull-down (active-high)
3. PWM — Điều chế độ rộng xung
| analogWrite value: | 128 |
| Duty cycle D: | 50.2% |
| V_avg (5 V supply): | 2.51 V |
| Dòng LED (220 Ω, V_f=2V): | 2.3 mA |
LED ảo (độ sáng theo duty):
Dạng sóng PWM:
void setup() {
pinMode(9, OUTPUT);
}
void loop() {
// analogWrite: 0..255
analogWrite(9, 128);
// Duty = 128/255 = 50.2%
// V_avg = 2.51 V
}
Kéo thanh trượt để thay đổi duty cycle.
4. Input tương tự — ADC & cảm biến
Mô phỏng cảm biến điện trở (quang trở LDR) qua mạch phân áp. Kéo thanh trượt để thay đổi giá trị cảm biến.
| R_LDR ước tính: | 14.2 kΩ |
| V_A0 (phân áp): | 2.50 V |
| analogRead (0–1023): | 511 |
| Ngưỡng (> 500 = tối): | Sáng → LED tắt |
Mức ADC:
0 (0 V)511 (2.5 V)1023 (5 V)
const int LDR = A0;
const int LED = 13;
const int THR = 500;
void setup() {
pinMode(LED, OUTPUT);
Serial.begin(9600);
}
void loop() {
int val = analogRead(LDR);
// val = 511
float v = val*5.0/1023.0;
Serial.println(v);
if (val > THR) {
digitalWrite(LED, HIGH);
} else {
digitalWrite(LED, LOW);
}
delay(200);
}
Kéo thanh trượt để thay đổi ánh sáng.
5. Sơ đồ tổng quan MCU (ATmega328P / Arduino Uno)
Các khối chức năng tích hợp trên 1 chip. Bấm vào khối để xem mô tả.
Bấm vào khối màu sắc để xem mô tả chi tiết.